Ubuntu 18.04 是否使用 dhclient?

pza*_*kha 3 dhclient dhcp cloud-init netplan systemd-networkd

我想弄清楚如何在 Ubuntu 服务器 18.04 上配置我的 DHCP 客户端。

我有以下来自 cloud-init 的 netplan 配置:

network:
    version: 2
    ethernets:
        ens160:
            dhcp4: true
            match:
                macaddress: 02:dc:01:00:38:4c
            set-name: ens160
Run Code Online (Sandbox Code Playgroud)

这似乎使用 ip 地址、dns、默认网关和搜索域正确配置了我的网络接口。但是,我想知道如何从 DHCP 获取主机名。我一直在研究 dhclient,它提供了一些我可以使用的方便的钩子,但是似乎没有调用 dhclient 钩子。我注意到 cloud-init 根据日志调用 dhclient,但作为某种沙盒版本,它似乎忽略了钩子。

我还注意到 systemd-networkd 报告了一些有关 DHCP 租约的 DHCP 活动。

有人可以对这个过程有所了解吗?

pza*_*kha 5

我对此进行了更多挖掘,因此为其他人留下了一些信息。

看起来 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 动态设置主机名