如果我在主机文件中有以下条目:
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