凌峰创科服务平台

如何查看Linux上的DHCP服务器信息?

  1. 查看本机是否运行着 DHCP 服务器(即你的 Linux 机器作为服务器)。
  2. 查看你当前连接的 DHCP 服务器信息(即你的 Linux 机器作为客户端)。

下面我将详细讲解这两种情况下的各种方法。

如何查看Linux上的DHCP服务器信息?-图1
(图片来源网络,侵删)

查看本机是否运行着 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/ 目录下。

如何查看Linux上的DHCP服务器信息?-图2
(图片来源网络,侵删)
# 查看 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 的文件中。

如何查看Linux上的DHCP服务器信息?-图3
(图片来源网络,侵删)
# 查看 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 地址
  • 后续还会有 DHCPREQUESTDHCPACK 的交互过程,以及最终获取到的 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:使用 arpip 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 showcat /etc/netplan/*.yaml
查看系统日志 journalctl -u systemd-networkd \| grep DHCP
网络抓包(终极) sudo tcpdump -i eth0 'udp port 67 or 68'

根据你的具体情况选择合适的方法即可,对于日常快速检查,systemctl statusdhclient -v 是最常用和最有效的。

分享:
扫描分享到社交APP
上一篇
下一篇