主机文件似乎被忽略


18

我有几乎新鲜的Ubuntu桌面盒。操作系统已于两周前安装,并​​从业力存储库中进行了更新。上周,我对DNS没有任何问题。但是这周发生了一些变化。我不确定何时何地,也不确定是否更改了任何配置。

所以现在我有一些非常奇怪的情况。根据日志名称解析应正常工作。

/ etc / hosts

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/host.conf

order hosts,bind
multi on

/etc/resolv.conf

# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3

/etc/nsswitch.conf

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

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

netgroup:       nis

但事实并非如此。

user @ test〜> ping测试

PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]

平就可以了。

user @ test〜>主机测试

test.mydomain.com has address xx.xxx.161.201

我怀疑NetworkManager可能会导致此异常,但不知道从哪里开始检查它。有什么想法,建议吗?

Answers:


20

使用此配置,大多数应用程序都会很高兴地使用您从中输入的内容/etc/hosts

但是host没有看/etc/nsswitch.conf。这是设计使然,而不是偶然,因为host专门是DNS查找程序。 /etc/hosts不是DNS,(主要是)我们拥有DNS 之前使用的DNS。

同样dignslookup它们也都是特定于DNS的。


因此,您是说host实用程序不使用/etc/hosts?我的案子没有什么要解决的吗?
z4y4ts 2010年

是的,差不多-这里什么也看不到:)
Alnitak

我没有得到的是host>用来<是“常规”名称查询命令,服从/etc/nsswitch.conf
mveroone 2015年

@Kwaio我在ISC消息来源中找不到host曾经做过的证据
Alnitak

好吧,我可能使用过不常见的分发实现,这很糟糕。
mveroone '16

15

host命令(以及dignslookup)是bindDNS实用程序的一部分。作为DNS解析器实用程序,它仅执行DNS解析。

如果您有兴趣从任何libnss驱动的数据存储中获取条目,则可以使用该getent程序。例如,要获取主机条目,请按以下方式使用它:

getent hosts google.com

在此之前,该决议顺序设置了下hosts:/etc/nsswitch.conf安排妥当,这包括/etc/hosts如果“文件”是lised作为选项之一。


感谢您提醒我该getent命令。
伊曼纽尔

2
我认为,当今应该使用getent ahosts而不是getent hosts因为getent hosts使用gethostbyaddr()gethostbyname*()已过时。如果我正确理解,getent hosts可以模拟用来工作的UNIX C旧程序,并getent ahosts模拟现代程序的工作方式。
Mikko Rantalainen

0

对我来说,此问题是由于文件权限不正确而引起的。只有root可以读取/ etc / hosts。该文件应该是世界可读的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.