hosts 文件似乎被忽略了

hosts 文件似乎被忽略了

我有一个几乎全新的 Ubuntu 桌面机。操作系统是两周前安装的,并从 karmic 存储库更新。上周我的 DNS 没有问题。但这周发生了一些变化。我不确定发生了什么、什么时候发生了变化,也不确定我是否更改了任何配置。

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

/etc/hosts

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/主机.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

但事实上并非如此。

用户@测试~>ping 测试

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

ping 通没问题。

用户@测试~>主机测试

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

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

答案1

通过这种配置,大多数应用程序都可以顺利地处理您的输入/etc/hosts

然而,host并没有人看/etc/nsswitch.conf。这是有意为之,而不是偶然的,因为host具体来说DNS 查找程序。 /etc/hosts不是 DNS,而是(主要)我们使用的我们有 DNS。

dig对于和来说也是如此nslookup- 它们也是特定于 DNS 的。

答案2

host命令(连同dignslookup)是 DNS 实用程序的一部分bind。作为 DNS 解析器实用程序,它单独执行 DNS 解析。

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

getent hosts google.com

hosts:这遵循按/etc/nsswitch.conf顺序列出的解决顺序,其中包括/etc/hosts“文件”是否列为选项之一。

答案3

对我来说,这个问题是由于文件权限不正确而发生的。只有 root 可以读取 /etc/hosts。该文件应该是所有人都可读的。

答案4

如今 (2021 年),Firefox 正在使用基于 HTTPS 的 DNS,您必须禁用它才能尊重您的主机文件。我认为这会对隐私产生一些影响,因此请在执行此操作之前先了解情况。

进入 Firefox 设置,搜索 DNS。点击settings旁边的Configure how firefox connects to the internet。在底部,取消选中Enable DNS over HTTPS

相关内容