我一直在努力使用反向 DNS 工作nslookup在 Ubuntu 12.04 上。以下是 nslookup 命令的输出以及不同网络相关配置文件的内容。
nslookup 无法正常工作的可能原因是什么?另外,为什么我需要互联网连接才能对文件中的条目进行反向查找/etc/hosts
?
training@guest1:/etc/network$ nslookup 192.168.1.101
Server: 8.8.8.8
Address: 8.8.8.8#53
server can't find 101.1.168.192.in-addr.arpa.: NXDOMAIN
training@guest1:/etc/network$ cat /etc/hosts
127.0.0.1 localhost
#127.0.1.1 Slave1
192.168.1.101 MyUbuntuLaptop
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
training@guest1:/etc/network$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.201
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
training@guest1:/etc/network$ ping MyUbuntuLaptop
ping MyUbuntuLaptop (192.168.1.101) 56(84) bytes of data.
64 bytes from MyUbuntuLaptop (192.168.1.101): icmp_req=1 ttl=64 time=0.113 ms
64 bytes from MyUbuntuLaptop (192.168.1.101): icmp_req=2 ttl=64 time=0.222 ms
答案1
关于私有地址
你尝试解析为名称的 IP 地址(反向查找)是所谓的私人的地址,定义在RFC 1918简而言之,其中定义了以下 IPv4 地址范围:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
反对民众地址,这些地址不会通过 Internet 路由,仅供专用网络中的 NAT 后使用。许多人都在使用这种地址,因此绝对不是唯一的。因此,让公共 DNS 服务器响应专用 DNS 服务器的反向查找请求是毫无意义的。
为什么它不起作用
Google 和互联网上所有其他公共 DNS 服务器对私有地址不感兴趣,因为它们无法通过互联网路由。因此,基本上,您向一个完全不负责您的网络的服务器请求地址的做法是错误的。
如果你想用像这样的本地配置来覆盖它/etc/hosts
,那么这将不起作用:
本地 DNS 服务器
如果你想进行反向查找之内您的私有 LAN,那么您必须设置具有适当记录的自己的 DNS 服务器,并让所有本地客户端都使用此 DNS 服务器。您可能已经在运行一个 DNS 服务器,但您没有在问题中指定任何内容,如果您已经指定,则您似乎没有使用它。
我可以推荐一个快速的一体化解决方案是域名管理系统 。它是一台集 DHCP 和 DNS 于一体的服务器,其优点是可以在 DNS 中使用 DHCP 的主机名。dnsmasq
以下摘录自的联机帮助页:
Dnsmasq 接受 DNS 查询,然后从小型本地缓存中回答查询,或将其转发到真实的递归 DNS 服务器。它加载内容,
/etc/hosts
以便可以解析未出现在全局 DNS 中的本地主机名,并还回答 DHCP 配置主机的 DNS 查询。
设置完整的 Dnsmasq 有点超出这里的范围,因为它将替换您当前的 DHCP 服务器,我不知道这是否是一个可接受的解决方案。无论如何,对于配置的这一部分,此设置很重要:
domain=mydomain.lan,192.168.1.0/24,local
其中您告诉它使用短主机名服务 192.168.1.0/24 网络以使用域名mydomain.lan
,并且不会转发到上游递归 DNS 服务器。结果是,具有myhost
请求动态地址的主机名的机器将自动在本地解析器中使用并监听查询myhost.mydomain.lan
,反向指针也将同样进行解析。
我不知道这个网站上有没有“如何为家庭网络设置 Dnsmasq?”的问题。如果您或其他人感兴趣,我很乐意回答这个问题。
1 实际上甚至更多,像TFTP服务器也是如此。
答案2
简短回答:nslookup 不使用该/etc/hosts
文件执行任何操作。
长答案:
似乎运行时nslookup
它只会使用 中列出的名称服务器。此行为也在/etc/resolv.conf
中复制。如果您有文件中列出的 IP 地址,则不需要反向 DNS,反之亦然。我相信这是此过程中的想法。host
/etc/hosts
在跟踪该过程时,我发现它甚至没有查看该/etc/hosts
文件,尽管/etc/nsswitch.conf
我已将 DNS 设置为files dns
。
资料来源:man host
man nslookup
答案3
用于查找 DNS 信息的 DNS 服务器应用程序非常死板,与互联网上其他 DNS 查找搜索网站相比,耗时更多,后者非常清晰简短。我总是在WhoisXY.com通过简单搜索即可找到详细信息。