为什么 Firefox 和 Chrome 不尊重我的本地 DNS 解析器?

为什么 Firefox 和 Chrome 不尊重我的本地 DNS 解析器?

我在 OSX(192.168.1.100)中设置了一个本地 DNS,它配置为返回本地网络上特定域名的服务器的 IP 地址(它们都托管在 NAS 上,NAS 也托管 DNS 服务器。)

这些是我拥有的有效 TLD(.net 根),在公共互联网上没有 DNS 记录。即,我拥有的 TLD 已在my-local-domain.net公共注册商处注册,并且在我的本地网络之外的任何 DNS 服务器上都没有记录。

我已经验证本地 DNS 服务器正在dig通过终端响应:

My-MacBook-Pro:~ me$ dig my-local-domain.net @192.168.1.100

; <<>> DiG 9.10.6 <<>> my-local-domain.net @192.168.1.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13199
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;my-local-domain.net.       IN  A

;; ANSWER SECTION:
my-local-domain.net.    0   IN  A   192.168.1.100

;; Query time: 3 msec
;; SERVER: 192.168.1.100#53(192.168.1.100)
;; WHEN: Wed Sep 11 20:18:36 +07 2019
;; MSG SIZE  rcvd: 53

Chrome 和 Firefox 都显示“找不到 IP 地址”错误消息(Chrome 中为 ERR_NAME_NOT_RESOLVED)。

同时,Safari 解析了正确的本地 IP 地址并显示预期内容,但我正在运行的一项服务不支持它 - 因此这不是一个有效的解决方法。

我的系统 DNS 设置将本地服务器设置为主要解析器,以 Cloudflare 的 1.1.1.1 和 Google 的 8.8.8.8 作为分别为中学和大学

我已尝试通过终端多次刷新本地 DNS 缓存。

为什么 Firefox 和 Chrome 不尊重我的本地解析器,而 Safari 却尊重?

我安装了 Firefox设置本地 DNS 解析器(如果有任何区别)。

上面的匿名终端输出准确反映了dig命令的输入和输出。

Dans-MacBook-Pro:~ dancowell$ scutil --dns
DNS configuration

resolver #1
  search domain[0] : localdomain
  nameserver[0] : 192.168.1.100
  nameserver[1] : 1.1.1.1
  nameserver[2] : 8.8.8.8
  flags    : Request A records
  reach    : 0x00020002 (Reachable,Directly Reachable Address)

resolver #2
  domain   : local
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300000

resolver #3
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300200

resolver #4
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300400

resolver #5
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300600

resolver #6
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 300800

resolver #7
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : 0x00000000 (Not Reachable)
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  search domain[0] : localdomain
  nameserver[0] : 192.168.1.100
  nameserver[1] : 1.1.1.1
  nameserver[2] : 8.8.8.8
  if_index : 5 (en0)
  flags    : Scoped, Request A records
  reach    : 0x00020002 (Reachable,Directly Reachable Address)

答案1

这可能与 DNS-over-HTTPS(DoH)有关。

Chrome 和 Firefox 目前正在推广 DNS-over-HTTPS (DoH)。没听说过?好吧,维基百科描述了DNS-over-HTTPS(DoH)

DNS over HTTPS (DoH) 是一种通过 HTTPS 协议执行远程域名系统 (DNS) 解析的协议。该方法的目标是通过防止中间人攻击窃听和操纵 DNS 数据来提高用户隐私和安全性。截至 2018 年 3 月,Google 和 Mozilla 基金会正在测试 DNS over HTTPS 版本。


Chrome 和基于 HTTPS 的 DNS (DoH)

这是Chrome 的使用信息

谷歌宣布,他们将很快在 Google Chrome 浏览器中试用 DNS-over-HTTPS (DoH)。该实验将在 Chrome 78 中进行,并将尝试将用户的 DNS 服务器升级到相应的 DoH 服务器,并在可用的情况下使用该服务器进行 DNS 解析。

这是如何在 Chrome 中禁用它

如果用户不想参与 Chrome DoH 实验,他们可以使用不在 Google 列表中的 DNS 提供商(大多数 Chrome 用户群已经这样做了),或者他们可以通过修改标志来禁用 DoH 支持chrome://flags/#dns-over-https


Firefox 和 DNS over HTTPS (DoH)

以下是Mozilla 如何在 Firefox 中实现它

从 4 月 1 日那周开始,我们 Release 渠道中的一小部分美国用户将获得 DoH 待遇。与以前一样,这项研究将使用 Cloudflare 的 DNS-over-HTTPS 服务,并将继续提供有关实验的浏览器内通知,以便参与者充分了解情况并有机会拒绝。

我们正在努力构建一个更大的可信 DoH 提供商生态系统,并希望能够很快与其他提供商进行试验。与以前一样,我们将继续分享 DoH 测试的结果,并在未来的计划确定后提供更新。

这是有关如何在 Firefox 中禁用它的信息

要在 Firefox 中关闭 DoH,请转到“设置”->“网络设置”,然后取消勾选通过 HTTP 启用 DNS复选框。

或者,转到about:config地址栏,搜索network.trr.mode并将其设置为 K。

答案2

就我而言nsswitch.conf在我的台式电脑上。我在 bind something.local 中配置了它,但它在浏览器上不起作用,但是 bind 使用 dig 正确解析了 .local 区域。这是我的nsswitch.conf

hosts:      files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

mdns4_minimal模块使用多播 DNS (mDNS) 搜索本地 LAN 子网,然后返回“未找到”[未找到=返回]适用并退出。因此域名系统无法达到。

这是一个可能的解决方法(在我的用例中它对我有用):

hosts:      files dns

答案3

刚才,我解决了我的设置中类似的情况。我在路由器上为子域设置了静态 DNS 条目,但 Chrome 总是显示ERR_NAME_NOT_RESOLVED。IE 和 Firefox 可以正确打开子域。

事实上,这是 DoH。我禁用了它,Chrome 顺利打开了我的本地服务器。

为了禁用它,我进入 Chrome 的设置,搜索“dns”,然后在安全我禁用了安全 DNS。

在此处输入图片描述

关掉这个

相关内容