为什么当 nslookup 尝试解析地址时没有查询我的 /etc/hosts 文件?

为什么当 nslookup 尝试解析地址时没有查询我的 /etc/hosts 文件?

127.0.0.1我的文件中解析了几个本地域/etc/hosts。一段时间内一切都正常,但现在当我运行时:

nslookup test.local

其结果是:

Server:     192.168.1.3
Address:    192.168.1.3#53

** server can't find test.local: NXDOMAIN

192.168.1.3是我们的网络 DNS,它不应该知道我的本地域test.local。经过几次搜索,我发现该/etc/nsswitch.conf文件包含有关查询 DNS 源优先级的信息。但那里没有问题!这是我的:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

那么有人知道为什么我的hosts文件没有包含在 DNS 查找中吗?

答案1

nslookup只做恰当的DNS 解析,与名称服务交换机您的其他应用程序使用的子系统;也就是说nslookup忽略/etc/hostsmDNS。

要测试这样的本地解析,请使用使用 NSS 的工具。ping <hostname>例如。这是一个基于/etc/hosts我的网络条目的简单演示。

$ nslookup bert
Server:     8.8.8.8
Address:    8.8.8.8#53

** server can't find bert: NXDOMAIN

$ ping bert
PING bert (10.10.0.4) 56(84) bytes of data.
64 bytes from bert (10.10.0.4): icmp_seq=1 ttl=64 time=0.352 ms
64 bytes from bert (10.10.0.4): icmp_seq=2 ttl=64 time=0.407 ms

请注意,有些 DNS 服务器和代理会考虑文件/etc/hosts。在这些情况下,nslookup可能会返回来自本地源的结果。

答案2

我看到的另一种常见现象是某人(通常是我)用主机名反转 IP 地址/etc/hosts- 例如:

mysite.com    10.2.3.4

乍一看,这看起来很正常...这是我大约 50% 的时间的解决方案:

10.2.3.4    mysite.com

答案3

/etc/hosts我猜您想从文件中获得特定主机(mysite.com)的名称解析。

可能导致此行为的另一个常见问题是,文件中可能有许多/etc/hosts针对同一 IP 的条目,例如:

1.1.1.1 host1.domain1.com
1.1.1.1 host2.domain2.com

在某些实现中,这可能会导致名称解析交给 DNS。快速修复方法是将所有内容分组到一行中

1.1.1.1 host1.domain1.com host2.domain2.com

相关内容