Linux 服务器无法解析域名,DNS 配置应该怎么排查
服务器能上网但域名解析失败,常见原因是 DNS 配置、网关、解析服务或系统 `/etc/resolv.conf` 被覆盖。本文按“能访问 IP 但不能访问域名”的思路展开。
有些服务器不是“断网”,而是“只会认 IP,不会认域名”。这种情况很容易让人误判成机房故障,因为网站、软件源、接口请求都开始报错。实际上,很多时候只是 DNS 配置坏了。
典型表现
| 现象 | 更像什么 | 先查什么 |
|---|---|---|
| 能 ping IP,不能访问域名 | DNS 问题 | resolv.conf、nameserver |
| 软件源下载失败 | 解析或出口问题 | DNS、路由 |
| 只有某些域名失败 | 上游 DNS 或域名本身问题 | dig、nslookup |
先看系统 DNS
cat /etc/resolv.conf
看里面有没有可用的 `nameserver`。如果被面板、DHCP 或脚本覆盖了,DNS 就可能失效。
测试解析
nslookup example.com
dig example.com
如果返回超时,说明请求没出去或者 DNS 服务器没响应。如果能返回 IP,说明解析链路本身没问题,问题可能出在目标域名、路由或系统代理。
常见坑
1. DNS 服务器写成了不可达地址
2. `resolv.conf` 被重写
3. 有代理或防火墙拦了 53 端口
4. 系统只认本地缓存,不更新新记录
不建议的操作
不要看到解析失败就删掉所有网络配置。不要只改一处不看系统是否会自动覆盖。对于生产机,最好先确认当前 DNS 配置是被谁管理的,再决定修改方式。