网关192.168.122.1
运行 dns,并且命令dig @192.168.122.1 www.google.com
返回有效的 ip 地址,因此 dns 正在工作并且可以访问。
命令tracepath www.google.com
返回gethostbyname2: Host name lookup failure
。
命令tracepath 74.125.129.103
(www.google.com)产生有效结果,因此默认路由设置正确。
该命令route -n
输出:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.122.1 0.0.0.0 UG 100 0 0 eth0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
适用部分/etc/network/interfaces
如下:
auto eth0
iface eth0 inet static
address 192.168.122.5
netmask 255.255.255.0
broadcast 192.168.122.255
gateway 192.168.122.1
dns-servers 192.168.122.1
当前没有运行防火墙。
我认为,鉴于这些设置,tracepath www.google.com
将联系192.168.122.1
DNS 信息,该信息已被验证可以正常工作且可访问。
我下一步该做什么才能找出 tracepath 命令返回的原因gethostbyname2: Host name lookup failure
?
编辑(更多信息)
/etc/resolv.conf
为空。Ubuntu 12.04 使用新的子系统,resolvconf
可在中自动生成 resolv.conf 数据/etc/resolvconf/resolv.conf.d/*
。
/etc/resolvconf/resolv.conf.d/original
包含:
nameserver 192.168.122.1
所有其他resolv.conf.d
文件(head
和base
)都是空的。
/etc/nsswitch.conf
包含:
passwd: compat
group: compat
shadow: compat
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
/etc/hosts
包含:
127.0.0.1 localhost
127.0.1.1 hostname
# 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
答案1
我不太熟悉这个resolv.conf.d
版本,但我相信你应该把查找设置/etc/resolv/resolv.conf.d/base
放在/etc/resolv/resolv.conf.d/original
答案2
接受的答案是,文件nameserver
中的指令/etc/resolv/resolv.conf.d/base
是一在 ubuntu 的新子系统中管理名称服务器设置的方法resolvconf
,但还有另一种方法,我一直在我的配置中尝试过。
/etc/network/interfaces
还可以使用指令在文件中设置名称服务器dns-nameservers
。
我的问题是拼写错误!我写成了dns-nameservers
“dns-servers”。
我已经验证了接受的答案和这个答案均有效。