Arch Linux系统升级后域名解析功能失效求助
Arch Linux系统升级后域名解析功能失效求助
嘿,我来帮你搞定这个升级后DNS解析挂掉的问题!从你给出的信息来看,核心问题是能ping通DNS服务器IP,但无法通过域名解析,而且systemd-resolved一直在TCP和UDP模式之间反复切换,这大概率是服务配置或者网络规则的问题,咱们一步步来排查:
第一步:清理重复的DNS配置,减少服务器数量
你看/etc/resolv.conf里重复配置了两次1.1.1.1,还提示“Too many DNS servers configured”——systemd-resolved最多只会优先使用前3个DNS服务器,重复配置会导致服务逻辑混乱。咱们直接修改systemd-resolved的主配置:
- 编辑配置文件:
sudo nano /etc/systemd/resolved.conf - 找到
DNS=这一行,改成:
(删掉重复的条目,保留2个可靠的DNS就够了)DNS=1.1.1.1 8.8.8.8 - 保存退出后重启服务:
sudo systemctl restart systemd-resolved.service
第二步:检查防火墙是否拦截了DNS端口
虽然你能ping通DNS服务器,但ping用的是ICMP协议,DNS解析需要UDP 53(默认)或者TCP 53( fallback用),说不定升级后防火墙规则变了,把这两个端口挡住了:
- 如果用的是
firewalld,临时关闭测试:sudo systemctl stop firewalld,然后试试ping google.com或者dig google.com - 如果用的是
iptables,查看规则:sudo iptables -L -n | grep 53,看看有没有REJECT或者DROP的规则,有就临时删掉试试
第三步:切换systemd-resolved的解析模式
当前你用的是直接连接上游DNS的模式,咱们换成本地缓存模式试试,这能避开很多连接问题:
- 先备份当前的
/etc/resolv.conf:sudo mv /etc/resolv.conf /etc/resolv.conf.bak - 重新创建软链接指向 stub 文件:
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf - 重启服务:
sudo systemctl restart systemd-resolved.service
之后再测试域名解析,应该能看到改善。
第四步:临时用静态resolv.conf排除服务问题
如果上面的方法都没用,咱们直接绕开systemd-resolved,用静态配置测试:
- 断开之前的软链接:
sudo rm /etc/resolv.conf - 创建静态文件:
sudo echo -e "nameserver 1.1.1.1\nnameserver 8.8.8.8" > /etc/resolv.conf - 测试
ping google.com,如果能通,说明问题出在systemd-resolved的配置上,咱们可以再针对性修复它。
按照这个顺序来排查,应该能快速定位并解决问题!
备注:内容来源于stack exchange,提问作者BrainyXS




