服务器无法解析域名:DNS配置缺失的排查与修复全过程

 更新时间:2026年11月12日 08:48:41   作者:修己xj  
服务器能ping通公网IP但域名解析失败,本文通过真实案例讲解如何排查DNS配置问题,重点分析resolv.conf缺少nameserver的原因,并提供nmcli持久化设置DNS的步骤,帮你快速解决服务器无法解析域名但网络正常的故障,需要的朋友可以参考下

问题现象

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

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

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

排查过程

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

ping -c 2 223.5.5.5

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

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

nslookup www.baidu.com 223.5.5.5

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

第三步:检查本机 DNS 配置

cat /etc/resolv.conf

结果只有一行:

# Generated by NetworkManager

没有任何 nameserver 记录。

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

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

解决方案

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

1. 确认活动连接名

nmcli -t -f NAME,DEVICE connection show --active

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

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

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. 验证

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 固化配置,基本能覆盖大部分域名解析故障。

到此这篇关于服务器无法解析域名:DNS配置缺失的排查与修复全过程的文章就介绍到这了,更多相关服务器无法解析域名DNS配置缺失内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • squid3缓存服务器编译安装和高命中率配置示例

    squid3缓存服务器编译安装和高命中率配置示例

    这篇文章主要介绍了squid3缓存服务器编译安装和高命中率配置示例,本文讲解了下载squid、编译安装squid、配置squid等内容,需要的朋友可以参考下
    2014-12-12
  • UDP DUP超时UPD端口状态检测代码示例

    UDP DUP超时UPD端口状态检测代码示例

    这篇文章主要介绍了UDP DUP超时UPD端口状态检测,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • CentOS下搭建SVN服务器的步骤详解

    CentOS下搭建SVN服务器的步骤详解

    这篇文章主要介绍了CentOS下搭建SVN服务器的步骤,较为详细的分析了CentOS平台上搭建SVN服务器的步骤与相关操作注意事项,需要的朋友可以参考下
    2016-10-10
  • rsync详解之exclude排除文件

    rsync详解之exclude排除文件

    这篇文章详细介绍了rsync之exclude排除文件的实现方法,需要的朋友可以参考下

    2013-07-07
  • ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法

    ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法

    这篇文章主要介绍了ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法,详细讲述了ubuntu14.04LTS环境下nginx+mariaDB+php7+YAF的安装方法与相关注意事项,需要的朋友可以参考下
    2016-05-05
  • cwrsync invalid uid nobody 解决方法

    cwrsync invalid uid nobody 解决方法

    这篇文章主要介绍了使用rsync/cwrsync工具进行档案同步的时候出现invalid uid nobody错误的解决方法,需要的朋友可以参考下
    2016-03-03
  • 使用SSH远程连接Ubuntu服务器系统的方法

    使用SSH远程连接Ubuntu服务器系统的方法

    这篇文章主要介绍了使用SSH远程连接Ubuntu服务器系统,本教程是为了配置ssh服务,可以将Ubuntu系统远程通过cmd或者windows Powershell登录,就可以实现代码复制功能,需要的朋友可以参考下
    2023-11-11
  • 使用Npcap库开发简单的扫描功能

    使用Npcap库开发简单的扫描功能

    nmap(Network Mapper)是一款开源免费的针对大型网络的端口扫描工具,nmap可以检测目标主机是否在线、主机端口开放情况、检测主机运行的服务类型及版本信息、检测操作系统与设备类型等信息,本文主要介绍nmap工具安装和基本使用方法,
    2024-08-08
  • 公开的免费STUN服务器

    公开的免费STUN服务器

    这篇文章主要介绍了公开的免费STUN服务器,stunserver.org 测试是正常的,需要的朋友可以参考下
    2020-02-02
  • rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted

    rsync同步时出现rsync: failed to set times on “xxxx”: Operation no

    今天在同步数据的时候提示rsync: failed to set times on “xxxx”: Operation not permitted,一般来说要不是服务器时间不对或者权限没有设置好
    2016-12-12

最新评论