本地“主机”文件中的条目是否覆盖正向和反向名称查找?

如果我在主机文件中有以下条目:

192.168.100.1 bugs 192.168.100.2 daffy.example.com 192.168.100.3 elmer.example.com. 

将IP->名称parsing尝试本地utilies(我假设使用“gethostbyaddr”或Windows等效)荣誉这些条目? 这种行为是可configuration的吗? 操作系统有何不同? “主机”文件条目是否完全合格与否有关系吗?

编辑:为了响应罗素,我的testingLinux系统正在运行RHEL 4.我的/etc/nsswitch.conf包含以下“hosts”行:

 hosts: files dns nis 

如果我通过名称ping任何主机(例如,bug,daffy),则正向parsing能够正常工作。 如果我通过IP地址对其中的任何一个进行跟踪,则反向查找function将按照预期进行。 但是,如果我通过IP ping他们,ping不会parsing他们的主机名。 我的理解是,除非另有说明,否则Linux ping将总是尝试将IPparsing为名称。 为什么traceroute能够处理hosts文件中的反向查找,但ping不?

通常主机文件将用于正向和反向查找。 在Unix系统上的首选项取决于你在nsswitch.conf文件中的条目顺序。

例如下面的行将使主机文件覆盖DNS。 反转条目将使DNS覆盖主机文件。

主机:文件dns

我不确定您是否可以在Windows系统上调整优先顺序。

我已经在inetutils-20071127(安装在我的Ubuntu 9.04盒子上的版本)中查看了ping的源代码,并且源代码似乎只启用了数字模式,如果您ping一个IP地址而不是主机名:

                 if(inet_aton(target,&whereto.sin_addr)== 1){
                         hostname = target;
                        如果(argc == 1)
                                 options | = F_NUMERIC;

这可以解释为什么当你通过IP地址ping你的主机时你不会得到反向查找。

我find了一个引用来改变registry项来改变Windows上的名称parsing顺序:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485

从那里引用:

默认情况下,Windows按以下顺序检查名称parsing提供程序:

本地(NetBT本地名称caching),主机,DNS,NetBT(WINS)。

你想要的命令是主机,DNS,本地,NetBT。

在下文中,较低的数字是较高的优先级。

以下registry项中

 HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider 

需要修改。

 DnsPriority= 0x3e8 (Decimal: 1000) HostsPriority= 0x1f4 (Decimal: 500) LocalPriority= 0x5dc (Decimal: 1500) NetbtPriority= 0x7d1 (Decimal: 2001) 

/etc/host.conf文件指定用于发现IP地址的顺序。 我的默认包含以下内容:

 # # /etc/host.conf # order hosts,bind multi on 

这意味着主机文件总是先检查,然后DNS(绑定)。

如果在这里没有指定nis ,那么它将永远不会查看/etc/nsswitch.conf

文档链接: http : //tldp.org/LDP/nag/node82.html