我正在开发一个网络分析工具(学术研究),我想找出运行该软件的机器上使用的 DNS。我不是网络管理员,我想知道:找出这个问题的最简单方法是什么;跨平台(即在每个 Linux、Mac 和 Windows 上),最好使用 Python 中可以访问的东西?
通常,系统似乎会很方便地向用户隐藏这些内容——我可以设置固定的 DNS,或者我可以通过 DHCP 使用路由器的设置,或者……我确信还有其他系统(LDAP?)。因此,仅查看 resolv.conf 可能并不总是能得到正确的答案——或者可以吗?
非常感谢!
答案1
如果您使用的是 Linux,resolv.conf
那么确实可以解决问题。不过,这仅适用于 DNS。其他主机解析方法与 DNS 无关。请查看您的系统nsswitch.conf
以获取更多信息。
仅供参考,自动 DHCP 配置通过自动编辑来工作resolv.conf
。
至于 OS X,我不太常用。我相信这类东西会存储在一些二进制数据库中,这些数据库会替换本地文件,但我真的不知道。
对于 Windows,我相信 anetsh interface ip show dns
可以满足您的要求。Windows 还使用 DNS 以外的名称解析机制:网络广播尤其令人讨厌。
答案2
这可能在错误的部分,但无论如何我都会咬它,因为它还没有被移动。
这段 Python 代码应该能满足您的需求。我不确定它在哪种操作系统上进行了测试,因此您可能需要对其进行调整。
http://osdir.com/ml/python.tutor/2002-06/msg00473.html
Linux 和 OSX 将使用 resolv.conf
Windows 会将其存储在注册表中。