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 查找中?
nslookup
只进行正确的DNS 解析,这与您的其他应用程序使用的名称服务切换子系统有很大不同;也就是说nslookup
忽略/etc/hosts
和 mDNS。要像这样测试本地分辨率,请使用使用 NSS 的东西。
ping <hostname>
例如。/etc/hosts
这是一个基于我网络上的条目的简单演示。请注意,有 DNS 服务器和代理可以考虑
/etc/hosts
文件。在这些情况下,nslookup
可能会从本地源返回结果。我想您希望从
/etc/hosts
特定主机 (mysite.com) 的文件中解析名称。另一个可能导致此行为的常见问题是您可能
/etc/hosts
在同一 IP 的文件中有许多条目,例如:在某些实现中,这可能导致将名称解析交给 DNS。快速修复,将所有内容分组为 1 行
我看到的另一个常见的事情是有人(通常是我)将 IP 地址与主机名反转
/etc/hosts
- 例如:乍一看,它看起来很正常......这是我大约 50% 的解决方案: