在尝试使用 LXC 容器设置小型服务器时,我遇到了一个问题:
我想分配 4 个不同的 IP 地址:1 个地址用于主机,3 个位于不同网络中的地址用于容器。
使用虚拟接口(eth0:1、eth0:2 等)设置 4 个 IP 地址完全没有问题 - 但 LXC 不适用于这些虚拟接口。
主机的 IP 地址为 2.2.2.2(网络掩码为 255.255.252.0)。3 个容器 IP 地址分别为 33.33.33.33、33.33.33.44 和 33.33.33.55。所有 IP 地址的网络掩码均为:255.255.255.255。
我在为主机和容器设置网络时遇到了困难。其他帖子解释了类似的设置,具有不同但可控制的子网(将 LXC 容器桥接到具有不同 IP 范围的主机网络)或建议使用虚拟接口(同一主机上同一子网内的多个 IP 地址) 而我们在这里无法做到这一点。
这是我的配置:
主机:接口文件
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 2.2.2.2
netmask 255.255.252.0
broadcast 2.2.2.255
gateway 2.2.2.1
bridge_ports eth0
bridge_fd 0
bridge_maxwait 0
auto br0:1
iface br0:1 inet static
address 33.33.33.33
netmask 255.255.255.255
auto br0:2
iface br0:2 inet static
address 33.33.33.44
netmask 255.255.255.255
auto br0:3
iface br0:3 inet static
address 33.33.33.55
netmask 255.255.255.255
这是我知道的唯一将多个 IP 地址绑定到一个接口的方法。网桥需要监听容器的 IP 地址来检索数据包,不是吗?
容器:interfaces 文件
文件很小,因为所有参数都保存在 LXC 配置中。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
LXC:网络配置
这是我的 LXC 配置文件的网络部分:
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.ipv4 = 33.33.33.33/32
lxc.network.ipv4.gateway = 2.2.2.2
但是,连接就是不起作用。虽然为容器分配了地址,但是从容器发送的 IP 数据包却无法到达主机。
ip
以下是和的输出route
:
root@container:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 2.2.2.2 0.0.0.0 UG 0 0 0 eth0
2.2.2.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
root@container:~# ip
1: lo: <LOOPBACK,UP,LOWER_UPmtu 65536 qdisc noqueue state UNKNOWN group
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:
inet 127.0.0.1/8 scope host
valid_lft forever preferred_lft
inet6 ::1/128 scope
valid_lft forever preferred_lft
15: eth0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast state UP
group default qlen 1000
link/ether ae:af:7c:e4:b5:4d brd ff:ff:ff:ff:ff:
inet 33.33.33.33/32 brd 255.255.255.255 scope global
valid_lft forever preferred_lft
inet6 fe80::acaf:7cff:fee4:b54d/64 scope
valid_lft forever preferred_lft forever
主持人给出了相同的详细信息:
root@host:~# route -n
Routing Table
Destination Router Genmask Flags Metric Ref Use Iface
2.2.2.0 0.0.0.0 255.255.252.0 U 0 0 0 br0
0.0.0.0 2.2.2.1 0.0.0.0 UG 0 0 0 br0
root@host:~# ip
1: lo: <LOOPBACK,UP,LOWER_UPmtu 65536 qdisc noqueue state UNKNOWN group
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:
inet 127.0.0.1/8 scope host
valid_lft forever preferred_lft
inet6 ::1/128 scope
valid_lft forever preferred_lft
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast master br0
state UP group default qlen 1000
link/ether 2e:cf:22:12:dd:e2 brd ff:ff:ff:ff:ff:
16: veth93SMLW: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast state
UP group default qlen 1000
link/ether dd:c1:1e:68:90:47 brd ff:ff:ff:ff:ff:
inet6 fe80::fcc1:1eff:fe68:9047/64 scope
valid_lft forever preferred_lft
17: br0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc noqueue state UP group
default
link/ether 4d:cf:22:12:dd:e2 brd ff:ff:ff:ff:ff:
inet 2.2.2.2/22 brd 1.1.1.255 scope global
valid_lft forever preferred_lft
inet 33.33.33.33/32 brd 2.2.2.2 scope global br0:
valid_lft forever preferred_lft
inet 33.33.33.44/32 brd 3.3.3.3 scope global br0:
valid_lft forever preferred_lft
inet 33.33.33.55/32 brd 4.4.4.4 scope global br0:
valid_lft forever preferred_lft
inet6 fe80::829:caff:fece:bbd7/64 scope
valid_lft forever preferred_lft forever
你能提示一下我把哪一部分配置搞乱了吗?
感谢您的帮助!