我一直在尝试 LXC 虚拟化以便在专用服务器上运行虚拟机,但在正确设置网络方面遇到了问题。
我正在使用 veth 桥接网络,按照此处的说明:http://blog.foaa.de/2010/05/lxc-on-debian-squeeze/(我用来设置 LXC 容器的指南)
当我启动容器时,它运行良好,可以访问互联网并接受到其自身 IP 的传入连接。但是,一旦我启动它,我的主机(专用服务器)上的网络就会完全中断,并且直到服务器重新启动才会恢复。
我能想到的唯一导致这种情况的原因是桥接设置配置不正确,但我并不完全确定正确的桥接设置应该是什么。有什么建议可以告诉我如何重新配置它吗?谢谢。
主机节点和容器本身都运行 Debian Squeeze,并且软件包已升级到最新版本。
主机节点(专用服务器)网络配置(/etc/network/interfaces):
allow-hotplug eth0
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
bridge_stp off
bridge_maxwait 0
address 46.105.102.29
netmask 255.255.255.0
network 46.105.102.0
broadcast 46.105.102.255
gateway 46.105.102.254
LXC容器网络配置(/etc/network/interfaces):
auto eth0
iface eth0 inet static
address 94.23.153.205
netmask 255.255.255.0
broadcast 94.23.153.205
post-up route add 46.105.102.254 dev eth0
post-up route add default gw 46.105.102.254
post-down route del 46.105.102.254 dev eth0
容器网络配置(来自 LXC 配置文件):
lxc.utsname = paradox
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = 02:00:00:ba:47:a0
lxc.network.ipv4 = 94.23.153.205
答案1
我按照同样的说明制作了许多挤压/喘息容器(http://blog.foaa.de/2010/05/lxc-on-debian-squeeze/)
我唯一不同的做法是使用虚拟网桥。(我认为问题在于你有一个网卡桥,而不是虚拟设备桥)
在您的 /etc/network/interfaces 中添加类似这样的内容(使用您自己的数字):
#VLAN 5
auto eth0.5
iface eth0.5 inet manual
vlan_raw_device eth0
auto vzbr5
iface vzbr5 inet static
address 10.11.15.1
netmask 255.255.255.0
network 10.11.15.0
broadcast 10.11.15.255
bridge_maxwait 0
bridge_ports none
post-up /usr/sbin/brctl addif vzbr5 eth0.5
post-up /sbin/ifconfig eth0.5 up
然后
sudo ifup vzbr5
之后使用 vzbr5 作为网络设备。
请参阅完整指令。
答案2
您希望将静态地址放在容器的 /etc/network/interfaces 或配置文件中,但不能同时放在两者中。我个人更喜欢在 /etc/network/interfaces 中设置它。
您也可以删除配置文件,因为配置文件负责处理网关:
post-up route add 46.105.102.254 dev eth0
post-up route add default gw 46.105.102.254
post-down route del 46.105.102.254 dev eth0
为什么选择allow-hotplug eth0
主机?这通常不需要。另外,请仔细检查网关地址和网关上的任何防火墙设置。
答案3
似乎您重新插入了适配器......
您在专用服务器上有与网桥相连的适配器吗?我很好奇,如果您启动第二个容器会发生什么?
我可能更愿意看一些管理虚拟网络的方法,而不是使用 dev 和 eth0 等单词进行路由,特别是如果您也同意使用 NAT 解决方案的话。您参加过 livbvirt 吗?