- 查看本机是否运行着 DHCP 服务器(即你的 Linux 机器作为服务器)。
- 查看你当前连接的 DHCP 服务器信息(即你的 Linux 机器作为客户端)。
下面我将详细讲解这两种情况下的各种方法。

查看本机是否运行着 DHCP 服务器
如果你的 Linux 机器被配置为 DHCP 服务器,你想检查它的服务状态、配置文件或分配的 IP 地址池,可以使用以下方法。
方法 1:使用 systemctl 检查服务状态(最常用)
现代的 Linux 发行版(如 CentOS 7+, Ubuntu 16.04+)使用 systemd 来管理服务。
# 检查 dhcpd 服务是否正在运行 # 服务器包名通常是 dhcpd 或 isc-dhcp-server sudo systemctl status isc-dhcp-server # Debian/Ubuntu sudo systemctl status dhcpd # RHEL/CentOS/Fedora # 如果服务没有运行,可以查看启动失败的日志 sudo journalctl -u isc-dhcp-server
输出解读:
Active: active (running)表示服务正在运行。Active: inactive (dead)表示服务已停止。
方法 2:检查配置文件
DHCP 服务器的核心配置文件通常位于 /etc/dhcp/ 目录下。

# 查看 DHCP 服务的主配置文件 # 文件名可能是 dhcpd.conf 或 isc-dhcp-server.conf sudo cat /etc/dhcp/dhcpd.conf # 查看服务启动时读取的配置文件路径 sudo systemctl show isc-dhcp-server | grep ExecStart
在配置文件中,你可以看到:
subnet:定义的 IP 地址段。range:分配给客户端的 IP 地址范围。option router:分配的网关地址。option domain-name-servers:分配的 DNS 服务器地址。
方法 3:查看 DHCP 服务日志
日志是排查问题的关键。
# 实时查看 DHCP 服务日志 sudo tail -f /var/log/syslog # Debian/Ubuntu sudo tail -f /var/log/messages # RHEL/CentOS 7 (较新) sudo tail -f /var/log/daemon.log # 某些系统
日志中会记录客户端的请求、分配的 IP 地址等信息。
方法 4:查看当前分配的 IP 地址( leases 文件)
DHCP 服务器会将已分配的 IP 地址信息记录在一个名为 leases 的文件中。

# 查看 leases 文件 # 路径通常是 /var/lib/dhcpd/dhcpd.leases 或 /var/lib/dhcp/dhcpd.leases sudo cat /var/lib/dhcp/dhcpd.leases
格式比较特殊,但它详细记录了每个客户端的 MAC 地址、获取的 IP 地址、租约开始和结束时间等。
查看当前连接的 DHCP 服务器信息
如果你的 Linux 机器作为客户端,连接到了一个网络,你想知道是哪个 DHCP 服务器给你分配的 IP,以及分配了哪些信息,可以使用以下方法。
方法 1:使用 dhclient 命令(最直接)
如果你的系统使用 isc-dhcp-client(常见于 Debian/Ubuntu),可以直接查看它的状态信息。
# 查看 dhclient 的详细状态信息 # -v 表示 verbose,显示更多信息 sudo dhclient -v
输出解读: 在输出的信息中,你可以清晰地看到:
DHCPDISCOVER on...:客户端在发送广播包,寻找 DHCP 服务器。DHCPOFFER from ...:这里会显示 DHCP 服务器的 IP 地址。- 后续还会有
DHCPREQUEST和DHCPACK的交互过程,以及最终获取到的 IP、子网掩码、网关、DNS 等信息。
方法 2:检查网络配置文件
在客户端,网络配置文件通常记录了从 DHCP 服务器获取的信息。
# 对于使用 Netplan 的系统 (Ubuntu 18.04+, Debian 10+) cat /etc/netplan/*.yaml # 对于使用 NetworkManager 的系统 (常见于桌面版) nmcli connection show nmcli connection show "你的连接名" | grep dhcp # 对于使用 ifupdown 的系统 (常见于服务器版) cat /etc/network/interfaces
方法 3:查看系统日志
系统日志记录了网络接口启动和获取 IP 地址的过程。
# 搜索与 DHCP 相关的日志 # journalctl 是现代 Linux 的日志查询工具 journalctl -u systemd-networkd | grep DHCP # 使用 systemd-networkd 的系统 journalctl -u networking | grep DHCP # 使用传统网络服务的系统 # 也可以直接在 syslog 中搜索 grep -i dhcp /var/log/syslog
方法 4:使用 ip 命令获取当前网络信息
虽然 ip 命令本身不直接显示“DHCP 服务器地址”,但它可以显示你当前获得的 IP 地址,然后你可以通过 ARP 或抓包来反向查找服务器。
# 查看网络接口的 IP 地址信息 ip addr show
假设你从 ip addr show 中看到你的 IP 是 168.1.100,网关是 168.1.1,DHCP 服务器很可能就是网关 168.1.1,或者也在同一个网段内。
方法 5:使用 arp 或 ip n 命令
ARP (Address Resolution Protocol) 表记录了 IP 地址与 MAC 地址的映射关系,你可以查看网关或其他设备的 MAC 地址,有时能帮助定位服务器。
# 查看 ARP 缓存 arp -a # 或者 ip neigh show
方法 6:网络抓包(终极方法)
如果以上方法都无法找到,或者你需要更详细的信息(如租约时间、服务器主机名等),网络抓包是最可靠的方法。
# 使用 tcpdump 抓取 DHCP 流量 # -i 指定网卡,如 eth0 或 ens33 # port 67 是 DHCP 服务器端口,port 68 是客户端端口 # 'udp port 67 or udp port 68' 是过滤条件 sudo tcpdump -i eth0 -n 'udp port 67 or udp port 68'
在你的客户端上执行一次 ip renew 或者重启网络服务,你将在终端上看到 DHCP 交互的完整过程,DHCPOFFER 包的源 IP 地址就是 DHCP 服务器的地址。
| 场景 | 目标 | 推荐命令 |
|---|---|---|
| 本机是服务器 | 检查服务状态 | sudo systemctl status isc-dhcp-server |
| 查看配置 | sudo cat /etc/dhcp/dhcpd.conf |
|
| 查看日志 | sudo tail -f /var/log/syslog |
|
| 查看已分配IP | sudo cat /var/lib/dhcp/dhcpd.leases |
|
| 本机是客户端 | 查看服务器地址和分配信息 | sudo dhclient -v |
| 查看网络配置 | nmcli connection show 或 cat /etc/netplan/*.yaml |
|
| 查看系统日志 | journalctl -u systemd-networkd \| grep DHCP |
|
| 网络抓包(终极) | sudo tcpdump -i eth0 'udp port 67 or 68' |
根据你的具体情况选择合适的方法即可,对于日常快速检查,systemctl status 和 dhclient -v 是最常用和最有效的。
