我正在使用带有 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
您需要将 dom0 连接到 xenbr1 网桥。将网桥视为以太网交换机,您需要将 dom0 “插入”其中才能工作。您会注意到 dom0 通过 eth0 连接到 xenbr0。
如果主机(eth1)上有一个附加接口,您可以简单地执行以下操作:
brctl addif xenbr1 eth1
只要 IP 网络配置正确,这就可以起作用。