我在 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 DoH 实验,他们可以使用不在 Google 列表中的 DNS 提供商(大多数 Chrome 用户群已经这样做了),或者他们可以通过修改标志来禁用 DoH 支持
chrome://flags/#dns-over-https
。
Firefox 和 DNS over HTTPS (DoH)
从 4 月 1 日那周开始,我们 Release 渠道中的一小部分美国用户将获得 DoH 待遇。与以前一样,这项研究将使用 Cloudflare 的 DNS-over-HTTPS 服务,并将继续提供有关实验的浏览器内通知,以便参与者充分了解情况并有机会拒绝。
我们正在努力构建一个更大的可信 DoH 提供商生态系统,并希望能够很快与其他提供商进行试验。与以前一样,我们将继续分享 DoH 测试的结果,并在未来的计划确定后提供更新。
要在 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