![为什么基于 DNS 的广告拦截器返回 0.0.0.0 而不是 NXDOMAIN?](https://linux22.com/image/1568272/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9F%BA%E4%BA%8E%20DNS%20%E7%9A%84%E5%B9%BF%E5%91%8A%E6%8B%A6%E6%88%AA%E5%99%A8%E8%BF%94%E5%9B%9E%200.0.0.0%20%E8%80%8C%E4%B8%8D%E6%98%AF%20NXDOMAIN%EF%BC%9F.png)
有许多项目通过拦截已知不良域名的 DNS 请求来在路由器级别拦截广告。其中大多数似乎通过将违规域名解析为 0.0.0.0 来工作。
我非常确定 0.0.0.0 不是有效的目标地址。我能找到的所有文档都将其视为源地址,或 conf 文件中的魔法值,以指示“本地计算机上的所有地址”。
我猜想此类 DNS 服务会避免使用 127.0.0.1,因为请求主机本身可能正在运行 Web 服务器。但我不明白为什么它们不返回 NXDOMAIN,而是返回其中任何一个;完全拒绝该域似乎比返回虚假地址更合适。
有许多项目通过拦截已知不良域名的 DNS 请求来在路由器级别拦截广告。其中大多数似乎通过将违规域名解析为 0.0.0.0 来工作。
我非常确定 0.0.0.0 不是有效的目标地址。我能找到的所有文档都将其视为源地址,或 conf 文件中的魔法值,以指示“本地计算机上的所有地址”。
我猜想此类 DNS 服务会避免使用 127.0.0.1,因为请求主机本身可能正在运行 Web 服务器。但我不明白为什么它们不返回 NXDOMAIN,而是返回其中任何一个;完全拒绝该域似乎比返回虚假地址更合适。