systemd-networkd 守护程序未启动 DHCP 客户端

systemd-networkd 守护程序未启动 DHCP 客户端

我有启用了 DHCP 的适当网络文件。

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

[Network]
DHCP=ipv4

[DHCP]
UseDomains=true

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

答案1

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

配置由许多配置文件控制,如systemd-networkd手册页。自 Ubuntu 18.04 起,网络配置 ( /{lib,etc,run}/netplan/*.yaml) 现在由网络计划这将为 systemd-networkd 生成配置文件(/{lib,etc,run}/systemd/network/)。

具体来说,DHCP 客户端操作由systemd.网络配置文件 - 可以使用指令(默认为“否”)在[NETWORK]配置文件的部分中启用它并配置部分。请注意,也可以启用 DHCPServer 模式,但这通常与 DHCP 客户端模式互斥。DHCP[DHCP]

答案2

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

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

 systemctl status systemd-networkd

● systemd-networkd.service - 网络服务 已加载:已加载(/lib/systemd/system/systemd-networkd.service;已禁用;供应商预设:已启用) 活动:未活动(已停止) 文档:man:systemd-networkd.service(8)

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

答案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

而且它正在发挥作用。

相关内容