Ubuntu 20.04服务器DNS查询缓慢问题求助
看起来你碰到了个挺闹心的问题——明明在netplan里配置了靠谱的公共DNS(8.8.8.8和1.1.1.1),但系统总偷偷把你的LAN网关10.10.1.1塞进DNS列表里,远程VPS用这个完全无效的网关做DNS查询,速度能快才怪呢!
先帮你梳理下目前的状况:从你贴的systemd-resolve --status输出能看到,全局DNS服务器是10.10.1.1,但eth0接口本身的DNS配置是正确的(8.8.8.8和1.1.1.1)。这说明这个无效DNS是被加到全局配置里的,不是接口级的配置出问题。
给你几个具体的排查和解决步骤,一步步来:
1. 检查resolvconf的预设配置文件
你的/etc/resolv.conf是指向resolvconf生成的文件,先看看resolvconf的基础配置有没有偷偷加这个DNS:
cat /etc/resolvconf/resolv.conf.d/base cat /etc/resolvconf/resolv.conf.d/head
如果这两个文件里有nameserver 10.10.1.1的条目,直接删掉,然后重新生成resolv.conf:
sudo resolvconf -u
2. 检查systemd-resolved的全局配置
systemd-resolved的全局DNS配置可能被篡改了,打开它的配置文件看看:
cat /etc/systemd/resolved.conf
找到DNS=或者FallbackDNS=这两行,如果里面包含10.10.1.1,修改成你需要的公共DNS,比如:
DNS=8.8.8.8 1.1.1.1 FallbackDNS=8.8.4.4 1.0.0.1
修改后保存,重启systemd-resolved服务:
sudo systemctl restart systemd-resolved
3. 排查DHCP客户端的干扰
虽然你用的是静态IP,但有些VPS环境下dhclient可能还在运行,偷偷覆盖DNS配置。检查dhclient的配置:
cat /etc/dhcp/dhclient.conf
如果看到类似supersede domain-name-servers 10.10.1.1;或者prepend domain-name-servers 10.10.1.1;的条目,直接注释掉(加#前缀),然后重启dhclient或者整个网络服务。
4. 切换resolv.conf到systemd-resolved的 stub 文件
目前你的resolv.conf指向resolvconf生成的文件,可能和systemd-resolved有冲突。试试把它改成直接指向systemd-resolved的 stub resolver:
sudo unlink /etc/resolv.conf sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
之后重新应用netplan配置:
sudo netplan apply
5. 确认没有其他网络服务干扰
你用的是networkd作为netplan的renderer,但如果NetworkManager还在运行,可能会偷偷修改DNS。检查它的状态:
sudo systemctl status NetworkManager
如果它处于运行状态,直接停止并禁用:
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager
做完这些步骤后,运行systemd-resolve --status看看全局DNS服务器是不是已经变成你设置的8.8.8.8和1.1.1.1了,同时检查/etc/resolv.conf里的条目是否正常。应该就能解决DNS查询缓慢的问题了!
备注:内容来源于stack exchange,提问作者sse450

