Macos 为什么/etc/hosts不再适用于Big Sur上的一些网站?
多年来,我一直使用Macos 为什么/etc/hosts不再适用于Big Sur上的一些网站?,macos,dns,privacy,hosts,hosts-file,Macos,Dns,Privacy,Hosts,Hosts File,多年来,我一直使用/etc/hosts来调整IP地址。有时是为了原型设计,或者为了开发目的添加一个地址,而这个地址还没有准备好进入公共DNS。有时我会通过将某些我不想访问的域重定向到错误的IP地址来阻止它们。有些是侵入性跟踪网站,例如,connect.facebook.net。还有一些我一直被封锁,作为一种反拖延措施,例如politico.com等新闻网站,我本来打算工作的时候可能会整天阅读这些网站 但现在在macOS 11 Big Sur上,我注意到Safari忽略了一些/etc/hosts条
/etc/hosts
来调整IP地址。有时是为了原型设计,或者为了开发目的添加一个地址,而这个地址还没有准备好进入公共DNS。有时我会通过将某些我不想访问的域重定向到错误的IP地址来阻止它们。有些是侵入性跟踪网站,例如,connect.facebook.net
。还有一些我一直被封锁,作为一种反拖延措施,例如politico.com
等新闻网站,我本来打算工作的时候可能会整天阅读这些网站
但现在在macOS 11 Big Sur上,我注意到Safari忽略了一些/etc/hosts
条目。使用gethostbyname()
的DNS查找正确显示阻止/覆盖地址,但Safari仍然显示公共站点
到底发生了什么事?使用
/etc/hosts
更改了什么?在进行开发工作时,我是否可以继续使用它覆盖DNS条目?macOS 11添加了对官方名称的支持
现在,当你访问一个网站时,它不仅仅是一个典型的DNSa
主机到ip地址记录,而且还会检查一个全新的HTTPS
DNS记录。它不仅仅是一个名字条目;这是一种全新的记录类型(),与更熟悉的a
和CNAME
和MX
一起使用
这些新的HTTPS
DNS记录可以表明站点支持HTTPS,包括协议版本和IP地址。这样一来,输入一个裸域名就可以立即提供站点的https://
版本,甚至可以在HTTP/2或HTTP/3上,跳过老式的HTTP重定向。域名运营商甚至可以通知您的计算机绕过任何本地DNS设置,并使用特定的服务器进行所有涉及其域名的未来DNS查询
这里有很多支持性能的意图,也有一些支持隐私的意图
但在规范和实现中都存在一个致命的隐私和安全缺陷:它消除了用户在/etc/hosts
中覆盖域名查找的能力,即使在面对恶意域名运营商时也是如此
要了解这是如何运作的,请执行以下操作:
- macOS附带的
版本不直接支持这些新记录,但您可以查看它们是否存在dig
$ 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 …
- 我不知道如何解析它,但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
域名系统(响应) 询问 www.politico.com.cdn.cloudflare.net:键入HTTPS,在 答案 www.politico.com.cdn.cloudflare.net:键入HTTPS,在 名称:www.politico.com.cdn.cloudflare.net 类型:HTTPS(特定于HTTPS的服务端点)(65) 类别:IN(0x0001) 生存时间:300(5分钟) 数据长度:58 优先权:1 TargetName: SvcParams SvcParam:ALPN SvcParamKey:ALPN(1) SVC参数值长度:3 阿尔卑斯山长度:2 ALPN:h2 SvcParam:IPv4提示 SvcParamKey:IPv4提示(4) SVC参数值长度:8 IP:104.18.16.202 IP:104.18.17.202 SvcParam:IPv6提示 SvcParamKey:IPv6提示(6) SvcParamValue长度:32 IP:2606:4700::6812:10ca IP:2606:4700::6812:11ca
/etc/hosts
中阻止的一些网站,因为它从这些新的HTTPS
记录中获取它们的IP地址/etc/hosts
同时,对于其他域,您有一些选择:
- 您可以在您的家庭网络上运行本地DNS服务器或防火墙
- 您可以在mac上配置本地DNS解析器守护程序,并使用它来 阻止这些请求
- 您可以切换到Linux发行版,其中默认为可配置的本地解析器守护进程
- 您可以停止使用Safari,尽管其他使用默认macOS网络堆栈的应用程序可能会继续悄悄绕过
/etc/hosts
Chrome已经为此进行了一些试验,但是没有成功。Firefox已经开始实现它了非常有趣的东西!谢谢你的发帖。谢谢,这就是我想要的解释。仅供参考,既然lvh.me不起作用,请检查。。。可以执行类似于
customer1.app.10.0.0.1.nip.io映射到10.0.0.1的操作