ping,ssh,...使用不同于nslookup,host,

时间:2015-11-15 14:25:03

标签: linux dns nameservers nslookup ubuntu-15.10

在新安装Ubuntu15.10之后,我的命令(ping,ssh,...)使用的是不同于nslookup,host,dig,...解析的IP地址。 怎么会发生这种情况?

user@ubuntu-15-10:~$ nslookup foobar.com
 Server:        127.0.1.1
 Address:   127.0.1.1#53

 Non-authoritative answer:
 foobar.com canonical name = foobar.homeip.net.
 Name:  foobar.homeip.net
 Address: 12.34.56.78

user@ubuntu-15-10:~$ host foobar.com
 foobar.com is an alias for foobar.homeip.net.
 foobar.homeip.net has address 12.34.56.78

user@ubuntu-15-10:~$ ping foobar.com
 PING foobar.com (192.168.1.3) 56(84) bytes of data.
 64 bytes from foobar.localdomain.home (192.168.1.3): icmp_seq=1 ttl=64 time=0.245 ms
 64 bytes from foobar.localdomain.home (192.168.1.3): icmp_seq=2 ttl=64 time=0.285 ms
 64 bytes from foobar.localdomain.home (192.168.1.3): icmp_seq=3 ttl=64 time=0.269 ms
 ^C
 --- foobar.com ping statistics ---
 3 packets transmitted, 3 received, 0% packet loss, time 2000ms
 rtt min/avg/max/mdev = 0.245/0.266/0.285/0.021 ms

user@ubuntu-15-10:~$

我的/etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search localdomain.home

我的/etc/nsswitch.conf

# /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] wins dns
networks:       files

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

netgroup:       nis

/ etc / hosts中没有foobar.com的条目

有人有任何想法吗?

2 个答案:

答案 0 :(得分:2)

经过一番调查后我找到了修复myslef的方法...... 问题在/etc/nsswitch.conf中: 在“主机”行:“dns”条目应该在“胜利”条目之前... 我不明白背后是什么,但现在它的工作方式与预期的一样

答案 1 :(得分:1)

抱歉,配置的服务器是一些奇怪的假服务器,可能在你自己的机器上。服务器地址[127.0.1.1]通常是为localhost接口保留的(这很奇怪,因为localhost地址实际上是127.0.0.1,而不是127.0.1.1

最有可能因为您收到不同的回复,nslookup(1)BIND实用程序来测试dns访问权限(仅使用dns查找)和{{1} }使用ping(1)库例程(考虑gethostbyname(3)文件中配置的所有可能性,以获取有关如何继续的信息,在这种情况下,dns部分是最后的算法)

另一方面,主机/etc/nsswitch.conf的实际地址不是那个(见下文)。

最后,输出中显示的foobar.com解析的地址foobar.com是一个私有地址(不是实际地址,请参阅RFC-1918),您无法通过互联网找到该主机。

最可能的事情是你没有要求任何官方互联网名称服务器的DNS解析,所以一切都是本地DNS配置的问题。

造成差异的可能原因:

  • ping(1)是一些虚假的程序,它不会询问实际的名称服务器。
  • mdns4_minimaldns中的最后一个选项,因此官方DNS协议最后一次(当所有其他协议都失败时)
  • 您的dns没有在地址/etc/nsswitch.conf中侦听,并且您有一些ssh端口重定向或隧道到另一个名称服务器给出了错误的答案。地址127.0.1.1通常由127.0.1.1网络设备用于配置tap*客户端连接时使用。
  • 您尚未显示在您的计算机上运行的名称服务器配置文件。也许你得到的地址的起源就在那里。查找openvpn(1)个配置文件,并在这些配置文件中搜索域named(8)

您展示的所有地址均不是真实的互联网地址(foobar.com127.0.0.0/810.0.0.0/8172.16-31.0.0/16192.168.0-255.0/24都是保留的互联网地址一个或另一个原因,你不会看到任何这些地址出现在来自互联网的数据包上)原因是多种多样的,但事实是你的所有流量都是你的私人网络中的本地流量,除了名称服务器之外什么也没有在你的机器上运行可以上网。

很抱歉,但是根据您提供的信息,我是唯一可以争辩解决您错误的人。

你可以做的事情如下(为了获得干净的DNS解析):

  • 169.254.0.0/16 dns之后配置files。这将在/etc/nsswitch.confmdns4_minimal解析
  • 之前为dns提供优先级
  • 使用您的域名服务器的实际地址配置wins(它们应该由您的互联网服务提供商传达给您。如果您不知道该放置在哪里,请尝试nameserver <ip>这意味着使用谷歌名称服务器来解决地址。幸运的是,它向所有人开放)

这些步骤将使dns解析完全超越您的本地名称服务器,您将获得类似

的内容
nameserver 8.8.8.8

如果你已经安装了ubuntu并且在安装时没有配置互联网连接,最可能的原因是它已经在本地配置了一个假数据库,允许你进行实验,然后再配置它进行真正的互联网访问。