凌峰创科服务平台

Linux DHCP服务器查看命令有哪些?

下面我将为您详细介绍几种常用且有效的方法。

Linux DHCP服务器查看命令有哪些?-图1
(图片来源网络,侵删)

第一步:确认您使用的 DHCP 服务器

在开始之前,最好先确认系统上运行的是哪个 DHCP 服务,通常有以下几种:

  1. ISC DHCP Server (isc-dhcp-server):这是最常见、最标准的实现,在 Debian、Ubuntu 等发行版中默认使用。
  2. ISC DHCP Server (dhcpd):在 RHEL、CentOS、Fedora、Rocky Linux、AlmaLinux 等发行版中,软件包名通常是 dhcp,服务名为 dhcpd
  3. dnsmasq:一个轻量级的 DNS 和 DHCP 服务器,常用于小型网络、家庭路由器或容器中。

您可以使用以下命令来检查:

# 检查 dhcpd 服务是否存在并运行 (适用于 RHEL/CentOS)
systemctl status dhcpd
# 检查 isc-dhcp-server 服务是否存在并运行 (适用于 Debian/Ubuntu)
systemctl status isc-dhcp-server
# 检查 dnsmasq 服务是否存在并运行
systemctl status dnsmasq

第二步:根据服务器类型进行查看

这里我们主要介绍最主流的 ISC DHCP Server 的查看方法,最后会补充 dnsmasq 的查看方法。

查看服务运行状态和日志(最常用)

这是排查问题的第一步,可以快速了解服务是否正在运行以及最近的错误信息。

Linux DHCP服务器查看命令有哪些?-图2
(图片来源网络,侵删)

检查服务状态

# 对于 Debian/Ubuntu
sudo systemctl status isc-dhcp-server
# 对于 RHEL/CentOS
sudo systemctl status dhcpd

如果服务没有运行,可以使用 sudo systemctl start dhcpdsudo systemctl start isc-dhcp-server 来启动它。

查看实时日志

DHCP 服务器的日志通常会记录在系统日志中,使用 journalctl 可以非常方便地查看。

Linux DHCP服务器查看命令有哪些?-图3
(图片来源网络,侵删)
# 查看 DHCP 服务器的实时日志,按时间倒序排列
sudo journalctl -u dhcpd -f
# 或者对于 Debian/Ubuntu
sudo journalctl -u isc-dhcp-server -f

关键日志信息:

  • No subnet declaration for eth0:表示 DHCP 服务器配置文件中没有为网络接口 eth0 定义子网。
  • No free leases on subnet ...:表示该子网内的 IP 地址池已经用完。
  • failed to start up:服务启动失败,通常是配置文件有语法错误。

检查配置文件语法

如果您修改了配置文件,最好先检查语法是否正确。

# 对于 RHEL/CentOS
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
# 对于 Debian/Ubuntu
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf

如果命令没有输出,说明语法正确,如果有错误,它会提示你具体的错误位置和原因。


查看 DHCP 服务器配置文件

直接查看服务器的配置文件,可以了解 IP 地址池、租期、网关、DNS 等核心设置。

定位配置文件

  • RHEL/CentOS/Fedora: /etc/dhcp/dhcpd.conf
  • Debian/Ubuntu: /etc/dhcp/dhcpd.conf

查看配置文件内容

sudo cat /etc/dhcp/dhcpd.conf

配置文件关键信息解读:

# 核心配置示例
default-lease-time 600;       # 默认租约时间(秒)
max-lease-time 7200;          # 最大租约时间(秒)
# 为特定的网络接口(如 eth0)定义子网
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;  # 可分配的 IP 地址池
  option routers 192.168.1.1;         # 客户端的默认网关
  option domain-name-servers 8.8.8.8, 8.8.4.4; # 客户端的 DNS 服务器
  option subnet-mask 255.255.255.0;   # 客户端的子网掩码
}

查看 DHCP 租约信息(非常重要)

这部分信息显示了当前哪些客户端(设备)正在从 DHCP 服务器获取 IP 地址,以及租约的详细信息。

租约文件位置

  • RHEL/CentOS/Fedora: /var/lib/dhcpd/dhcpd.leases
  • Debian/Ubuntu: /var/lib/dhcp/dhcpd.leases

查看租约文件

sudo cat /var/lib/dhcp/dhcpd.leases

租约文件内容解读:

这个文件是二进制格式,但 cat 可以查看其文本内容,每一项租约通常包含以下信息:

lease 192.168.1.101 {
  starts 4 2025/10/27 10:00:00;
  ends 4 2025/10/27 12:00:00;
  hardware ethernet 00:1a:2b:3c:4d:5e; # 客户端的 MAC 地址
  client-hostname "My-Laptop";
}

字段说明:

  • lease <ip_address>:分配给客户端的 IP 地址。
  • starts:租约开始的时间。
  • ends:租约到期的时间。
  • hardware ethernet <mac_address>:客户端的 MAC 地址,这是标识客户端的关键。
  • client-hostname <hostname>:客户端报告的主机名。

手动管理租约(可选)

  • 查看当前租约

    # 查看 DHCP 服务器当前管理的所有租约
    sudo dhcpdleases -l /var/lib/dhcp/dhcpd.leases

    注意:dhcpdleases 工具可能需要单独安装。

  • 释放特定 IP 的租约: 如果某个设备不再使用 IP 但租约未到期,导致新设备无法获取 IP,可以手动释放。

    # 假设要释放 192.168.1.101 的租约
    echo "lease 192.168.1.101 {
      hardware ethernet 00:1a:2b:3c:4d:5e;
    }" > /tmp/release_lease.conf
    # 使用 dhcpd 命令释放租约
    sudo dhcpd -cf /etc/dhcp/dhcpd.conf -tf /tmp/release_lease.conf -pf /var/run/dhcpd.pid -lf /var/lib/dhcp/dhcpd.leases release

    注意:这种方法比较复杂,更简单的方式是重启 DHCP 服务,但这会中断所有现有连接。


使用 dhcputils 工具(高级)

dhcputils 包含了一些强大的命令行工具,用于与 DHCP 服务器交互。

安装工具

# Debian/Ubuntu
sudo apt-get install dhcpdump
# RHEL/CentOS
sudo yum install dhcpdump

使用 dhcpdump 抓包分析

dhcpdump 可以抓取网络上的 DHCP 数据包,用于分析客户端和服务器之间的交互,是网络排错的利器。

# 在 DHCP 服务器所在的网络接口上抓包,eth0
sudo dhcpdump -i eth0

使用 dhcdbd (可选)

这是一个守护进程,可以让你通过 DBus 或其他接口远程管理 DHCP 服务器状态和配置,比较复杂,不常用。


补充:查看 dnsmasq 的 DHCP 信息

如果您的服务器使用的是 dnsmasq,查看方法会更简单。

查看服务状态

sudo systemctl status dnsmasq

查看配置文件

配置文件通常是 /etc/dnsmasq.conf/etc/dnsmasq.d/ 目录下的配置文件。

sudo cat /etc/dnsmasq.conf | grep -E 'dhcp-range|dhcp-option'

查看 DHCP 租约

dnsmasq 的租约文件通常在 /var/lib/misc/dnsmasq.leases

# 查看租约信息,格式更易读
sudo cat /var/lib/misc/dnsmasq.leases

租约文件格式(比 ISC 的更简洁): mac_address ip_address hostname lease_start lease_end

总结与排错思路

想要查看的信息 推荐命令/方法 说明
服务是否运行 sudo systemctl status dhcpd 首要检查,确保服务已启动且无错误。
服务日志/错误 sudo journalctl -u dhcpd -f 排查问题的核心,查看启动失败、配置错误等信息。
IP 地址池和设置 sudo cat /etc/dhcp/dhcpd.conf 了解服务器的分配策略,检查 IP 池是否定义正确。
当前谁在使用 IP sudo cat /var/lib/dhcp/dhcpd.leases 查看当前活跃的 DHCP 租约,关联 MAC 地址和 IP。
网络数据交互 sudo dhcpdump -i eth0 高级排错工具,用于分析 DHCP 报文,定位客户端无法获取 IP 的原因。
客户端无法获取 IP 检查服务状态和日志。
检查 dhcpd.conf 中的子网和 range
检查防火墙是否阻止了 UDP 67/68 端口。
检查客户端是否在正确的 VLAN 或网络中。
这是最常见的问题,按此顺序排查通常能找到原因。

希望这份详细的指南能帮助您有效地查看和管理 Linux DHCP 服务器!

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