如何在Linux命令行上查找DHCP服务器IP地址

我最近收到了一封来自读者的电子邮件,询问“如何找到我的DHCP服务器的IP地址”?这使我研究了从Linux命令行中找到DHCP服务器IP地址的快速解决方法。
什么是DHCP服务器?
DHCP服务器是网络上的系统,用于管理网络上客户端系统的动态配置。DHCP(动态主机配置协议)是几乎所有IP网络上使用的标准网络协议。它允许在连接到网络的系统上动态配置网络参数。在使用DHCP之前,管理员必须单独配置每个系统。有关DHCP的更多信息,请参见下面的“资源和链接”部分。
如何找到您的DHCP服务器IP地址
没有简单的命令来显示网络上DHCP服务器的IP地址。但是,如果您知道要看的地方,则有记录的地方。您可以通过以下几种方式在网络上查找DHCP服务器的IP地址。
注意:您将需要root或sudo权限才能运行所有这些命令。
使用grep查找DHCP服务器IP以查找日志条目
我想到的第一种方法是检查DHCPOFFER的日志。DHCPOFFER数据包将来自DHCP服务器,应将其写入日志。在这里,我们将grep与某些选项结合使用(-I忽略二进制文件,-R进行递归)以查找包含我们的DHCP服务器IP地址的日志文件条目。
CentOS 7示例:
sudo grep -IR "DHCPOFFER" /var/log/*
输出: /var/log/anaconda/syslog:17:15:00,299 INFO dhclient:DHCPOFFER from 10.0.0.1
Fedora 30示例:
sudo grep -IR "DHCPOFFER" /var/log/*
输出: /var/log/anaconda/journal.log:Apr 03 20:02:33 localhost-live dhclient[2464]: DHCPOFFER from 10.0.0.1
Ubuntu 19.04示例:
sudo grep -IR "DHCPOFFER" /var/log/*
输出: /var/log/syslog:Oct 12 10:15:55 ubuntu1904 dhclient[864]: DHCPOFFER of 192.168.122.204 from 192.168.122.1
注意:注意到每个发行版都将其存储在不同的日志文件中吗?这就是为什么我们要递归搜索整个/var/log/目录。
使用Journalctl和grep
你可以使用 journalctl 做同样的事情。
sudo journalctl | grep -m1 DHCPACK
输出:Apr 20 21:46:28 putor dhclient[1506]: DHCPACK from 10.0.0.1 (xid=0x65f93c03)
使用lease文件查找DHCP服务器IP地址
dhclient 工具将您的租赁信息存储在租赁文件中。这些lease文件会根据不同的发行版、软件负载和不同的版本保存在不同的地方。
常见的位置有
/var/lib/dhcp/dhclient.[interface].leases
/var/lib/dhcp3/dhclient.leases。
注意:将[interface]替换为你的网络接口名称(例如eth0、eno1等)。
现在用grep找到DHCP服务器。
sudo grep -m1 "dhcp-server" /var/lib/dhcp/dhclient.eno1.leases
如果你使用的是NetworkManager,你可以通过查看正在运行的进程(ps aux)来找到租赁文件的位置。
ps aux | grep NetworkManager
现在你知道了leases文件的位置,你可以从该文件中获取DHCP服务器的IP地址。
sudo grep -m1 "dhcp-server" /var/lib/NetworkManager/dhclient-dd040512-708c-3858-97c6-d79e66458e36-eno1.lease
我们可以把这两种操作串起来,以简化过程。
sudo cat $(ps aux | grep -o '[/]var/lib/NetworkManager/\S*.lease') | grep -m1 dhcp-server-identifier
使用dhclient工具查找DHCP服务器IP
另一种方法是使用带有一些选项的dhclient工具。这也需要root或高级权限。这样做的缺点是dhclient会经历整个DHCP D.O.R.A.的过程,这也意味着你的DHCP服务器、网络和客户端系统需要正确配置。这也意味着你的DHCP服务器、网络和客户端系统需要正确配置。如果你要解决DHCP的问题,这对你的帮助不大。
sudo dhclient -d -nw eno1
这几个不同的方法来找到你的DHCP服务器的IP地址,希望对您有所帮助。