systemd-nspawn:DHCP Discover 无法通过容器中的网桥

systemd-nspawn:DHCP Discover 无法通过容器中的网桥

我拥有的:

一台 Gentoo 主机和一个 Ubuntu 容器。

我想要的是:

将容器连接到网络和主机。

我在做什么:

我在主机上创建了一个桥并将我的网卡添加到其中。 NIC 的 IP 地址已移至网桥,我可以正常使用互联网。然后我用 启动我的容器systemd-nspawn --network-bridge=my-bridge ...

我得到什么:

在容器端,我看到host0根据 networkctl 配置的接口:

root@scratch:~# networkctl 
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 sit0             sit                off         unmanaged 
  3 host0            ether              degraded    configuring

如果我通过 Wireshard 嗅探三个接口(网桥、NIC 和 vb-container)的流量,我会看到 DHCP DISCOVER 通过网桥和 vb-container,但从未收到 NIC 和 ACK。

我在问什么

我缺少什么?如何获取分配给我的容器的 IP 地址?

答案1

如果您的图像/目录使用 systemd-networkd,这应该是开箱即用的。如果没有,您可能需要调整网络内部结构或尝试默认配置(-n、--network-bridge 等都没有),这只是为您的容器提供主机网络。您可能需要更新 resolv.conf 或 DNS,因为映像可能会覆盖主机。

就我而言,我正在使用 RHEL CentOS、Fedora 等。这些发行版使用开箱即用的 NetworkManager,因此最简单的方法是不在 systemd-nspawn 上指定网络。

另请注意,您可能需要启动到启用网络的目标。 systemd-nspawn 本身只会使用默认目标。

systemd-nspawn -b [opts] systemd multi-user.target

此示例通过使用提供的目标运行 systemd 来启动。如果我使用 single.target 或默认(graphical.target),我可能会得到混合的结果。

相关内容