有人能告诉我如何为每个 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 规则以避免将不必要的内容暴露给您的网络。