找出主机名是如何解析的

找出主机名是如何解析的

我正在开发一个网络分析工具(学术研究),我想找出运行该软件的机器上使用的 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 会将其存储在注册表中。

相关内容