我当前的 Debian 安装存在严重问题。大多数程序如 firefox、nslookup、dig 等都忽略/etc/hosts
文件中的条目,实际上我使用此文件进行广告拦截。
一个例子
/etc/hosts
文件中的一行
127.0.0.1 www.winaproduct.com
Run Code Online (Sandbox Code Playgroud)
当我这样做时,dig +short www.winaproduct.com
它返回服务器的相应 IP 地址,而不是127.0.0.1
.
www.winaproduct.com
在 Firefox 上打开,它显示相应的网站,但这不是预期的。
但有没有问题ping
,busybox nslookup
,busybox ping
,resolveip
等。
那么,问题是什么?以及如何修复它?我认为问题出在 DNS 解析库上。
临时修复、设置dnsmasq
和更改nameserver
为127.0.0.1
in /etc/resolv.conf
。
更新
安装后问题神奇地解决了libnss3
,作为依赖google-chrome
默认 /etc/nsswitch.conf 看起来像 hosts: files dns
如何分辨nslookup
,dig
etc.向/ etc / hosts文件第一,而不是直接问到DNS?
但为什么busybox nslookup
,wget
,resolveip
等的不是工作不同nslookup
,dig
等等?
mic*_*has 17
nslookup
、dig
和host
是用于查询 DNS 名称服务器的工具。
如果您的配置不是由名称服务器提供(如 中给出的信息/etc/hosts
),那么这些工具将不会显示它们,因为它们直接询问名称服务器。
如果您想检查“通常”分辨率是否有效(即 中指定的方式/etc/nsswitch.conf
),您可以使用getent
:
getent hosts www.winaproduct.com
Run Code Online (Sandbox Code Playgroud)
您可以安装 DNSmasq,它将读取您的 /etc/hosts 条目并将它们导入其 DNS 缓存。然后,您所有的 DNS 工具和 DNS 查询应用程序(例如 dig、host 和 nslookup)都将收到源自 /etc/hosts 文件的答案。