You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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的主配置:

  1. 编辑配置文件:sudo nano /etc/systemd/resolved.conf
  2. 找到DNS=这一行,改成:
    DNS=1.1.1.1 8.8.8.8
    
    (删掉重复的条目,保留2个可靠的DNS就够了)
  3. 保存退出后重启服务: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的模式,咱们换成本地缓存模式试试,这能避开很多连接问题:

  1. 先备份当前的/etc/resolv.confsudo mv /etc/resolv.conf /etc/resolv.conf.bak
  2. 重新创建软链接指向 stub 文件:sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  3. 重启服务:sudo systemctl restart systemd-resolved.service
    之后再测试域名解析,应该能看到改善。

第四步:临时用静态resolv.conf排除服务问题

如果上面的方法都没用,咱们直接绕开systemd-resolved,用静态配置测试:

  1. 断开之前的软链接:sudo rm /etc/resolv.conf
  2. 创建静态文件:
    sudo echo -e "nameserver 1.1.1.1\nnameserver 8.8.8.8" > /etc/resolv.conf
    
  3. 测试ping google.com,如果能通,说明问题出在systemd-resolved的配置上,咱们可以再针对性修复它。

按照这个顺序来排查,应该能快速定位并解决问题!

备注:内容来源于stack exchange,提问作者BrainyXS

火山引擎 最新活动