这似乎是我有一个通用的问题,但无法find任何解决scheme – 我发现迄今在互联网上的每个解决scheme都不适合我。 让我先试着解释一下我正在尝试做什么 – 我有一个有三个接口的linux盒子 – 一个是上行链路连接提供者,另外两个连接应该是单个逻辑networking的两个物理部分。 所以我有以下几点:
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1488 inet 10.0.0.1 netmask 255.0.0.0 broadcast 10.255.255.255 ether 00:24:9b:04:3b:a7 txqueuelen 0 (Ethernet) RX packets 102156 bytes 8545914 (8.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 44194 bytes 7959306 (7.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth1: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1488 ether 00:24:9b:04:3f:ae txqueuelen 1000 (Ethernet) RX packets 56553 bytes 4992101 (4.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 15920 bytes 4418268 (4.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth2: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1488 ether 00:24:9b:04:3b:a7 txqueuelen 1000 (Ethernet) RX packets 56298 bytes 7582661 (7.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 64175 bytes 8148316 (7.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
br0是桥接eth1和eth2,也应该有一个静态地址用作网关。 现在这里是问题 – 如果我在网关上,我尝试ping一个连接到eth2的段中的一个盒子 – 一切正常 – arpparsing和icmpstream动,但如果我想ping eth1段中的东西 – 我看到ARP请求在eth2上,显然没有任何反应。
所以一般来说,我的问题是,网桥只使用一个MAC地址 – eth2所具有的地址。 任何指向我可能已经错过或build议的文档的指针,欢迎!
谢谢!
其他信息请求:
# ip r sh default dev ppp0 scope link 10.0.0.0/8 dev br0 proto kernel scope link src 10.0.0.1 192.168.101.115 dev ppp0 proto kernel scope link src 192.168.6.59 # ip link sh 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 1000 link/ether da:f3:53:e3:69:84 brd ff:ff:ff:ff:ff:ff 3: tunl0: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT link/ipip 0.0.0.0 brd 0.0.0.0 4: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1488 qdisc pfifo_fast master br0 state UP mode DEFAULT qlen 1000 link/ether 00:24:9b:04:3f:ae brd ff:ff:ff:ff:ff:ff 5: eth2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1488 qdisc pfifo_fast master br0 state UP mode DEFAULT qlen 1000 link/ether 00:24:9b:04:3b:a7 brd ff:ff:ff:ff:ff:ff 6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1488 qdisc noqueue state UP mode DEFAULT link/ether 00:24:9b:04:3b:a7 brd ff:ff:ff:ff:ff:ff 12: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 3 link/ppp # brctl show bridge name bridge id STP enabled interfaces br0 8000.00249b043ba7 no eth1 eth2
好吧,根据ifconfig / brctl addif的顺序进行一个简短的更新 – 我可以通过eth1或eth2发送数据包。
我不知道USB NIC,但是WLAN卡通常会使用不属于它们的源MAC丢弃任何传出帧。
您广播的ARP请求可能会使用源MAC a7离开br0。 eth2也恰好具有MAC a7所以它转发该帧,但是eth1具有MAC ae因此丢弃该帧。
你可以通过手动修改网桥的MAC ip link set dev br0 address <MAC> ( ip link set dev br0 address <MAC> )来确认,首先到ae MAC,看你的“工作”接口是否从eth2切换到eth1,然后切换到一些新的随机MAC看是否没有接口转发stream量。