使用 dhclient 时,当前租约信息(包括到期时间)位于 中/var/lib/dhclient/dhclient.leases
,并且包含类似以下内容
lease {
interface "enp3s0";
fixed-address [redacted];
option subnet-mask 255.255.254.0;
option dhcp-lease-time 3523;
option routers [redacted];
option dhcp-message-type 5;
option dhcp-server-identifier 96.113.84.141;
option domain-name-servers 127.0.0.1,75.75.75.75,75.75.76.76;
option domain-search "[redacted]";
option dhcp-renewal-time 2016;
option broadcast-address 255.255.255.255;
option dhcp-rebinding-time 3073;
option domain-name "hsd1.or.comcast.net.";
renew 3 2022/06/22 23:59:57;
rebind 4 2022/06/23 00:23:15;
expire 4 2022/06/23 00:30:45;
}
但是,我的系统使用 NetworkManager,根据我的研究,它使用自己的内部 DHCP 客户端。往里看/var/lib/NetworkManager
我看到
$ sudo ls /var/lib/NetworkManager/
internal-79cbd87e-9d65-4aa4-8768-88b460fd372c-enp3s0.lease NetworkManager-intern.conf seen-bssids
internal-79cbd87e-9d65-4aa4-8768-88b460fd372c-ens1.lease NetworkManager.state timestamps
internal-bdaf2eb0-de2e-4573-a415-214629c7b757-enp3s0.lease secret_key
这看起来很有希望。但是,租用文件仅包含 IP 地址。
$ sudo cat /var/lib/NetworkManager/internal-79cbd87e-9d65-4aa4-8768-88b460fd372c-enp3s0.lease
# This is private data. Do not parse.
ADDRESS=[redacted]
简单的问题:NetworkManager 在哪里保存租约数据,以便知道何时需要续订租约?
答案1
见过这里,较新版本的 NetworkManager 将在 中公开此信息/run/NetworkManager/devices/$IFINDEX
。如果您有旧版本(或者只是更喜欢运行程序而不是解析文件),您可以使用以下命令询问 NetworkManager 以获取此信息
$ nmcli -f DHCP4 device show $IFNAME
其中$IFINDEX
是 NetworkManager 分配给您的接口的数字索引,$IFNAME
是其名称。
(我怀疑你已经知道这一点,因为网络管理器列表上的问题与此处的措辞相同,但我怀疑我们将是最后两个提出这个确切问题的人)