ifconfig
当只有和route -n
和是检查系统上的 IP 地址/掩码/网关的唯一方法时cat /etc/resolv.conf
——有没有办法确定这些属性是通过 DHCP 还是静态分配的?
我知道nmcli connection show
将指示是否为ipv4.method
。auto
我知道ip addr
将列出dynamic
DHCP 分配的地址。
但除了这两个之外,甚至在这两个软件包存在之前,是否有可能分辨出来?如果可以,如何分辨?
ifconfig
当只有和route -n
和是检查系统上的 IP 地址/掩码/网关的唯一方法时cat /etc/resolv.conf
——有没有办法确定这些属性是通过 DHCP 还是静态分配的?
我知道nmcli connection show
将指示是否为ipv4.method
。auto
我知道ip addr
将列出dynamic
DHCP 分配的地址。
但除了这两个之外,甚至在这两个软件包存在之前,是否有可能分辨出来?如果可以,如何分辨?
有时您可以通过查找文件中的注释来判断 resolv.conf 是由 dhcp 自动生成的,但这并没有以任何方式标准化。
最有效的检查方法是查看是否正在运行类似
dhcpcd
或的程序dhclient
。如果没有这些程序,系统将无法在到期时更新其 IP 地址,即使在使用网络管理器的当前系统上,您仍可能会发现其中一个。当然,即使是较旧的系统也可能使用 rarp 或 bootp 而不是 dhcp,而且这不需要守护进程。(希望没有人再使用它。)
除了存在用于续订 dhcp 租约的服务之外,唯一的其他判断方法是查看某个配置文件是否静态设置了 IP 地址。多年来,这项工作的运作方式也发生了变化,您仍然可以使用命令行手动配置地址,而
ifconfig
这些ip
命令行既没有配置文件,也没有 dhcp 租约续订服务。因此,除了网络管理器之外,如果您无法通过其他方法(例如检查配置文件或检查正在运行的服务及其配置文件)找到配置网络的程序,则无法判断网络是如何配置的。即使这些方法也不可靠,因为服务可能会停止运行,导致网络配置错误,或者服务可能会配置,但随后会手动单独配置地址。
最有可能的是,唯一可靠的方法是检查您之前提到的发出的秒数
dynamic
。这可能比 nmcli 接口更准确,但通常这些不会不一致。我也不确定内核将这些参数保留了多长时间。valid_lft
ip addr