为什么ping和dig(nslookup)返回地址不一样,两者的区别

背景

生产上遇到一个网络问题,调整了aa.com域名的解析之后,发现依然有问题。通过ping和dig命令返回不同的地址。dig的结果是对的,ping的结果是错的。

ping vs dig (nslookup)

ping是用来检测网络联通的,dig是用来查询dns解析的。只是ping第一步先查询了dns后才知道目标域名的真实ip地址。这里重点看的就是这一步两者的差异

参考一个博客
https://superuser.com/questions/663257/why-do-ping-and-dig-provide-different-ip-address-than-nslookup

dig

直接查询 DNS 服务器(如 8.8.8.8),返回域名在 DNS 系统中的原始记录(如 A 记录)。它绕过本地缓存和 hosts 文件,结果最权威。

执行dig  example.com
返回结果中SERVER:就是DNS服务器地址,在不同环境中可能是公网的DNS解析服务器,也可能是内部的DNS解析服务器。

如何查看自己的dns服务器呢,通常的做法

cat /etc/reslov.conf
结果返回的nameserver就是DNS的服务器列表

影响dig结果的是远程DNS服务器内部存在的缓存,通常10分钟或者几分钟会刷新一次,取决于DNS服务器的配置。

ping

ping 依赖操作系统的 DNS 解析器,解析顺序为:

  • 本地 hosts 文件(如 /etc/hosts 或 C:\Windows\System32\drivers\etc\hosts)
  • 本地 DNS 缓存(如 Windows 的 dnscache 或 Linux 的 systemd-resolved)

最后才查询 DNS 服务器,通dig一致。在此之前的两步,可能被本地配置修改。

解决

所以当出现ping和dig不一致的时候

  1. 查询/etc/hosts文件看是否拦截了域名的解析结果
  2. 清除本地的DNS缓存
# 清理系统 DNS 缓存(Linux 示例)
sudo systemd-resolve --flush-caches    # systemd-resolved
sudo resolvectl flush-caches           # 新版 systemd

# Windows
ipconfig /flushdns

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值