在 LXC 容器上设置公共 IP 地址

在 LXC 容器上设置公共 IP 地址

有人能告诉我如何为每个 LXC 容器设置网络接口,以便每个容器都可以拥有自己的专用 IP 地址吗?

以下是/etc/network/interfaces我的主机节点上的文件内容:

# Generated by SolusVM

 auto lo
  iface lo inet loopback

 auto eth0
  iface eth0 inet static
   address 160.201.10.167
   gateway 160.201.8.1
   netmask 255.255.252.0
   dns-nameservers 8.8.8.8 8.8.4.4

 auto eth0:0
  iface eth0:0 inet static
   address 160.201.8.32
   gateway 160.201.8.1
   netmask 255.255.252.0
   dns-nameservers 8.8.8.8 8.8.4.4

 auto eth0:1
  iface eth0:1 inet static
   address 160.201.8.36
   gateway 160.201.8.1
   netmask 255.255.252.0
   dns-nameservers 8.8.8.8 8.8.4.4

 auto eth0:2
  iface eth0:2 inet static
   address 160.201.8.37
   gateway 160.201.8.1
   netmask 255.255.252.0
   dns-nameservers 8.8.8.8 8.8.4.4

以下是我的 LXC 容器配置文件:

lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.rootfs = /var/lib/lxc/francis/rootfs
lxc.mount = /var/lib/lxc/francis/fstab
lxc.utsname = francis
lxc.arch = amd64
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = eth0
lxc.network.hwaddr = 00:16:3e:de:53:6f
lxc.network.ipv4 = 160.201.8.32
lxc.cgroup.memory.limit_in_bytes = 256M
lxc.cgroup.memory.memsw.limit_in_bytes = 256M

有人能告诉我如何为容器“francis”赋予其自己的公共 IP 地址160.201.8.32吗?

我的主机节点正在运行 Ubuntu 14.04 Server。

答案1

这取决于你真正想做什么。

如果您只是希望让您的容器能够完全自主地使用其 IP,或者只是让它可以通过特定端口上的特定协议访问。

对于第二种情况,您只需要在 eth0 上启用路由并设置 NAT 规则,以便在 LXC 网桥上将特定端口和协议 NAT/unNAT 到/从容器私有 IP。

对于第一种情况,您需要添加另一个网桥,proxy_arp在 eth0 和新网桥接口上启用,并将公共 IP 地址直接分配给容器 veth 接口,而无需在 eth0 上使用任何 IP 别名。然后设置 iptables 规则以避免将不必要的内容暴露给您的网络。

相关内容