# gif + bridge strangeness



## etlerant (Feb 20, 2009)

Hello,

I'm trying to set up a bridge between two LANs using two freebsd7.0 boxes w/ipv4 gif.

logical setup:  lan1 <-> bridge1 <-> ISP <-> bridge2 <-> lan2
interface setup: rl0 <-> bridge0 <-> gif0 <-> gif0 <-> bridge0 <-> em1

I've found some weird behaviour.


ping from bridge1 to bridge2 doesn't work
ping from bridge1 to lan2 doesn't work
ping from lan2 to bridge1 doesn't work
dhcp from bridge1 to lan2 *works*
ping from lan1 to lan2 *works*
...

The firewall (pf) reports no rejected packets (all rejections logged;  relevant interfaces have full access).


```
cloned_interfaces="gif0 bridge0"
ifconfig_gif0="tunnel x.x.x.142 x.x.x.162 up"
ifconfig_bridge0="addm gif0 addm em1 up 192.168.1.2 netmask 255.255.255.0"
```


```
cloned_interfaces="gif0 bridge0"
ifconfig_gif0="tunnel x.x.x.162 x.x.x.142 up"
ifconfig_bridge0="addm rl0 addm gif0 up 192.168.1.1 netmask 255.255.255.0"
```


```
# ifconfig gif0 
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
	tunnel inet x.x.x.142 --> x.x.x.162
# ifconfig bridge0
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	ether be:ef:ea:58:df:7b
	inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
	id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
	maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
	root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
	member: em1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	member: gif0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
# ifconfig em1
em1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=98<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
	ether 00:1b:21:18:69:a0
	media: Ethernet autoselect (1000baseTX <full-duplex>)
	status: active
```


```
# sysctl net.link.bridge
net.link.bridge.ipfw: 0
net.link.bridge.log_stp: 0
net.link.bridge.pfil_local_phys: 0
net.link.bridge.pfil_member: 1
net.link.bridge.pfil_bridge: 1
net.link.bridge.ipfw_arp: 0
net.link.bridge.pfil_onlyip: 1
```

Have I done something wrong?  Thoughts and ideas?


----------



## etlerant (Feb 20, 2009)

Bridge2:


```
# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
# ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.058 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.029 ms
^C
--- 192.168.1.2 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.027/0.038/0.058/0.014 ms
# route get 192.168.1.2
   route to: 192.168.1.2
destination: 192.168.1.2
  interface: lo0
      flags: <UP,HOST,DONE,LLINFO,WASCLONED,LOCAL>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0     16384         0 
# route get 192.168.1.1
   route to: 192.168.1.1
destination: 192.168.1.0
       mask: 255.255.255.0
  interface: bridge0
      flags: <UP,DONE,CLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500     -1839
```

Bridge1:

```
# tcpdump -ni bridge0 arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bridge0, link-type EN10MB (Ethernet), capture size 96 bytes
20:03:03.234025 arp who-has 192.168.1.1 tell 192.168.1.2
20:03:04.235398 arp who-has 192.168.1.1 tell 192.168.1.2
20:03:05.235971 arp who-has 192.168.1.1 tell 192.168.1.2
```

As you see the ARP reaches the other host without any problems, but it doesn't respond.


----------

