确定它是静态 IP 还是 DHCP IP

Nee*_*etz 8 networking linux dhcp ubuntu

我正在尝试在所有 linux 发行版中找到通用解决方案,以查找附加到系统的IP地址是静态的还是DHCP 的

在 ubuntu 上,我可以通过执行DHCP grep来确定它是静态的还是DHCP的,但这不是通用解决方案,在其他平台上可能有所不同。/var/log/syslog

目标板之一是Cortina,为此我使用 open wrt作为启动内核。有没有var/log/syslog科尔蒂纳没什么类似之谓也。

小智 6

你有命令在nmcli.
我相信这应该适用于所有 Linux 版本:

nmcli -f ipv4.method con show eno16780032
Run Code Online (Sandbox Code Playgroud)

如果输出为auto,则为 DHCP。
如果输出为manual,则它是静态的。


小智 5

ip a | grep dynamic
Run Code Online (Sandbox Code Playgroud)

如果没有输出 -> 您的 IP 地址是静态分配的。

如果输出是一行dynamic-> 您的 IP 地址是动态/dhcp 分配的。

如果 IP 地址是由 dhcp 分配的,您的线路应如下所示:

inet 192.168.1.5/24 brd 192.168.1.255 scope global dynamic noprefixroute enp0s3
Run Code Online (Sandbox Code Playgroud)

在 Debian 和 Rocky Linux (CentOS) 上测试...


小智 3

问题是,例如,如果您使用 NetworkManager,它将请求 IP、网关和 DNS 服务器。但除此之外,一旦它获得了所需的信息,它就会基本上静态地设置寻址信息。本质上,机器的其余部分不知道或关心地址是静态还是动态,只是它有一个地址。

您可以/var/log/syslog专门检查 DHCPACK 条目。我相信 dhclient 和 NetworkManager 在那里写。