服务器无法解析域名?一次 DNS 配置缺失的排查与修复

问题现象

某天,服务器上出现了这样一幕:

  • 能访问公网 IP:ping 223.5.5.5 正常,延迟约 27ms
  • 但访问不了域名:nslookup www.baidu.com 直接报错
csharp 复制代码
connection timed out; no servers could be reached

网络明明是通的,域名却解析不了。这通常意味着问题不在"网通不通",而在"DNS 找谁问"。

排查过程

第一步:ping 公共 DNS,验证基础网络

bash 复制代码
ping -c 2 223.5.5.5

结果通,说明服务器到外网的链路正常。但要注意:ICMP 通不代表 DNS 的 UDP 53 端口通,这一步只能排除"完全断网"的可能,不能证明 DNS 没问题。

第二步:指定 DNS 服务器查询

bash 复制代码
nslookup www.baidu.com 223.5.5.5

成功返回了百度的 IP(36.152.44.132 等)。这一步很关键------它证明服务器到外网 DNS 的通道是正常的,问题不在网络出口,而在本机的 DNS 配置。

第三步:检查本机 DNS 配置

bash 复制代码
cat /etc/resolv.conf

结果只有一行:

bash 复制代码
# Generated by NetworkManager

没有任何 nameserver 记录。

系统根本不知道向谁发起解析请求,于是默认查询超时------问题定位了。

根因:/etc/resolv.conf 中缺少 nameserver 配置。

解决方案

由于该文件由 NetworkManager 管理,直接手改会在重启网络后被覆盖,所以通过 nmcli 把配置固化下来。

1. 确认活动连接名

bash 复制代码
nmcli -t -f NAME,DEVICE connection show --active

主网卡为 enp125s0f0(其余 br-*、docker0 为 Docker 网桥,忽略即可)。

2. 设置 DNS 并禁止 DHCP 自动下发覆盖

bash 复制代码
nmcli connection modify "enp125s0f0" ipv4.dns "223.5.5.5 119.29.29.29"
nmcli connection modify "enp125s0f0" ipv4.ignore-auto-dns yes
nmcli connection up "enp125s0f0"

3. 验证

bash 复制代码
cat /etc/resolv.conf          # 应出现 nameserver 223.5.5.5 等记录
nslookup www.baidu.com        # 不带参数应能直接解析
curl -I https://www.baidu.com # 确认 HTTPS 访问正常

注意事项

  • ignore-auto-dns yes 用于防止 DHCP 下发的 DNS 覆盖手动配置,这是配置能"持久生效"的关键。
  • connection up 后网络会短暂中断几秒,属正常现象。
  • 若 nmcli connection modify 报连接非持久化错误,可使用简写 nmcli con mod enp125s0f0 ... 重试。
  • 临时应急也可直接 echo "nameserver 223.5.5.5" >> /etc/resolv.conf,但重启或重启网络后会失效,仅用于快速验证。

小结

这次故障的排查思路其实很清晰:先分清"网络不通"和"DNS 不通",再分清"外网 DNS 不通"和"本机 DNS 配置缺失" 。ping 通只能说明链路层没问题,nslookup 指定服务器查询成功则把嫌疑锁定在本机配置上,最后 resolv.conf 里空空如也的 nameserver 让真相水落石出。

遇到类似问题时,记住这条排查链:ping IP → nslookup 指定 DNS → 检查 resolv.conf → 用 nmcli 固化配置,基本能覆盖大部分域名解析故障。

相关推荐
xbzb5 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮5 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
瑞克-桑切斯7 小时前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
江屿风7 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
我不会起名字3227 小时前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted
雪落漂泊8 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
瑞克-桑切斯8 小时前
docker mail商城
运维·docker·容器
AR-26710-8 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维
不庸.9 小时前
WPScan 实战入门:从 Docker 靶场到弱密码爆破
运维·安全·web安全·docker·容器·安全性测试·wpscan