使用静态 IP 设置桥接的 LXC 容器

Eth*_*ble 15 networking bridge static-ip lxc

我正在尝试在主机上设置多个 LXC 容器,每个容器都有自己的公共静态 IP。

我的主机正在运行最新的 Ubuntu。它有一个名为 eth0 的网络接口。静态 IP 可从 Internet 上 ping 并命名为 eth0:210、eth0:211... 冒号后的数字是地址的最低有效字节。除了这些接口之外,我还在主机的公共 IP 上设置了 br0。还有 lo、veth2LPP9A 和 lxcbr0 接口。lxcbr0 具有私有 IP 的地址。

主机 /etc/network/interfaces 看起来像:

auto br0
iface br0 inet static
        bridge_ports eth0
        bridge_fd 0
        [...]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经使用了各种在线资源,包括桥接 LXC 容器来托管 eth0,这样它们就可以拥有一个公共 IP来帮助我进行设置。

容器的配置文件有:

lxc.network.type = veth
lxc.network.link = br0
Run Code Online (Sandbox Code Playgroud)

我已经从这个文件中删除了静态 lxc.network.ipv4 配置,因为它会导致问题。当我使用此配置运行 lxc-ls --fancy 时,我会在输出中看到两次相同的公共 IP。此外,它会干扰容器 /etc/network/interfaces 的子网配置。

说到容器的接口文件,它看起来有点像:

auto eth0
iface eth0 inet static
        address [...]
        netmask 255.255.255.255
        #gateway [...]
        dns-nameservers 8.8.8.8

        post-up route add [...] dev eth0
        post-up route add default gw [...]
        post-down route del [...] dev eth0
        post-down route del default gw [...]
Run Code Online (Sandbox Code Playgroud)

我不得不注释掉网关并将路由添加命令添加到这个文件中。否则,容器将需要几分钟才能启动。

主机上的/proc/sys/net/bridge/bridge-nf-*文件都设置为0,/proc/sys/net/ipv4/ip_forward的值为1。

问题是,即使容器的“路由 -n”看起来应该如此,我也无法 ping 出容器。SSH 连接到容器的 IP,将我连接到主机。

编辑:从主机中删除容器的静态 IP 确实有帮助,但现在我遇到了一个新错误。尝试从主机 ping 容器会导致 Redirect HostFrom ,New nexthop。数据包只是从网关到主机,重复。从主机运行 traceroute 显示第一站是在网关。那么所有其他路由都是 * * *。无论容器是否在线,我都会遇到同样的问题。

小智 18

事实上,你可以从设定的地址和网关主机和配置容器不使用关键字触摸界面在所有manual

把这个放在客人里面/etc/network/interfaces

auto eth0
iface eth0 inet manual
Run Code Online (Sandbox Code Playgroud)

也把它留给容器的配置文件来设置接口:

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxc-bridge-nat
lxc.network.ipv4 = 192.168.100.16/24
lxc.network.ipv4.gateway = auto
Run Code Online (Sandbox Code Playgroud)

来宾将表现得好像 BIOS 已经设置了接口并直接使用它。

尤其是探索lxc.network.ipv4.gateway

  • 根据 dnsmasq 文档或手册页,在 /etc/default/lxc 和 /etc/dnsmasq.d-available/lxc 中设置范围(参见 LXC_DHCP_RANGE)和 /etc/dnsmasq.d-available/lxc 似乎都是正确的位置 (2认同)
  • 请参阅[如何让内置 DHCP 根据名称而非 MAC 地址为 LXC 容器分配静态 IP](http://askubuntu.com/questions/446831/how-to-let-built-in-dhcp-assign -a-static-ip-to-lxc-container-based-on-name-not) (2认同)

Mic*_*ton 5

由于是桥接,因此您只需在容器中设置 IP 地址,而不是在主机上设置。主机应该只有自己的IP 地址。