![在 systemd-networkd 中续订 DHCP 租约](https://linux22.com/image/1014805/%E5%9C%A8%20systemd-networkd%20%E4%B8%AD%E7%BB%AD%E8%AE%A2%20DHCP%20%E7%A7%9F%E7%BA%A6.png)
我已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 地址。
我不确定导致这种情况发生的条件是什么,但是,我发现如果你发送一个-HUP
到systemd-networkd
,然后开始该服务(不重新启动)将/var/run/systemd/netif
按照您预期的那样使用租约。