我在 macOS Catalina 10.15.4 上遇到奇怪的 DNS 问题:
traceroute google.com
和 ping google.com
均返回未知主机
。
但是,nslookup google.com
和 dig google.com
使用正确的 DNS 服务器返回了正确的结果(我使用的是 8.8.8.8
和8.8.4.4
)。
有人可以向我解释一下为什么会发生这种情况吗?在我看来,这些工具正在以不同的方式解析 DNS。
谢谢!
最佳答案
他们可能正在询问不同的域名服务器。我建议进行数据包捕获以弄清楚到底发生了什么。
首先启动tcpdump(或wireshark)。然后您可以看到正在发生的 DNS 查找以及它们被发送给谁。
我将给出一个使用 tcpdump 执行此操作的示例,因为它可能已经安装在您的计算机上。
首先,打开终端并运行sudo tcpdump -n -i any port 53
。
然后打开旁边的另一个终端并运行 ping google.com
并观察第一个终端的输出。您应该看到类似这样的内容:
16:21:10.831721 IP 10.1.0.106.53914 > 75.75.76.76.53: 46435+ [1au] A? google.com. (39)
16:21:10.832013 IP 10.1.0.106.54613 > 75.75.76.76.53: 15182+ [1au] AAAA? google.com. (39)
16:21:10.856574 IP 75.75.76.76.53 > 10.1.0.106.53914: 46435 1/0/1 A 172.217.1.206 (55)
16:21:10.859887 IP 75.75.76.76.53 > 10.1.0.106.54613: 15182 1/0/1 AAAA 2607:f8b0:400f:801::200e (67)
前两行显示我向 75.75.76.76 发送了两次针对 google.com 的查询,一次针对 IPv4 地址(类型 A)的查询,一次针对 IPv6 地址(类型 AAAA)的查询。 后两行显示我从 75.75.76.76 收到了 A 查询 (172.217.1.206) 的答复,以及 AAAA 查询 (2607:f8b0:400f:801::200e) 的答复。
因此,请尝试此操作,看看您向谁发送 DNS 查询,以及它们有何不同。
如果您想将数据包捕获保存到文件并稍后进行分析,请运行相同的命令,但添加 -w
和文件参数:
sudo tcpdump -n -i any port 53 -w my-file.pcap
完成后,按 ctrl+c
。然后您可以使用tcpdump -n -r my-file.pcap
读取文件的内容,或在wireshark中打开它。
关于macOS 上的 DNS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61292071/