Ubuntu Server无法从DHCP服务器获取DNS配置的求助
Ubuntu Server无法从DHCP服务器获取DNS配置的求助
看起来你的Ubuntu服务器在DHCP获取DNS配置这块卡壳了,别慌,咱们一步步排查解决:
1. 先检查Netplan配置的缩进问题
YAML对缩进要求特别严格,你的手动配置可能因为缩进错误导致不生效。正确的配置格式应该是这样的(注意每个层级用2个空格,别用Tab):
network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: true dhcp4-overrides: use-dns: false nameservers: addresses: [192.168.2.1, 8.8.8.8]
2. 确保Netplan配置生效
修改完配置文件后,必须执行以下命令让配置生效:
sudo netplan generate sudo netplan apply
这一步很容易被忽略,一定要记得跑!
3. 检查systemd-resolved服务状态
Ubuntu Server默认用systemd-resolved管理DNS解析,先确认它是否正常运行:
systemctl status systemd-resolved
如果显示不是active (running),启动它并设置开机自启:
sudo systemctl start systemd-resolved sudo systemctl enable systemd-resolved
4. 验证DNS配置是否正确加载
用resolvectl查看当前接口的DNS配置:
resolvectl status enp3s0
看看输出里的DNS Servers是不是你设置的192.168.2.1和8.8.8.8。另外,检查/etc/resolv.conf的软链接是否正确:
ls -l /etc/resolv.conf
正常情况下应该链接到/run/systemd/resolve/stub-resolv.conf或者/run/systemd/resolve/resolv.conf,如果是其他情况,你可以手动修正链接:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
5. 测试DNS解析并清除缓存
先试试用resolvectl直接解析域名:
resolvectl query www.google.com
如果之前有缓存导致解析失败,清除缓存再试:
sudo systemd-resolve --flush-caches
再用nslookup www.google.com测试,应该就能正常解析了。
额外排查:确认DHCP服务器是否推送DNS
如果上面的步骤都没解决,你可以手动触发DHCP请求,看看路由器到底有没有推送DNS配置:
sudo dhclient -v enp3s0
观察输出里有没有DNS Servers相关的字段,如果确实没有,那可能是路由器DHCP配置的问题,但你的Windows正常,所以大概率还是Ubuntu这边的配置问题。
备注:内容来源于stack exchange,提问作者Andrew Pritchard
相关产品推荐
相关产品推荐

