在 Linux 上“测试 DHCP”通常分几种场景:测试 DHCP 客户端是否能拿到地址、测试 DHCP 服务器是否正常工作、以及抓包排查 DHCP 交互过程。下面按常见用法说明。
# 释放原有地址
sudo dhclient -r eth0
# 重新申请地址
sudo dhclient eth0
# 查看分配结果
ip addr show eth0
查看 DHCP 服务器信息:
cat /var/lib/dhcp/dhclient.leases
sudo dhcpcd eth0
nmcli device reapply eth0
# 或
nmcli connection down eth0
nmcli connection up eth0
假设使用 ISC DHCP Server(dhcpd)
# Debian/Ubuntu
sudo apt install isc-dhcp-server
# CentOS/RHEL
sudo yum install dhcp
/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;
}
sudo systemctl start isc-dhcp-server
sudo systemctl status isc-dhcp-server
在另一台机器或同一台用客户端测试:
sudo dhclient eth0
sudo apt install dhcping
sudo dhcping -c 192.168.1.1 -s 192.168.1.1
例如 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 使用:
sudo tcpdump -i eth0 udp port 67 or udp port 68 -nn
正常流程应看到:
DHCP Discover
DHCP Offer
DHCP Request
DHCP Ack
如果你能告诉我:
我可以给你更精确的测试命令。