查找 macOS 上定义主机规则的位置

查找 macOS 上定义主机规则的位置

有没有办法找出我的系统如何得出某个域的 IP 地址?在我的机器上,pinging 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;还可以运行tcpdumpWireShark 并查找端口53或端口5353DNS 数据包以查看显示的内容)

$ dns-sd -q analytics.google.com
...
^C

这将显示 Apple 缓存的内容,如果 Appleland 中的内容不同,则可能与 DNS 不同

$ dscacheutil -q host -a name analytics.google.com
...

然后就是清除缓存中任何奇怪的东西......

$ dscacheutil -flushcache

然后看看是否有上述情况dns-sddscacheutil -q host报告不同的情况。如果条目来自文件,则在清除缓存后运行opensnoop一个 dtrace 脚本,该脚本应显示文件已打开;进行查找后调查这些内容,看看是否有相关记录。

相关内容