我正在尝试弄清楚如何在 Ubuntu 服务器 18.04 上配置我的 DHCP 客户端。
我有以下 netplan 配置,来自 cloud-init:
network:
version: 2
ethernets:
ens160:
dhcp4: true
match:
macaddress: 02:dc:01:00:38:4c
set-name: ens160
这似乎正确地配置了我的网络接口的 IP 地址、DNS、默认网关和搜索域。但是,我想知道如何从 DHCP 获取主机名。我一直在研究 dhclient,它提供了一些我可以使用的方便的钩子,但是似乎没有调用 dhclient 钩子。我注意到 cloud-init 按照日志调用 dhclient,但作为某种沙盒版本,它似乎忽略了钩子。
我还注意到 systemd-networkd 报告了一些与 DHCP 租约有关的 DHCP 活动。
有人可以解释一下这个过程吗?
答案1
我对此进行了更深入的研究,因此给其他人留下了一些信息。
Ubuntu 18.04 似乎不再使用 dhclient,它由 以守护进程模式调用ifupdown
。相反,systemd-networkd
它负责处理所有 DHCP 事务。为了创建 DHCP 客户端挂钩,我们现在必须使用(您可以通过查看的文件systemd
来查看如何完成此操作的示例:)。ntp
/lib/systemd/system/ntp-systemd-netif.{path|service}
正如问题中所提到的,cloud-init 确实在沙盒中调用了 dhclient,但仅限于某些特定的云。
在设置主机名方面,systemd-networkd
和之间可能会发生冲突cloud-init
。请参阅Cloud-init nocloud 从 dhcp 动态设置主机名。