解决软路由环境中 Safari 无法通过 Cloudflare 人机验证
Fanx / 2023-11-19 / Linux / 阅读量 1673

原因

在 iOS 15 和 macOS Ventura 中,新增了一个功能:限制 IP 地址跟踪
而这个功能虽然在中国大陆无法完整使用,但是能使用部分功能(对网站跟踪器隐藏 IP 地址) 这就使得在非 Cloudflare 的第三方网站中的人机验证器 (域名:challenges.cloudflare.com) 被识别为跟踪器,而在 OpenClash 中,为了防止 YouTube 等使用 QUIC 导致速度不佳,通常会 禁用 QUIC,而恰好 iCloud 专用代理使用了 QUIC

iCloud 专用代理使用 QUIC,这是一种基于 UDP 的全新标准传输协议。专用代理中的 QUIC 连接需要使用端口 443 和 TLS 1.3 建立,因此请确保你的网络和服务器已准备好处理此类连接。

一个完美耦合的 bug 就这样出现了:

访问带有 Cloudflare 人机验证的网站 --> Safari 判断 challenges.cloudflare.com 为跟踪器,使用 iCloud Private Relay 连接此域名 --> OpenClash 配置的防火墙规则禁止 QUIC 连接

导致人机验证卡在 “正在验证” 状态:
正在验证

解决

方法一

在 无线局域网 设置中,关闭 限制 IP 地址跟踪 功能

  • 缺点: 无法使用自带邮件 APP 的隐藏 IP 地址功能

限制 IP 地址跟踪

方法二

关闭 Safari 浏览器的 隐藏 IP 地址 功能

  • 缺点: 无法对于其它跟踪器和广告收集器隐藏 IP 地址

隐藏 IP 地址

方法三

在 dnsmasq 中添加以下域名到 IPSet china_ip_routechina_ip6_route 中:

mask.icloud.com
mask-h2.icloud.com
mask.apple-dns.net
域名来源: 为 iCloud 专用代理准备网络或网页服务器 - Apple Developer

原理:
让 iCloud Private Relay 的流量不经过内核直连,这样能让它们正常使用 QUIC 连接,也不会影响到禁用其它网站的 QUIC

OpenClash 的 本地 IPv4 绕过地址 设置中只能添加 IP/IP-CIDR,不支持域名,所以要通过 dnsmasq 设置

在 OpenWrt 的 网络 --> DHCP/DNS --> 中的 IP 集合 中,添加域名:

mask.icloud.com
mask-h2.icloud.com
mask.apple-dns.net

china_ip_route
china_ip6_route

IP 集 - 1
IP 集 - 2

6 + 1 =
2 评论
    raigoSafari 17iPhone
    2月23日 回复

    求问dhcp/dns下没有ip集合这个tab是什么原因,我是自编译的lede,是不是缺少包

      FanxSafari 17Mac OS X
      3月2日 回复

      @raigo 不知道,我用的是 immortalwrt,lede 的 luci 版本太旧了,我没有使用