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

Arn*_*nab 10 dns nsswitch

我当前的 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 上打开,它显示相应的网站,但这不是预期的。

但有没有问题pingbusybox nslookupbusybox pingresolveip等。

那么,问题是什么?以及如何修复它?我认为问题出在 DNS 解析库上。

临时修复、设置dnsmasq和更改nameserver127.0.0.1in /etc/resolv.conf

更新

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

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

如何分辨nslookupdigetc.向/ etc / hosts文件第一,而不是直接问到DNS?

但为什么busybox nslookupwgetresolveip等的不是工作不同nslookupdig等等?

mic*_*has 17

nslookupdighost是用于查询 DNS 名称服务器的工具。

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

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

getent hosts www.winaproduct.com
Run Code Online (Sandbox Code Playgroud)

  • 我很确定这是一些浏览器问题。试试 `wget` 或其他一些浏览器,比如 chrome。如果 `getent` 给出了预期的结果,他们都应该这样做。 (3认同)

Ton*_*ski 6

您可以安装 DNSmasq,它将读取您的 /etc/hosts 条目并将它们导入其 DNS 缓存。然后,您所有的 DNS 工具和 DNS 查询应用程序(例如 dig、host 和 nslookup)都将收到源自 /etc/hosts 文件的答案。