I'm configuring pfSense 2.4.3p1 as a transparent firewall. It's running in virtual machine with two vtnet
paravirtualized adapters:
- WAN (
vtnet0
) connected to a 'far-side' network containing the gateway, DNS and DHCP servers - LAN (
vtnet1
) connected to a 'near-side' network containing clients
The firewall is to explicitly join the broadcast domains of the two segments such that they're both within 192.168.1.1/24. NAT is disabled. pf
will be enabled but for now it's passing all traffic while I debug other issues. A bridge exists containing members WAN and LAN, assigned to an interface LANBR.
I've tried several configurations, and none of them seems to have a working bridge:
- WAN having a DHCP IP, others without IP: WAN receives IP, can ping gateway at 192.168.1.1, but LAN clients cannot reach firewall or gateway
- LANBR having a DHCP IP: cannot get IP from WAN interface
- LAN having a DHCP IP: cannot get IP from WAN interface
In every case, clients on the LAN cannot ping hosts on the WAN. Running tcpdump while a client tries to ping 192.168.1.1 shows that ARP requests are coming from the client, getting ignored by pfSense, passed through to the WAN, and no response is coming back:
On the client
ping 192.168.1.1
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.163: Destination host unreachable.
Reply from 192.168.1.163: Destination host unreachable.
On the firewall
tcpdump -e -i vtnet0 -n -t arp
0a:... > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.1.1 tell 192.168.1.windows, length 28
0a:... > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.1.1 tell 192.168.1.windows, length 28
0a:... > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.1.1 tell 192.168.1.windows, length 28
0a:... > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.1.1 tell 192.168.1.windows, length 28
This is especially strange, given that pfSense definitely knows about that host:
arp -a
? (192.168.1.1) at 0c:... on vtnet0 expires in 1170 seconds [ethernet]
What's going on?