Ale*_*exD 5 networking bridge lxc
我在 Debian 上运行 LXC 容器(lxc 0.7.2-1),桥接网络由书中配置的公共 IP 和我遇到的问题是它将假 MAC 地址从 LXC 容器暴露到外部网络,在那里它被交换机端口阻止安全性,从而防止 LXC 容器与世界通信。我在具有相同网络配置的 Ubuntu 12.04.2 LTS(lxc 0.7.5-3ubuntu67)上运行另一个 LXC 容器,但我没有任何问题,因为它不会将假 MAC 暴露给外部网络,并且所有通信都与主机的 MAC 进行。
目前我正试图找到主机之间网络配置的差异,但没有取得太大的成功。它可能是 lxc 本身的版本相关行为吗?
Debian /etc/network/interfaces
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
bridge_stp off
bridge_maxwait 0
address y.y.y.9
netmask 255.255.255.192
broadcast y.y.y.63
gateway y.y.y.1
pre-up iptables-restore < /etc/iptables.up.rules
Run Code Online (Sandbox Code Playgroud)
Debian LXC 网络配置
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = fe:95:57:4b:b4:9b
lxc.network.ipv4 = y.y.y.12/26
Run Code Online (Sandbox Code Playgroud)
Ubuntu /etc/network/interfaces
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
bridge_stp off
bridge_maxwait 0
address z.z.z.146
netmask 255.255.255.0
broadcast z.z.z.255
gateway z.z.z.1
pre-up iptables-restore < /etc/iptables.rules
up route add x.x.x.1 br0
Run Code Online (Sandbox Code Playgroud)
Ubuntu LXC 网络配置
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.ipv4 = x.x.x.1/32
lxc.network.hwaddr = 00:16:3e:87:b5:b9
Run Code Online (Sandbox Code Playgroud)
不同之处在于,Ubuntu 上的 LXC 容器使用来自不同子网的 IP 地址,并将其主机的 IP 作为默认网关,而 Debian 上的 LXC 容器使用来自与主机相同子网的 IP,并且其默认网关与主机的默认网关相同。
当 LXC 容器具有来自与其主机不同的子网的 IP 并使用其主机作为默认网关时,来自 LXC 容器的数据包将被路由,并且当它们离开主机的网络接口时,它们具有主机的 MAC。当 LXC 容器与主机位于同一子网并使用同一网关时,数据包将被桥接并保留 LXC 的假 MAC。我的解决方案是强制通过主机进行路由,即使它们位于同一子网上。在这种情况下,我的 LXC 容器具有以下/etc/network/interfaces:
auto eth0
iface eth0 inet static
address y.y.y.12
netmask 255.255.255.255
post-up route add y.y.y.9 dev eth0
post-up route add default gw y.y.y.9
Run Code Online (Sandbox Code Playgroud)
并且 LXC 主机在 sysctl.conf 中有以下内容
net.ipv4.ip_forward=1
net.ipv4.conf.bond0.proxy_arp = 1
Run Code Online (Sandbox Code Playgroud)
并在/etc/network/interfaces中:
auto bond0
iface bond0 inet static
address y.y.y.9
netmask 255.255.255.192
broadcast y.y.y.63
gateway y.y.y.1
auto lxcbr0
iface lxcbr0 inet static
bridge_ports none
bridge_fd 0
bridge_stp off
bridge_maxwait 0
address 192.168.120.1
netmask 255.255.255.0
up echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
up /sbin/ip route add to y.y.y.12 dev lxcbr0
Run Code Online (Sandbox Code Playgroud)
我已经从上面的配置中删除了不相关的选项。
归档时间: |
|
查看次数: |
5011 次 |
最近记录: |