linux不能解析域名怎么办,linux域名解析失败原因排查方法

Linux不能解析域名,绝大多数情况下是DNS配置问题或网络服务异常,不是系统本身坏了。按“先本地、再网络、后服务”的顺序排查,几分钟内就能定位原因。

先分清是“完全不能解析”还是“部分域名解析失败”

排查之前先做个快速测试,在终端里执行:

ping 8.8.8.8

如果这条命令能通,但 ping www.baidu.com 提示 unknown host,那说明网络链路正常,问题确实在DNS解析环节,反之,如果连IP地址都ping不通,说明物理网络或路由配置有故障,这时候修DNS是没用的。

接下来再用 dig 或 nslookup 做一次显式查询:

dig www.baidu.com @223.5.5.5

注意后面加了 @223.5.5.5,意思是直接指定阿里DNS服务器查询,如果这条命令能返回IP地址,而系统默认解析失败,那问题基本锁定在本地DNS配置文件上。

检查 /etc/resolv.conf 是否被清空或指向错误

Linux系统解析域名时,第一件事就是读取 /etc/resolv.conf 文件,查看系统配置了哪些DNS服务器,很多Ubuntu或CentOS用户遇到“linux不能解析域名”的情况,打开这个文件后会发现里面要么是空的,要么只剩下一行 search 指令,没有任何 nameserver。

执行下面的命令查看:

cat /etc/resolv.conf

正常文件至少应包含两行,

nameserver 223.5.5.5
nameserver 8.8.8.8

如果没有nameserver,直接用文本编辑器加上即可,但要注意,很多Linux发行版会由NetworkManager或systemd-resolved动态覆盖这个文件,手动改了重启网络后又会变回原样,这时候需要判断系统用的是哪种DNS管理方式。

查看是否存在systemd-resolved进程:

systemctl status systemd-resolved

如果服务是运行状态,且 /etc/resolv.conf 是软链接指向 /run/systemd/resolve/stub-resolv.conf,说明系统走的是systemd托管DNS,此时不要直接改resolv.conf,而是应通过 resolvectl dns 命令设置,或修改 /etc/systemd/resolved.conf 文件。

场景举例:一台Ubuntu 22.04服务器突然无法访问外网域名,ping 114.114.114.114 正常,dig www.taobao.com 却报错,排查后发现是 /etc/resolv.conf 被云平台初始化脚本重置,里面只剩一行 options edns0,重新写入nameserver后问题立即消失。

linux不能解析域名怎么办,linux域名解析失败原因排查方法

Netplan 或 ifcfg 配置中的DNS项是否正确

现代Linux系统很少直接读resolv.conf,而是从网络配置文件中生成DNS设置,如果这里写错了,每次重启网络都会覆盖手动修改。

Ubuntu/Debian使用Netplan

配置文件在 /etc/netplan/ 目录下,通常是 .yaml 后缀,编辑后执行:

sudo netplan apply

配置示例:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      nameservers:
        addresses:
          - 223.5.5.5
          - 119.29.29.29

这里有个容易踩的坑:如果服务器通过DHCP获取IP,但nameservers段里写的IP是内网网关地址,而内网DNS服务没响应,就会出现“能上内网、打不开外网域名”的怪现象,因此建议使用公共DNS如5.5.5(阿里DNS)或29.29.29(腾讯DNS)。

CentOS/RHEL使用ifcfg

老版本CentOS 7或8的配置在 /etc/sysconfig/network-scripts/ifcfg-eth0 中,重点检查两行:

DNS1=223.5.5.5
DNS2=119.29.29.29

修改后重启网络:

systemctl restart network

CentOS 8及以上版本可能使用NetworkManager的nmcli命令,查看当前DNS:

nmcli device show eth0 | grep DNS

修改DNS:

nmcli con mod eth0 ipv4.dns "223.5.5.5 119.29.29.29"
nmcli con up eth0

DHCP获取的DNS覆盖了手动配置

很多linux不能解析域名的问题,恰恰出在“系统确实有DNS配置,但配置的是内网DNS”,比如家里路由器分配了 168.1.1 作为DNS,这个地址本身负责转发解析请求,如果路由器DNS设置错误或上游断连,Linux一样无法解析。

此时观察 /etc/resolv.conf 内容,如果nameserver指向的是网关IP,且手动改成公共DNS后暂时恢复,但重启网络又变回原样,说明DHCP客户端在覆盖配置。

解决方法:

  • 如果是dhclient,编辑 /etc/dhclient.conf 添加:
supersede domain-name-servers 223.5.5.5, 119.29.29.29;
  • 如果是NetworkManager,在连接配置中设置忽略自动DNS:
nmcli con mod eth0 ipv4.ignore-auto-dns yes
  • 如果是dhcpcd,编辑 /etc/dhcpcd.conf:
nolookup
domain_servers 223.5.5.5 119.29.29.29

行业共识认为,自动获取的DNS地址不一定是最优解,尤其在内网环境复杂的情况下,手动指定公共DNS往往更稳定

linux不能解析域名怎么办,linux域名解析失败原因排查方法

。

检查 nsswitch.conf 中的解析顺序

还有一个不起眼但影响很大的文件:/etc/nsswitch.conf,它决定了系统按什么顺序查找主机信息,正常情况下包含这样一行:

hosts: files dns

意思是先查 /etc/hosts 文件,再走DNS,如果这行变成了 hosts: files 或者其他没有dns的写法,那么即使DNS配置正确,系统也不会去查询。

检查命令:

grep "^hosts" /etc/nsswitch.conf

如果缺少dns,直接编辑文件补上,另外需要留意 /etc/hosts 文件中的特殊条目:

0.0.1 localhost

有些教程会建议把主机名也绑定到127.0.0.1,但如果你的hosts文件里写了 0.0.1 www.baidu.com,那么解析永远走本地文件,DNS服务器再快也没用,这属于“域名能解析但被劫持”的隐蔽情况。

防火墙或安全组阻断DNS端口

DNS解析依赖UDP和TCP的53端口,如果服务器上开了iptables或firewalld,且阻止了出站UDP 53流量,解析就会超时。

测试命令:

timeout 1 bash -c "</dev/udp/223.5.5.5/53" ; echo $?

如果返回非0,说明UDP 53出站被阻,查看iptables规则:

sudo iptables -L OUTPUT

以及firewalld:

sudo firewall-cmd --list-all

很多云服务器厂商的安全组默认只放开TCP 22端口,UDP 53端口需要单独放行,业内专家指出,这类问题在云上环境约占解析故障的两到三成。

systemd-resolved 的缓存或解析器故障

使用systemd的Linux发行版,systemd-resolved 服务一旦出现异常,也会导致linux不能解析域名,症状表现为 ping 报 Temporary failure in name resolution。

先看服务状态:

systemctl status systemd-resolved

如果服务处于failed或deactivating状态,尝试重启:

systemctl restart systemd-resolved

然后检查当前生效的DNS:

resolvectl status

对于systemd-resolved管理的系统,推荐使用 resolvectl query 测试:

resolvectl query www.baidu.com

如果DNS实际工作正常,但应用仍然解析失败,可能是nsswitch.conf中使用了 resolve 而不是

linux不能解析域名怎么办,linux域名解析失败原因排查方法

dns,检查确认:

grep hosts /etc/nsswitch.conf

配置应为:

hosts: files resolve [!UNAVAIL=return] dns

这是确保systemd-resolved解析失败后能回退到传统DNS的经典写法。

常见问题排查顺序总结

按以下步骤操作,绝大多数场景下都能解决linux不能解析域名的问题:

  1. 用 ping 8.8.8.8 判断网络通断
  2. 用 dig @223.5.5.5 目标域名 测试显式解析
  3. 查看 /etc/resolv.conf
  4. 确认Netplan或ifcfg配置是否正确
  5. 检查DHCP是否覆盖DNS
  6. 检查nsswitch.conf是否包含dns或resolve
  7. 放行UDP/TCP 53端口
  8. 重启systemd-resolved或网络服务

如果上述步骤都无效,尝试开启另一个终端执行 sudo tcpdump -i eth0 port 53,同时发起解析请求,观察是否有DNS查询包发出,如果能看到请求发出但收不到响应,说明公网DNS服务器可能被污染或阻断,更换DNS服务器地址再试。

哪些DNS服务器更适合Linux服务器使用

国内服务器优先推荐阿里DNS 5.5.5 和腾讯DNS 29.29.29,连通性普遍好于国外公共DNS,海外云主机可考虑 1.1.1(Cloudflare)或 8.8.8(Google)。

不同DNS在解析速度和准确性上有一定差异。对于Linux服务器来说,稳定比速度更重要,建议配置两个不同运营商的DNS作为主备。

Q&A

linux不能解析域名和ping不通外网的区别是什么?

前者是网络通畅但域名无法转换出IP,后者是底层网络连接直接失败,区分方式很简单:ping 一个IP地址(比如223.5.5.5),能通说明网络正常,真正的问题在DNS环节;不通则说明需要先解决路由或网络连接问题,修DNS没有意义。

修改/etc/resolv.conf后重启网络又失效怎么办?

这种情况说明系统使用NetworkManager或systemd-resolved自动管理DNS,应根据发行版选择对应配置方式:Ubuntu修改Netplan配置文件,CentOS修改ifcfg文件,或通过nmcli命令设置静态DNS,单纯手动修改resolv.conf只能临时生效,无法抵抗网络服务重启时的覆盖行为。

为什么某些域名能解析,某些域名解析失败?

现象通常指向DNS服务器本身对特定域名返回了异常响应,或者本地DNS缓存中保留了错误的解析记录,先执行 sudo systemd-resolve --flush-caches 清空缓存,再使用 dig 域名 @223.5.5.5 对比测试,如果公共DNS能解析而默认DNS不能,说明默认DNS服务器的上游链路有问题,更换DNS即可。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/910042.html

赞 (0)
上一篇 2026年10月8日 20:54
下一篇 2026年10月8日 21:14

相关推荐

  • Java中如何获取当前域名?java获取域名的方法有哪些?

    Java取域名的核心方案是:优先使用java.net.URI解析,替代已过时的URL类,辅以Guava InternetDomainName或自研Trie树应对复杂业务场景,这一组合在2026年主流JDK 21+环境下兼具安全性与性能优势,为什么URL.getHost()不再是首选java.net.URL类在J……

    2026年8月10日
    0960
  • 域名转入备案需要备案吗?域名转入备案怎么办理

    只要你的域名和服务器都在国内合规服务商处,且备案信息真实可查,转入备案流程通常只需要在目标服务商后台提交申请,等待审核通过即可,整个过程无需重新提交纸质材料,域名转入备案到底是什么意思?很多站长第一次接触“域名转入备案”这个概念时,容易把它和“域名转入”混为一谈,域名转入备案指的是:你的网站已经在某个服务商A完……

    2026年8月20日
    0972
  • club域名续费多少钱,.club域名怎么续费

    2026年.club域名续费需通过注册商后台操作,建议提前30天开启自动续费以避免域名被赎回期锁定,当前主流注册商年费约在20-40元人民币区间,具体价格因促销活动及注册商政策而异,.club域名续费核心流程与时效解析在域名管理日益精细化的今天,.club作为新兴通用顶级域名(gTLD),其续费机制已趋于标准化……

    2026年5月22日
    05151
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 绿标域名跳转怎么做?域名跳转设置方法,百度收录权重高吗?

    绿标域名跳转不是简单做个301就完事,它需要同时完成百度搜索资源平台的改版工具提交、新域名验证和规则校验,三步缺一不可,很多站长在换域名时只做了服务器层面的跳转,结果旧域名权重没迁过去,新域名收录还迟迟不来,真正让百度快速识别域名变更并完成权重迁移的关键,是绿标域名跳转机制——百度官方对站点改版的确认流程,绿标……

    2026年8月27日
    0964

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(3条)

  • 美bot63的头像
    美bot63 2026年10月8日 21:02

    这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是检查部分,给了我很多新的思路。感谢分享这么好的内容!

  • brave709fan的头像
    brave709fan 2026年10月8日 21:02

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于检查的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

    • 萌cute2739的头像
      萌cute2739 2026年10月8日 21:03

      @brave709fan:读了这篇文章,我深有感触。作者对检查的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!