需要配置第二个NIC来桥接LXC

时间:2017-02-27 08:14:54

标签: networking ubuntu-16.04 lxc nic

我在一台带有4个网卡的机器上安装了Ubuntu 16.04服务器。我将接口Tvleth0连接到同一个交换机。接口eth1用于远程SSH连接以管理服务器。我希望eth0使用eth1进行桥接。这个桥我想用于LXC容器。在DHCP环境中的这种设置并没有给我带来任何问题。挑战在于安装此服务器的网络是完全静态的。我收到了具有相同子网掩码和网关的此服务器的IP范围。

设置br0没问题:

eth0

问题来自第二个接口auto eth0 iface eth0 inet static address 195.x.x.2 network 195.x.x.0 netmask 255.255.255.0 gateway 195.x.x.1 broadcast 195.x.x.255 dns-nameservers 150.x.x.105 150.x.x.106 ,因为它与eth1具有相同的网关Ubuntu警告只能设置一个默认网关(这是合乎逻辑的)。因此我设置eth0如下:

eth1

此设置的问题是我可以在IP auto eth1 iface eth1 net static address 195.x.x.3 network 195.x.x.0 netmask 255.255.255.0 broadcast 195.x.x.255 外部ping eth0,但无法通过SSH ping {或195.x.x.2 eth1。我设法让它与许多路由技巧一起工作,但是很多文章写到这一点,如果你有静态桥和容器,这种方式会变得更深。

我的问题是:有没有人对我的问题采取直接的方法?我应该如何配置eth0eth1以正常使用静态IP号码将容器桥接到eth1

1 个答案:

答案 0 :(得分:0)

好的,我按照以下方式解决了这个问题,仍然继续使用问题中描述的网关路由解决方案。也许有相同问题的人也可以使用这种方法,或者如果有人知道更好的解决方案,请随意发表评论。

在主持人身上:

我启用了ARP过滤:

sysctl -w net.ip4.conf.all.arp_filter=1
echo "net.ipv4.conf.all.arp_filter = 1" >> /etc/sysctl.conf

配置/etc/network/interfaces

auto lo
iface lo net loopback

# The primary network interface
auto etc0
iface eth0 inet static
   address   195.x.x.2
   network   195.x.x.0
   netmask   255.255.255.0
   gateway   195.x.x.1
   broadcast 195.x.x.255
   up ip route add 195.x.x.0/24 dev eth0 src 195.x.x.2 table eth0table
   up ip route add default via 195.x.x.1 dev eth0 table eth0table
   up ip rule add from 195.x.x.2 table eth0table
   up ip route add 195.x.x.0/24 dev eth0 src 195.0.0.2
   dns-nameservers 150.x.x.105 150.x.x.106

# The secondary network interface
auto eth1
iface eth1 net manual

# LXC bridge interface
auto br0
iface br0 inet static
   address   195.x.x.3
   network   195.x.x.0
   netmask   255.255.255.0
   bridge_ifaces  eth1
   bridge_ports   eth1
   bridge_stp     off
   bridge_fd      0
   bridge_maxwait 0
   up ip route add 195.x.x.0/24 dev br0 src 195.x.x.3 table br0table
   up ip route add default via 195.x.x.1 dev br0 table br0table
   up ip rule add from 195.x.x.3 table br0table
   up ip route add 195.x.x.0/24 dev br0 src 195.0.0.3

/etc/iproute2/rt_tables添加了以下行:

...
10 et0table
20 br0table

在容器配置文件(/var/lib/lxc/[container name]/config):

...
lxc.network.type = vets
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwadr = [auto create when bringing up container]
lxc.network.ipv4 = 195.x.x.4/24
lxc.network.ipv4.gateway = 195.x.x.1
lxc.network.veth.pair = [readable server name] (when using ifconfig)
lxc.start.auto = 0 (1 if you want the server to autostart)
lxc.start.delay = 0 (fill in seconds you want the container to wait before start)

我通过在容器上启用apache2并从网络外部访问网页来测试它。希望它可以帮助任何碰到我所做过的同样挑战的人。

PS:如果您选择让容器的配置文件分配IP,请不要忘记,在容器本身的接口文件中禁用它。

auto lo
iface lo inet loopback

auto eth0
iface eth0 net manual