Linux 下 dhclient 很慢,通常不是“它自己慢”,而是它在等某些事情,常见原因和对应解决思路如下:
很多系统里 dhclient 会同时尝试 IPv4 + IPv6,或者 NetworkManager 在背后做 SLAAC。
现象:
dhclient 启动后 10~30 秒ifconfig / ip addr 里 IPv6 一直不出来✅ 解决:
sysctl -w net.ipv6.conf.all.disable_ipv6=1
ipv6.disable=1
dhclient 默认会:
如果:
就会卡很久(默认超时几十秒)
✅ 解决:
tcpdump -i eth0 port 67 or port 68
确认有没有 DHCP 回包。
如果:
dhclient 会一直等接口 ready
✅ 检查:
ip link show eth0
看是不是 LOWER_UP
默认:
✅ 限制时间(示例):
# /etc/dhcp/dhclient.conf
timeout 10;
retry 10;
有些脚本或 NetworkManager 会:
dhclient -rdhclient每次都重新走完整流程
✅ 避免频繁重启网络服务
两套机制冲突,会互相抢接口
✅ 查看:
systemctl status NetworkManager
✅ 检查:
top
iostat -x 1
# 看 dhclient 在干嘛
strace -f -e trace=network,connect,read,write dhclient eth0
# 抓 DHCP 包
tcpdump -i eth0 port 67 or port 68
dhclient 慢 = 在等网络 / 等服务器 / 等 IPv6 / 等接口
如果你愿意,可以告诉我:
dhclient -v 的输出我可以直接帮你定位到具体哪一步慢。