温馨提示×

怎样测试linux dhcp

小樊
38
2026-09-12 15:54:46
栏目: 智能运维

在 Linux 上“测试 DHCP”通常分几种场景:测试 DHCP 客户端是否能拿到地址测试 DHCP 服务器是否正常工作、以及抓包排查 DHCP 交互过程。下面按常见用法说明。


一、测试 Linux 作为 DHCP 客户端

1. 使用 dhclient(最常见)

# 释放原有地址
sudo dhclient -r eth0

# 重新申请地址
sudo dhclient eth0

# 查看分配结果
ip addr show eth0

查看 DHCP 服务器信息:

cat /var/lib/dhcp/dhclient.leases

2. 使用 dhcpcd(部分发行版)

sudo dhcpcd eth0

3. 使用 NetworkManager(桌面/服务器常用)

nmcli device reapply eth0
# 或
nmcli connection down eth0
nmcli connection up eth0

二、测试 Linux 作为 DHCP 服务器

假设使用 ISC DHCP Server(dhcpd)

1. 安装

# Debian/Ubuntu
sudo apt install isc-dhcp-server

# CentOS/RHEL
sudo yum install dhcp

2. 配置文件示例

/etc/dhcp/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 8.8.8.8;
}

3. 启动并测试

sudo systemctl start isc-dhcp-server
sudo systemctl status isc-dhcp-server

在另一台机器或同一台用客户端测试:

sudo dhclient eth0

三、使用 DHCP 测试/模拟工具

1. dhcping(快速测试 DHCP 服务器)

sudo apt install dhcping
sudo dhcping -c 192.168.1.1 -s 192.168.1.1

2. 使用 Python 模拟 DHCP 请求(高级)

例如 scapy

from scapy.all import *
dhcp_discover = Ether(dst="ff:ff:ff:ff:ff:ff")/IP(src="0.0.0.0",dst="255.255.255.255")/UDP(sport=68,dport=67)/BOOTP(chaddr=RandMAC())/DHCP(options=[("message-type","discover"),"end"])
sendp(dhcp_discover)

四、抓包排查 DHCP(非常关键)

DHCP 使用:

  • UDP 67(服务器)
  • UDP 68(客户端)
sudo tcpdump -i eth0 udp port 67 or udp port 68 -nn

正常流程应看到:

DHCP Discover
DHCP Offer
DHCP Request
DHCP Ack

五、常见问题排查清单

  • 防火墙是否放通 UDP 67/68
  • 网卡是否 up
  • 是否跨网段(需 DHCP Relay)
  • 地址池是否耗尽
  • 多个 DHCP 服务器冲突

如果你能告诉我:

  • 客户端还是服务器测试
  • 使用的 Linux 发行版
  • 是否 物理机 / 虚拟机 / 容器

我可以给你更精确的测试命令。

0