在新安装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的条目
有人有任何想法吗?
答案 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_minimal
是dns
中的最后一个选项,因此官方DNS协议最后一次(当所有其他协议都失败时)/etc/nsswitch.conf
中侦听,并且您有一些ssh端口重定向或隧道到另一个名称服务器给出了错误的答案。地址127.0.1.1
通常由127.0.1.1
网络设备用于配置tap*
客户端连接时使用。openvpn(1)
个配置文件,并在这些配置文件中搜索域named(8)
。您展示的所有地址均不是真实的互联网地址(foobar.com
,127.0.0.0/8
,10.0.0.0/8
,172.16-31.0.0/16
和192.168.0-255.0/24
都是保留的互联网地址一个或另一个原因,你不会看到任何这些地址出现在来自互联网的数据包上)原因是多种多样的,但事实是你的所有流量都是你的私人网络中的本地流量,除了名称服务器之外什么也没有在你的机器上运行可以上网。
很抱歉,但是根据您提供的信息,我是唯一可以争辩解决您错误的人。
你可以做的事情如下(为了获得干净的DNS解析):
169.254.0.0/16
dns
之后配置files
。这将在/etc/nsswitch.conf
和mdns4_minimal
解析wins
(它们应该由您的互联网服务提供商传达给您。如果您不知道该放置在哪里,请尝试nameserver <ip>
这意味着使用谷歌名称服务器来解决地址。幸运的是,它向所有人开放)这些步骤将使dns解析完全超越您的本地名称服务器,您将获得类似
的内容nameserver 8.8.8.8
如果你已经安装了ubuntu并且在安装时没有配置互联网连接,最可能的原因是它已经在本地配置了一个假数据库,允许你进行实验,然后再配置它进行真正的互联网访问。