在 systemd-networkd 中续订 DHCP 租约

在 systemd-networkd 中续订 DHCP 租约

我已eth0通过以下方式为 DHCPv4 配置了接口netplan

network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            dhcp4: true
            dhcp6: true
            optional: true

如何告知我systemd-networkd续订 DHCP 租约?我知道dhclient它很简单dhclient -r eth0 && dhclient eth0,正如本网站上许多其他答案中所述,但我该如何操作呢systemd-networkd

我在 Ubuntu 18.04 Server。

答案1

开始从 systemd 版本 244 开始,您可以使用以下命令在 systemd-networkd 中更新 DHCP 租约:

networkctl renew DEVICES...

Ubuntu 20.04 附带 systemd 245.4,是第一个可以使用此命令的 Ubuntu 版本。

答案2

我发现了一个 freedesktop.org邮件列表帖子Tom Gundersen 在 2014 年 8 月的一篇文章回答了我的问题,至少在写这篇文章的时候是这样:

> 有没有办法使用 systemd-networkd 强制发布/更新 DHCPv4?

我们目前不允许与网络进行动态交互,但您可以通过重新启动网络或拔出/重新插入电缆(或者如果您正在使用 wifi,则关闭/打开)强制更新版本。

-t

因此,显然如果您执行这两件事之一,systemd-networkd将会更新您的 DHCP 租约。

答案3

我发现如果你重新启动systemd-networkd,它会忽略之前的租约,并重新以一个干净的请求开始。

如果你还使用dhcpd执行 ping 检查的程序,则最终会得到第二个。这可能是与我设置网络配置的方式的交互。我们使用批判的因为否则systemd-network会发送DHCPRELEASE关闭信息,而且最关键的是,也忘记了之前的租约systemd-networkd。因此,同时重启两台服务器很有可能同时丢失其 IP 地址。

我不确定导致这种情况发生的条件是什么,但是,我发现如果你发送一个-HUPsystemd-networkd,然后开始该服务(不重新启动)将/var/run/systemd/netif按照您预期的那样使用租约。

相关内容