nslookup、dig、firefox 忽略 /etc/hosts 文件条目

nslookup、dig、firefox 忽略 /etc/hosts 文件条目

我当前安装的 Debian 有一些严重错误。大多数程序(如 firefox、nslookup、dig 等)都会忽略/etc/hosts文件中的条目,实际上我使用此文件来拦截广告。

一个例子

/etc/hosts文件中的一行

127.0.0.1 www.winaproduct.com

当我dig +short www.winaproduct.com这样做时,它返回服务器的相应 IP 地址,而不是127.0.0.1.

在 firefox 上打开www.winaproduct.com,它显示相应的网站,但这不是预期的。

ping但、busybox nslookup、等没有问题busybox pingresolveip

那么,问题出在哪里呢?如何解决这个问题?我认为问题出在 DNS 解析库上。

临时修复、设置dnsmasq和更改nameserver为.127.0.0.1/etc/resolv.conf

更新

安装后问题神奇地解决了libnss3,作为依赖项google-chrome

默认 /etc/nsswitch.conf 看起来像hosts: files dns

如何告诉nslookupdig首先询问/etc/hosts 文件而不是直接询问DNS?

但为什么busybox nslookup, wget,resolveip等 的工作方式与nslookup,dig等 不同?

答案1

nslookupdig、 和host是用于查询 DNS 名称服务器的工具。

如果您的配置不是由名称服务器提供的(如 参考资料中给出的信息/etc/hosts),这些工具将不会显示它们,因为它们直接询问名称服务器。

如果您想检查“通常”分辨率是否有效(即中指定的方式/etc/nsswitch.conf),您可以使用getent

getent hosts www.winaproduct.com

答案2

配置未绑定软件包(目前在 Linux 上默认安装)或在 Windows 上安装。然后,您的解析器将寻找这个小型轻量级服务来处理所有 DNS 查询。未绑定将读取您的/etc/hosts条目并将其导入解析器 DNS 缓存中。

对于其他一切,它会将您系统的 DNS 查询代理到您计算机的上游 DNS 服务器。

现在,您的所有应用程序以及 DNS 工具(例如dighost和 )nslookup都可以接收来自本地/etc/hosts文件的答案。

作为 Linux 上的替代方案,您可以使用DNSmasq不过,如果您愿意的话,当我上次查看时,它还没有安装在 Windows 上。

相关内容