将第二个接口添加到网桥后,传出伪装地址发生变化

将第二个接口添加到网桥后,传出伪装地址发生变化

事实上我有以下配置:

extrouter(192.168.1.1) <- wifi -> [eth2 (192.168.1.11) 基于 Centos 6/6 的主机 br0 (172.22.5.254)]

br0 包含来自虚拟机 (kvm) 的两个 Tap 接口 (tap0/172.22.5.1 tap1/172.22.5.2),VM 内的 gw 是 172.22.5.254。

如果只有一个虚拟机连接到 br0,则一切正常。我无法从 VM 192.168.1.1 执行 ping 操作,eth2 的 tcpdump 显示 192.168.1.11 作为传出地址,伪装按预期工作。但是,如果我添加第二个虚拟机(虚拟机的顺序并不重要),传出地址将更改为 172.22.5.254。从桥接器中删除其中一台虚拟机后,所有虚拟机都会返回并重新开始工作。

Bridge 有自己的 MAC 地址,因此添加接口不会改变任何内容。

有什么想法可能是错误的吗?

更新1

# brctl show br0
bridge name bridge id       STP enabled interfaces
br0         8000.026adbaf3564   no      tap0
                            tap1

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.22.5.0      0.0.0.0         255.255.255.0   U         0 0          0 br0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth2
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth2

更新2

现在我明白为什么我会得到这样的传出地址:

POSTR: IN= OUT=br0 PHYSIN=tap0 PHYSOUT=tap1 SRC=172.22.5.1 DST=192.168.1.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=59404 SEQ=1 

看起来像是路由问题。但是哪里 ...

相关内容