and*_*otn 2 dns macos privacy hosts hosts-file
多年来,我一直习惯于/etc/hosts调整 IP 地址。有时它是为了原型设计,或添加一个尚未准备好进入公共 DNS 的开发地址。有时我会通过将某些我不想访问的域重定向到错误的 IP 地址来阻止它们。有些是侵入性跟踪网站,例如connect.facebook.net。作为反拖延措施,我一直屏蔽其他网站,例如新闻网站,politico.com否则我可能会在我打算工作的时候花一整天时间阅读这些网站。
但是现在在 macOS 11 Big Sur 上,我注意到/etc/hostsSafari 忽略了一些条目。gethostbyname()正确显示阻止/覆盖地址的DNS 查找,但 Safari 仍然显示公共站点。
这到底是怎么回事?/etc/hosts在进行开发工作时,有什么变化,我可以继续使用它来覆盖 DNS 条目吗?
and*_*otn 10
macOS 11 添加了对官方称为“通过 DNS(DNS SVCB 和 HTTPSSV)的服务绑定和参数规范”的支持。
现在,当您访问网站时,不仅会查询典型的 DNSA主机到 IP 地址记录,还会HTTPS检查全新的DNS 记录。这不仅仅是一个名称条目;这是一个全新的记录类型(#65),与更熟悉一起去A和CNAME和MX。
这些新的HTTPSDNS 记录可以表明该站点支持 HTTPS,包括协议版本和 IP 地址。这样,输入一个裸域名https://就可以立即获得站点的版本,甚至可能在 HTTP/2 或 HTTP/3 上,跳过老式的 HTTP 重定向。甚至还有一个供域运营商使用的草案选项,可以告诉您的计算机绕过任何本地 DNS 设置,并使用特定服务器来进行涉及其域的所有未来 DNS 查询。
这里有许多支持性能的意图,也有一些支持隐私的意图。
但是在规范和实现中都存在一个致命的隐私和安全缺陷:它取消了用户在 中覆盖域名查找的能力/etc/hosts,即使在面对恶意的域名运营商时也是如此。
要查看这是如何运作的:
digmacOS 自带的版本不直接支持这些新记录,但是你可以看看它们是否存在
$ dig -t type65 www.politico.com
…
;; QUESTION SECTION:
;www.politico.com. IN TYPE65
;; ANSWER SECTION:
www.politico.com. 53806 IN CNAME www.politico.com.cdn.cloudflare.net.
www.politico.com.cdn.cloudflare.net. 300 IN TYPE65 \# 58 0001000001000302683200040008681210CA681211CA000600202606 47000000000000000000681210CA2606470000000000000000006812 11CA
…
Run Code Online (Sandbox Code Playgroud)
我不知道如何解析它,但是如果我对它进行数据包捕获,wireshark 可以
Domain Name System (response)
Queries
www.politico.com.cdn.cloudflare.net: type HTTPS, class IN
Answers
www.politico.com.cdn.cloudflare.net: type HTTPS, class IN
Name: www.politico.com.cdn.cloudflare.net
Type: HTTPS (HTTPS Specific Service Endpoints) (65)
Class: IN (0x0001)
Time to live: 300 (5 minutes)
Data length: 58
SvcPriority: 1
TargetName: <Root>
SvcParams
SvcParam: ALPN
SvcParamKey: ALPN (1)
SvcParamValue length: 3
ALPN length: 2
ALPN: h2
SvcParam: IPv4 Hint
SvcParamKey: IPv4 Hint (4)
SvcParamValue length: 8
IP: 104.18.16.202
IP: 104.18.17.202
SvcParam: IPv6 Hint
SvcParamKey: IPv6 Hint (6)
SvcParamValue length: 32
IP: 2606:4700::6812:10ca
IP: 2606:4700::6812:11ca
Run Code Online (Sandbox Code Playgroud)
所以这就是正在发生的事情:
/etc/hosts,因为它会从这些新HTTPS记录中获取其 IP 地址目前,您可以继续使用/etc/hosts您完全控制的域名。
同时,对于其他域,您有一些选择:
/etc/hostsChrome 已为此进行了一些试验,但似乎尚未实施。Firefox 已经开始实施它,但似乎并没有走得太远。
| 归档时间: |
|
| 查看次数: |
2785 次 |
| 最近记录: |