为什么mac电脑上面的ping命令ping dnslog.cn没有dns记录?

如下图所示,能ping通,但是没有任何显示:

img

下面这个是我用其他主机ping的,是一台centos的系统,有回显,也能ping通:

img

img

请问这是为什么呢?

gpt说是icmp redirect的缘故,sudo sysctl -w net.inet.ip.redirect=0关闭掉icmp redirect就好了。

有一个办法 你用cmd打开然后ipconfig /flushdns看看

可能是由于dnslog.cn服务器上的防火墙规则阻挡了ping请求。在mac电脑上使用ping命令时,默认情况下会发送ICMP请求,但有些服务器会阻止ICMP请求以实现更好的安全性。若需要测试dns记录是否能够被解析出来,可以通过使用其他工具,例如nslookup或dig命令来尝试。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这很有可能是 DNS 解析的缓存导致的。Ping 命令使用 DNS 协议解析域名为 IP 地址,然后才能进行网络连通测试。在 DNS 中,常常使用缓存技术来优化 DNS 解析的速度。如果 DNS 查询的数据已经被缓存下来,那么就直接返回缓存中的结果,不会再去进行远程的 DNS 解析。

因此,你看到的结果并不是没有 DNS 记录,而是因为你的 Mac 电脑已经缓存了该域名的 DNS 记录,所以并没有再次进行 DNS 解析,直接就可以与对方主机成功连接。而另一台机器由于没有缓存该域名的信息,需要进行 DNS 解析,最终也能成功连接。

如果你想刷新 Mac 电脑的 DNS 缓存,可以尝试在终端输入以下命令:

sudo killall -HUP mDNSResponder

这个命令会重启 mDNSResponder 进程,从而刷新 DNS 缓存。

另外,如果你想使用 Python 来进行 DNS 查询,可以使用 dnspython 库,以下是示例代码:

import dns.resolver

domain_name = "dnslog.cn"
answers = dns.resolver.query(domain_name) # 查询 DNS 记录
for rdata in answers:
    print(rdata)

但需要注意的是,这个 Python 代码也会受到 DNS 缓存的影响。如果你想强制刷新 DNS 缓存,可以使用 dnspython 库中的 resolver.Cache.flush() 方法来清空缓存。
如果我的回答解决了您的问题,请采纳!

计算机网络出现了问题,无法访问到 DNS 服务器;
网络中断或防火墙等原因导致您无法解析该域名的 IP 地址;
该域名对应的 IP 地址已更改,DNS 记录没有及时更新。