我的家庭网络由 ISP 提供的路由器、提供 DHCP 的 Raspberry PI、带有 dnsmasq 的 DNS 以及 NAT 后面的本地地址组成。几周前,我注意到当我尝试使用其名称(nginx、gunicorn、django)连接到我的内部 Web 服务器时,我最终进入了路由器的管理页面。使用同一台客户端计算机,我尝试 ping 到该地址,结果它把我带到了应该去的地方。
经过一番苦思冥想和谷歌搜索,并尝试使用 Firefox 而不是 Chrome(效果不错)后,我发现了“安全 DNS”,它似乎使用外部 DNS,而不是客户端系统(由 dhcp 传递)设置的 DNS。我的 dchp 服务器将所有客户端设置为本地 dnsmasq,并以 8.8.8.8 作为备份。Dnsmasq 使用 8.8.8.8 和 8.8.8.4。
通过关闭安全 DNS,它再次按预期工作。
我的问题是:有没有办法拥有安全的 DNS 但保留我的本地 DNS 来提供本地地址并可能进行缓存?
第二个问题是我是否应该关心是否有安全的 DNS?
谢谢,克里斯
答案1
“安全 DNS”是 DNS-over-TLS,或者可能是 DNS-over-HTTPS(又名 DoT 和 DoH),同时使用您的浏览器合作的 DNS 服务(如 Cloudflare DNS)。
浏览器使用 DoT/DoH 的最初目的主要是保护最后剩下的纯文本服务之一免受可能不受信任的本地网络的影响(就像 HTTPS 已经为其他一切所做的那样)。因此,它在设计上与本地缓存不兼容经过本地网络。它可以如果本地域名可以区分,则与本地域名兼容(例如我会预计浏览器对您通过 DHCP“域后缀”宣传的域使用本地 DNS”,但这取决于客户端的实现,而且我实际上不确定浏览器是否会介意。
然而,在实践中这取决于你自己的风险评估。如果你的网络是可信的,那么你可能不一定需要端到端的 DoT——相反,你可以你的 dnsmasq使用 DoT 服务器作为其上游。这允许本地域,但仍可保护外部查询免受 ISP 级拦截等,众所周知,有些 ISP 会这样做(尤其是在法律强制阻止等方面)。
您当前使用的 DNS 服务 (8.8.8.8) 支持 DoT 和 DoH 连接。遗憾的是,我认为 dnsmasq 不支持 TLS,因此要做到这一点,您实际上需要 Unbound 之类的东西或其他支持 DoT/DoH 的代理。
(DoT 与 DoH 的安全级别和/或隐私级别相同;两者以相同的方式使用相同的 TLS。后者与大型 CDN 仅有负面关联,因为它们更喜欢基于 HTTP 的协议,因此它们更多地营销 DoH,而 DoT 与较小的手工服务有更多关联,但实际上几乎所有服务都提供这两种协议。)