有没有办法找出我的系统如何得出某个域的 IP 地址?在我的机器上,ping
ing Analytics.google.com 返回127.0.0.1
,我不知道它是如何得出这个结果的。我的/private/etc/hosts
文件处于默认状态。
有没有办法知道系统是如何得出该地址的?例如,它是来自另一个主机文件、DNS 还是其他什么?
答案1
不是真的,不是,除非你通过dtrace
系统看到正在做什么。没有dtrace
你可以挖四处看看可能是哪个来源造成的
它来自 DNS 服务器吗? (还可以尝试@
不同的公共 DNS 服务器,看看是否存在任何本地 DNS 恶作剧,例如具有 区域的本地缓存名称服务器analytics.google.com
,或者可能某些防火墙正在将数据包重定向到本地 ns...)
$ grep nameserver /etc/resolv.conf
nameserver 192.168.96.1
$ dig +short @192.168.96.1 analytics.google.com
...
$ dig +short @8.8.8.8 analytics.google.com
...
mDNS 系统的想法是什么(这可能会轮询 DNS;还可以运行tcpdump
WireShark 并查找端口53
或端口5353
DNS 数据包以查看显示的内容)
$ dns-sd -q analytics.google.com
...
^C
这将显示 Apple 缓存的内容,如果 Appleland 中的内容不同,则可能与 DNS 不同
$ dscacheutil -q host -a name analytics.google.com
...
然后就是清除缓存中任何奇怪的东西......
$ dscacheutil -flushcache
然后看看是否有上述情况dns-sd
或dscacheutil -q host
报告不同的情况。如果条目来自文件,则在清除缓存后运行opensnoop
一个 dtrace 脚本,该脚本应显示文件已打开;进行查找后调查这些内容,看看是否有相关记录。