我有一个几乎全新的 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
命令(连同dig
和nslookup
)是 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