systemd-networkd 守护进程不启动 DHCP 客户端

Sal*_*lil 6 networking systemd

我有启用 DHCP 的相应网络文件。

$ cat /etc/systemd/network/20-dhcp.network 
[Match]
Name=enp3*

[Network]
DHCP=ipv4

[DHCP]
UseDomains=true
Run Code Online (Sandbox Code Playgroud)

我也有适当的 /etc/resolv.conf 。我没有使用 systemd-resolvd 守护进程(它可能与它无关,因为我确实尝试使用它,但无论如何都没有帮助)。任何想法为什么需要手动运行 DHCP 客户端才能使其正常工作?

Pie*_*erz 9

以防万一人们不知道 -systemd-networkd现在包含自己的内置 DHCP 客户端实现,因此除非在其他地方配置,否则不会启动外部 DHCP 客户端。

配置由许多配置文件控制,如systemd-networkd手册页中所述。与Ubuntu18.04网络配置(/{lib,etc,run}/netplan/*.yaml)现在由控制netplan这将产生用于systemd-networkd配置文件(/{lib,etc,run}/systemd/network/)。

具体来说,DHCP 客户端操作是在systemd.network配置文件中控制的——它可以[NETWORK]在配置文件的部分中使用DHCP指令(默认为“no”)启用并配置该[DHCP]部分。


Mar*_*erg 6

从阅读来看man systemd.network,听起来好像.network中的文件/etc/systemd/network是由 控制的systemd-networkd。如果未读取文件,则可能是您没有使用systemd.

\n\n

例如,在 Ubuntu 16.04 桌面上,我可以看到它systemd-networkd未被使用:

\n\n
 systemctl status systemd-networkd\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x97\x8f systemd-networkd.service - 网络服务\n 已加载:已加载(/lib/systemd/system/systemd-networkd.service;已禁用;供应商预设:已启用)\n 活动:非活动(死)\n文档: man:systemd-networkd.service(8)

\n\n

相反,该NetworkManager服务正在运行。因此,在这种情况下,将通过 NetworkManager 配置 DHCP 客户端,或者需要停止和禁用 NetworkManager,并且systemd-networkd需要启动和启用 NetworkManager。

\n

  • 是的,systemd-netword 已启用并正在运行。在迁移到 systemd-networkd 之前我已经卸载了 NetworkManager (2认同)

Sal*_*lil 3

原来我有两个网络文件。我遵循了 arch linux systemd-networkd 文档(https://wiki.archlinux.org/index.php/systemd-networkd#Wireless_adapter),并创建了一个网络文件:

/etc/systemd/network/25-wireless.network
[Match]
Name=wlp2s0

[Network]
DHCP=ipv4
Run Code Online (Sandbox Code Playgroud)

它正在发挥作用。