gpt4 book ai didi

macos - 为什么/etc/hosts 不再适用于 Big Sur 上的某些网站?

转载 作者:行者123 更新时间:2023-12-03 23:26:16 31 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

去年关闭。




Improve this question




多年来我一直使用 /etc/hosts调整 IP 地址。有时它是用于原型(prototype)设计,或为开发目的添加尚未准备好进入公共(public) DNS 的地址。有时我会阻止某些我不想访问的域,方法是将它们重定向到不正确的 IP 地址。有些是侵入性跟踪网站,例如 connect.facebook.net .其他我一直阻止作为反拖延措施,例如新闻网站,如 politico.com否则,当我打算工作时,我可能会花一整天的时间阅读。
但现在在 macOS 11 Big Sur 上,我注意到一些 /etc/hosts Safari 会忽略条目。使用 gethostbyname() 进行 DNS 查找正确显示阻止/覆盖地址,但 Safari 仍然显示公共(public)站点。
到底是怎么回事? /etc/hosts 发生了什么变化在进行开发工作时,我可以继续使用它来覆盖 DNS 条目吗?

最佳答案

macOS 11 添加了对正式名称 “Service binding and parameter specification via the DNS (DNS SVCB and HTTPSSV)” 的支持.
现在,当您访问一个网站时,它不仅仅是典型的 DNS A已查阅的主机到 IP 地址记录,但全新的 HTTPS DNS记录也被检查。这不仅仅是一个名称条目;它是一种全新的记录类型 (#65),与更熟悉的 A 一起使用和 CNAMEMX .
这些新的HTTPS DNS 记录可以表明该站点支持 HTTPS,包括协议(protocol)版本和 IP 地址。这样,输入一个裸域名就会得到 https://网站的版本,甚至可能在 HTTP/2 或 HTTP/3 上,跳过老式的 HTTP 重定向。甚至还有一个 draft option让域运营商告诉您的计算机绕过任何本地 DNS 设置,并使用特定服务器来处理涉及其域的所有 future DNS 查询。
这里有许多支持性能的意图,也有一些支持隐私的意图。
但是在规范和实现中都存在一个致命的隐私和安全漏洞:它消除了用户在 /etc/hosts 中覆盖域名查找的能力。 ,即使面对积极的恶意域名运营商 .
要查看它是如何工作的:

  • dig 的版本macOS 自带的并没有直接支持这些新记录,但是你可以看看它们是否存在
    $ 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

  • 这就是正在发生的事情:
  • Big Sur 上的 Safari 可以加载您在 /etc/hosts 中阻止的一些网站,因为它从这些新的 HTTPS 获取 IP 地址记录
  • 它只能对某些站点执行此操作,因为大多数域名运营商尚未设置此设置。看起来 Cloudflare 已经为他们平台上的每个人做到了这一点;幸运的是,大多数域名运营商,包括广告/跟踪/恶意软件巨头,还没有意识到这一点。

  • 目前,您可以继续使用 /etc/hosts对于您完全控制的域名。
    同时,对于其他域,您有一些选择:
  • 您可以在家庭网络上运行本地 DNS 服务器或防火墙,blocks these requests
  • 你可以在你的 Mac 上配置一个本地 DNS 解析器守护进程,并使用它来
    阻止这些请求
  • 您可以切换到 Linux 发行版,其中可配置的本地解析程序守护程序是默认的
  • 您可以停止使用 Safari,尽管使用默认 macOS 网络堆栈的其他应用程序可能会继续静默绕过 /etc/hosts

  • Chrome 已经为此进行了一些试验,但 does not appear to have implemented it yet . Firefox 已经开始实现它 but doesn’t seem to have gotten too far.

    关于macos - 为什么/etc/hosts 不再适用于 Big Sur 上的某些网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65972371/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com