如果我在主机文件中有以下条目:
192.168.100.1 bugs
192.168.100.2 daffy.example.com
192.168.100.3 elmer.example.com.
本地实用程序(我假设使用 'gethostbyaddr' 或 Windows 等效项)尝试的 IP-> 名称解析是否会尊重这些条目?这种行为是可配置的吗?它在操作系统之间有何不同?“主机”文件条目是否完全合格是否重要?
编辑:作为对 Russell 的回应,我的测试 Linux 系统正在运行 RHEL 4。我的 /etc/nsswitch.conf 包含以下“主机”行:
hosts: files dns nis
如果我按名称 ping 我的任何主机(例如 bugs、daffy),则前向解析可以正常工作。如果我通过 IP 地址跟踪它们中的任何一个,反向查找将按预期运行。但是,如果我通过 IP 对它们进行 ping,则 ping 似乎无法解析它们的主机名。我的理解是,除非另有说明,否则 Linux ping 总是会尝试将 IP 解析为名称。为什么 traceroute 能够处理主机文件中的反向查找,但不能 ping?
通常主机文件将用于正向和反向查找。在 Unix 系统上,这取决于 nsswitch.conf 文件中条目的顺序。
例如,下面的行将使主机文件覆盖 DNS。反转条目将使 DNS 覆盖主机文件。
我不确定您是否可以在 Windows 系统上调整优先顺序。
我查看了 inetutils-20071127(安装在我的 Ubuntu 9.04 机器上的版本)中 ping 的源代码,如果您 ping IP 地址而不是主机名,源代码似乎启用了纯数字模式:
这可以解释为什么当您通过 IP 地址 ping 主机时没有得到反向查找。
我找到了更改注册表项以更改 Windows 上的名称解析顺序的参考:
http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485
从那里引用:
默认情况下,Windows 按以下顺序检查名称解析提供程序:
本地,(NetBT 本地名称缓存),主机,DNS,NetBT (WINS)。
您希望顺序是主机、DNS、本地、NetBT。
在下文中,较低的数字是较高的优先级。
以下注册表项在
需要修改。
该
/etc/host.conf
文件指定用于发现 IP 地址的顺序。我的默认包含以下内容:这意味着总是先检查主机文件,然后检查 DNS(绑定)。
如果
nis
此处未指定,则永远不会查看/etc/nsswitch.conf
.文档链接:http ://tldp.org/LDP/nag/node82.html