首先确认物理连接正常(网线插紧、无线网卡已连接),避免因硬件问题导致DHCP请求无法发送。使用ping命令测试与网关或外部网络的连通性(如ping 192.168.1.1或ping 8.8.8.8),若无法ping通,需优先排查网络线路或无线设置问题。
Ubuntu中DHCP客户端服务通常为dhclient(传统)或集成于NetworkManager/systemd-networkd(现代)。使用以下命令检查服务状态:
sudo systemctl status dhclient(传统客户端);sudo systemctl status NetworkManager(若使用NetworkManager管理网络);sudo systemctl status systemd-networkd(若使用systemd-networkd)。sudo systemctl start <服务名> + sudo systemctl enable <服务名>。根据Ubuntu版本差异,配置文件位置不同:
/etc/network/interfaces:确保接口配置包含iface <接口名> inet dhcp(如iface eth0 inet dhcp);/etc/netplan/*.yaml文件(如01-netcfg.yaml),确保接口配置为dhcp4: true(示例:ethernets: {enp0s3: {dhcp4: true}})。sudo netplan apply(Netplan)或sudo systemctl restart networking(传统)。通过日志定位具体错误,常用命令:
sudo journalctl -u dhclient(查看dhclient日志);sudo tail -f /var/log/syslog | grep dhcp(实时过滤syslog中的DHCP相关日志)。若客户端配置正确但仍无法获取IP,可能是DHCP服务器问题。可在客户端手动触发DHCP请求:sudo dhclient -v <接口名>(如sudo dhclient -v eth0),-v参数显示详细过程,帮助判断是客户端还是服务器问题。
防火墙可能阻止DHCP流量(UDP 67/68端口)。使用以下命令检查并放行:
sudo ufw status(查看防火墙状态);sudo ufw allow 67/udp(允许DHCP服务器端口);sudo ufw allow 68/udp(允许DHCP客户端端口)。sudo ufw disable(注意:仅用于排查,完成后需重新启用)。DHCP服务依赖UDP 67(服务器)和68(客户端)端口,若被其他程序占用,会导致服务异常。使用以下命令检查端口占用:
sudo netstat -tuln | grep -E '67|68';sudo ss -tuln | grep -E '67|68'。若客户端存在旧租约记录,可能导致无法获取新IP。删除租约文件后重新获取:
/var/lib/dhclient/dhclient.leases;sudo rm /var/lib/dhclient/dhclient.leases,然后重启网络服务或运行sudo dhclient <接口名>。lspci -k或lsusb查看网卡型号,前往官网下载对应驱动;