Linux

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

  • March 9, 2015

誰能告訴我如何為每個 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 伺服器。

這取決於你真正想要做什麼。

如果你只是想讓你的容器通過它的 IP 完全自治,或者只是讓它可以被特定埠上的特定協議訪問。

對於第二種情況,您只需要在 eth0 上啟用路由並設置 NAT 規則,以 NAT/unNAT 特定埠和協議來往/來自 LXC 網橋上的容器私有 IP。

對於第一種情況,您需要添加另一個網橋,proxy_arp在 eth0 和新網橋介面上啟用,並直接將公共 IP 地址分配給容器 veth 介面,而不在 eth0 上使用任何 IP 別名。然後設置 iptables 規則以避免將不必要的內容暴露給您的網路。

引用自:https://serverfault.com/questions/673833