首先確認DHCP服務是否處于運行狀態,這是排查故障的基礎步驟。使用以下命令查看服務狀態:
sudo systemctl status isc-dhcp-server
或 sudo systemctl status dhcpd
(服務名稱因發行版而異);sudo service isc-dhcp-server status
。sudo systemctl start isc-dhcp-server
或sudo service isc-dhcp-server start
啟動服務。配置文件錯誤是DHCP服務無法啟動的常見原因。DHCP主配置文件通常位于/etc/dhcp/dhcpd.conf
,需檢查以下內容:
sudo dhcpd -t
命令測試配置文件語法,若輸出“Syntax check passed”則表示無語法錯誤;若有錯誤,根據提示定位并修正(如缺少分號、括號不匹配)。subnet
)、IP地址池(range
)、默認網關(option routers
)、DNS服務器(option domain-name-servers
)等參數配置正確。例如: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, 8.8.4.4;
}
日志文件是排查故障的關鍵線索,DHCP服務的日志通常位于:
/var/log/syslog
(Debian/Ubuntu);/var/log/messages
(CentOS/RHEL);journalctl
命令查看服務專屬日志:sudo journalctl -u dhcpd
(Systemd系統)。tail -f /var/log/syslog | grep dhcpd
實時監控日志,重點關注“error”“failed”等關鍵詞,例如“no subnet declaration for eth0”表示未為接口配置子網。DHCP服務需綁定到正確的網絡接口(如eth0
、ens33
),否則無法接收客戶端請求。檢查步驟:
ip addr show
;/etc/default/isc-dhcp-server
,修改INTERFACESv4="eth0"
;/etc/sysconfig/dhcpd
,修改DHCPDARGS="eth0"
。DHCP使用UDP端口67(服務器)和68(客戶端),需確保防火墻允許這些端口的流量:
sudo ufw allow udp 67:68
;sudo firewall-cmd --add-service=dhcp --permanent
,然后sudo firewall-cmd --reload
;sudo iptables -A INPUT -p udp --dport 67 -j ACCEPT
,sudo iptables -A INPUT -p udp --dport 68 -j ACCEPT
。租約文件(/var/lib/dhcp/dhcpd.leases
)記錄了已分配的IP地址,若文件損壞可能導致地址分配失?。?/p>
ls -l /var/lib/dhcp/dhcpd.leases
;sudo mv /var/lib/dhcp/dhcpd.leases /var/lib/dhcp/dhcpd.leases.bak
),然后重啟服務(sudo systemctl restart isc-dhcp-server
),系統會自動生成新文件。若客戶端無法獲取IP,可使用tcpdump
捕獲DHCP流量,確認客戶端是否發送了DHCP Discover請求,以及服務器是否響應了Offer:
sudo tcpdump -i eth0 port 67 or port 68 -vv
正常情況下,應看到“DHCP Discover”(客戶端請求)和“DHCP Offer”(服務器響應)的數據包。
使用客戶端工具驗證服務是否正常:
sudo dhcping -c 192.168.1.100 -s 192.168.1.1
(-c
為客戶端IP,-s
為服務器IP),若輸出“DHCPOFFER received”則表示服務正常;sudo dhclient -v eth0
(-v
顯示詳細過程),觀察是否能獲取到IP地址。若客戶端獲取到IP后無法上網,可能是IP沖突。檢查步驟:
ip addr show
查看分配的IP;/var/lib/dhcp/dhcpd.leases
,確認該IP是否已被其他設備占用;sudo dhclient -r eth0
),然后重新獲?。?code>sudo dhclient -v eth0)。過時的系統或DHCP軟件可能存在已知bug,導致服務異常。定期更新系統:
sudo apt update && sudo apt upgrade # Debian/Ubuntu
sudo yum update # CentOS 7及以下
sudo dnf update # CentOS 8及以上