服务器DNS地址解析错误会导致服务器无法通过域名访问网络资源(如更新软件、连接API、访问外部服务等),自身提供的服务也可能因域名解析失败而受影响,别担心,这是一个常见问题,可以按以下步骤系统性地排查和解决。
1、是这台服务器本身无法解析域名? 在服务器上执行ping baidu.com 或nslookup baidu.com,看是否能返回正确的IP地址。
2、还是访问这台服务器的客户端解析出错? 如果是客户端访问你的服务器域名(如 www.yourdomain.com)时出错,问题可能在于公共DNS记录,这需要检查域名注册商处的DNS设置。
以下主要解决服务器自身DNS解析故障 的问题。
1、检查网络连通性:
* 执行ping 8.8.8.8 或你的网关IP,如果IP能通但域名不通,基本确定是DNS问题,如果IP也不通,先解决网络连接问题。
2、刷新本地DNS缓存:
Linux
sudo systemd-resolve --flush-caches # 适用于 systemd-resolved
# 或
sudo /etc/init.d/nscd restart # 适用于 nscd
# 或
sudo rndc flush # 适用于 BINDWindows Server
ipconfig /flushdns3、重启网络服务(简单粗暴但有效):
Linux
sudo systemctl restart systemd-networkd # 或 NetworkManager,具体取决于发行版Windows Server
在“服务”管理器中重启 “DHCP Client” 和 “DNS Client” 服务。
这是最关键的一步,你需要检查服务器使用的DNS服务器地址是否正确。
Linux
1. 查看当前DNS配置:
cat /etc/resolv.conf 查看nameserver 后面跟的IP地址,通常这里应该配置你的内网DNS服务器地址(如公司的DNS),或者可靠的公共DNS(如223.5.5.5、8.8.8.8、114.114.114.114)。
2. 注意:/etc/resolv.conf 可能由网络管理工具(NetworkManager、systemd-networkd、dhclient)动态生成,永久修改DNS地址需要修改对应工具的配置文件:
使用NetworkManager
sudo nmcli con mod “<连接名>” ipv4.dns “223.5.5.5 223.6.6.6”
sudo nmcli con up “<连接名>”使用 netplan(Ubuntu 18.04+)
编辑/etc/netplan/*.yaml 文件,在对应网卡下添加nameservers 部分。
直接修改(静态配置)
编辑/etc/network/interfaces(Debian系)或/etc/sysconfig/network-scripts/ifcfg(RHEL系旧版),添加DNS1=xxx。
Windows Server
1. 打开“控制面板” -> “网络和共享中心” -> “更改适配器设置”。
2. 右键点击正在使用的网卡 -> “属性”。
3. 双击 “Internet 协议版本 4 (TCP/IPv4)”。
4. 查看是否勾选“自动获得DNS服务器地址”,如果是,且出现问题,可以尝试改为“使用下面的DNS服务器地址”,并填入可靠的公共DNS(如223.5.5.5 和8.8.8.8)。
1、使用nslookup 或dig 诊断:
nslookup baidu.com查看默认DNS服务器的解析结果。
nslookup baidu.com 223.5.5.5指定使用阿里DNS进行查询,如果这个能成功而默认的失败,说明你服务器配置的默认DNS服务器有问题。
dig baidu.com 或dig @223.5.5.5 baidu.com功能更强大,能显示详细的查询过程。
2、检查DNS服务器是否可达和响应:
* 使用ping 测试你配置的DNS服务器IP。
* 使用telnet <dns服务器IP> 53 或nc -zv <dns服务器IP> 53 检查53端口(DNS服务端口)是否开放。
1、检查防火墙规则:
* 确保服务器的出站规则允许对UDP 53端口(DNS查询)和TCP 53端口(大型查询或区域传输)的访问。
命令示例(Linux iptables)
sudo iptables -L -n | grep :53或临时关闭防火墙测试(仅用于排查):
sudo systemctl stop firewalld # RHEL/CentOS
sudo ufw disable # Ubuntu2、检查/etc/hosts 文件:
* 有时,错误的/etc/hosts 条目会覆盖DNS解析,检查是否有相关域名的硬编码错误IP。
cat /etc/hosts3、检查DNS搜索域:
cat /etc/resolv.conf 中的search 或domain 行,如果配置不当,解析短域名时可能会拼接错误的后缀。
如果以上步骤都无法解决:
如果是公司/内网服务器联系网络管理员,确认:
* 你配置的内网DNS服务器IP是否正确且在线。
* 内网DNS服务器到外网的递归查询是否正常。
* 是否有ACL(访问控制列表)限制了这台服务器的DNS查询。
如果是云服务器(阿里云、腾讯云、AWS等)
* 登录云控制台,检查该云服务器的网络配置/VPC设置,确保DHCP选项集或子网DNS设置正确。云服务器的首选DNS通常是云厂商提供的内网DNS(如阿里云的100.100.2.136 和100.100.2.138),它们更稳定、快速。
* 检查云服务器的安全组规则,是否放行了出站UDP/TCP 53端口。
* 提交工单给云厂商技术支持。
最佳实践
主DNS使用云厂商的内网DNS服务器(延迟最低,对内部服务解析最优)。
备DNS使用一个可靠的公共DNS(如223.5.5.5 或8.8.8.8),作为备份。
示例配置(Linux/etc/resolv.conf)
nameserver 100.100.2.136 # 阿里云内网DNS
nameserver 223.5.5.5 # 阿里公共DNS
options timeout:2 attempts:3 rotate
#rotate 表示在多个nameserver间轮询,timeout 设置超时时间开始 ↓ 在服务器上测试nslookup baidu.com↓ 失败? → 检查网络连通性 (ping 8.8.8.8) ↓ ↓ 成功? 失败 → 解决网络连接问题 ↓ 检查/etc/resolv.conf(Linux) 或网卡DNS配置 (Windows) ↓ 配置是否正确? → 否 → 修正为可靠DNS地址(内网DNS/公共DNS) ↓是 尝试nslookup baidu.com 223.5.5.5↓ 成功? → 是 → 问题在于默认DNS服务器,检查其连通性、防火墙或联系管理员 ↓否 检查服务器本地防火墙(出站53端口) ↓ 检查/etc/hosts文件 ↓ 问题依旧? → 联系网络管理员或云服务商
按照以上步骤,绝大多数DNS解析错误都能被定位和解决,核心思路是:先确定问题点(本地配置、DNS服务器、网络),然后逐层排查。
文章摘自:https://idc.huochengrm.cn/dns/22938.html
评论
弓信厚
回复遇到服务器DNS地址解析错误,首先检查网络连接,然后确认DNS设置正确,若问题依旧,尝试更换DNS服务器或联系网络管理员寻求帮助。
冼乐天
回复服务器DNS地址解析错误,首先检查网络连通性和本地DNS配置,刷新DNS缓存,重启网络服务,测试DNS解析过程,排查防火墙规则和hosts文件,若问题依旧,联系管理员或服务商解决。
戈沛槐
回复服务器DNS地址解析错误会导致无法访问网络资源,可按步骤系统性排查和解决,包括检查网络连通性、刷新本地 DNS 缓存和重启网络服务等;还需关注服务器的配置是否正确以及防火墙规则是否允许对UDP/TCP端口53的通信请求等问题解决后仍然存在问题则联系管理员或服务商寻求帮助调整配置文件并优化设置可解决问题