我正在使用带有 XEN 4.1 的 Debian wheezy。我有两个网桥 xenbr0 和 xenbr1。
xenbr0 与 real-eth0-nic 相连,因此 domU 可以与外界对话,一切运行良好。
xenbr1 旨在作为 domU 和 dom0 之间通信的内部网络桥梁。
问题出在 xenbr1,但我不知道为什么。 domU 已成功连接到 xenbr1,因为我可以在 domU 之间进行 Ping。因此,网桥在某种程度上可以正常工作,但无法与 dom0 的 xenbr1 进行任何通信。
我的 xenbr1 在 /etc/network/interfaces 中设置:
auto xenbr1
iface xenbr1 inet static
pre-up brctl addbr $IFACE
up ip link set $IFACE up
post-down brctl delbr $IFACE
down ip link set $IFACE down
address 10.0.0.1
netmask 255.255.255.0
hwaddress ether MAC
brctl 显示:
bridge name bridge id STP enabled interfaces
xenbr0 8000.mac no eth0
vif1.0
vif2.0
xenbr1 8000.mac no vif1.1
vif2.1
网络连接:
dom0
xenbr1 - 10.0.0.1
/ \
/ \
domU-1 domU-2
vif1.1 - 10.0.0.2 vif2.1 - 10.0.0.3
domU-1 可以 ping domU-2,反之亦然。dom0
无法访问任何 domU,并且 domU 无法访问 dom0。因此我认为 dom0 中有些东西被阻塞了。
我的第一个想法是,我可能遇到了 iptables 问题,但看起来 xen 创建了必要的规则:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -m physdev --physdev-out vif2.1 --physdev-is-bridged -j ACCEPT
-A FORWARD -m physdev --physdev-in vif2.1 --physdev-is-bridged -j ACCEPT
-A FORWARD -m physdev --physdev-out vif2.0 --physdev-is-bridged -j ACCEPT
-A FORWARD -m physdev --physdev-in vif2.0 --physdev-is-bridged -j ACCEPT
-A FORWARD -m physdev --physdev-out vif1.1 --physdev-is-bridged -j ACCEPT
-A FORWARD -m physdev --physdev-in vif1.1 --physdev-is-bridged -j ACCEPT
-A FORWARD -m physdev --physdev-out vif1.0 --physdev-is-bridged -j ACCEPT
-A FORWARD -m physdev --physdev-in vif1.0 --physdev-is-bridged -j ACCEPT
我希望有人能帮助我或者告诉我从哪里可以找到它。
答案1
我认为这是因为除了 Lonux dom0 上的桥接之外,您实际上还需要一个接口,以便流量真正到达 dom0。桥接只是一个桥接,并不提供进入 dom0 的接口。您可以尝试在 dom0 中设置一个虚拟接口并将其添加到桥接中,或者可能是分接接口。我不确定这是怎么回事,但绝对值得一试。