标签 私有网络访问 下的文章

如果你使用 fake-ip 作为 DNS enhance mode,并配置了网段 198.18.0.0/15,也许你也遇到过使用 Chrome 或 Edge 浏览器时反复弹出 “是否允许私有网络访问” 的提示:

如果你选择了拒绝,那么你很可能也经历过这种页面样式会崩坏或功能无法正常运行的情况。

那么,这是为什么?

Chrome 本地网络访问 (Private Network Access, PNA)

Chrome 从 2020 年以来一直在推进 “弃用从不安全网站访问私有网络端点” 的功能。

从 Chrome 94 开始,公共非安全环境(广义上讲,指非通过 HTTPS 或私有 IP 地址提供的网站)被禁止向私有网络发出请求。开发人员可以在 Chrome 116 版本发布前采用配置 token 的方式暂时绕过这一限制。从 Chrome 117 开始,弃用试用期结束。所有网站必须停止从不安全网站访问私有网络端点,或者配置用户策略。

2025 年 9 月 29 日,本地网络访问权限提示正式在 Chrome 142 中推出。 本地网络访问权限会限制网站向用户本地网络中的服务器(包括在用户机器上本地运行的服务器)发送请求的能力,要求用户先向网站授予权限,然后才能发出此类请求。

理论上来讲这是好事,可以保护用户免遭针对内网设备的 CSRF 攻击,并降低网站利用这些请求对用户本地网络进行指纹识别的能力。

关于 198.18.0.0/15

198.18.0.0/15 网段被分配给网络互连设备的基准测试。RFC2544 解释说,分配此网段是为了最大限度地减少冲突的可能性。这使得这个专门测试用的没什么冲突的私有网段天然适合作为 fake ip 的 range。

但问题是,Chrome 的这个访问权限提示会在请求 198.18.0.0/15 网段时通过严格的访问控制策略将其也作为内网网段一起拦截。请看草案中的 Chrome 私有网络访问的限制列表:

一旦我们通过 Chrome 浏览网页,此网页通过跨域请求一些静态资源等内容时,由于我们的代理软件返回的 fake-ip 被认为是一个内网设备,Chrome 会弹出访问权限提示。如果允许,那么 PNA 的为了安全所做的设计将失效;如果禁止,网页拿不到静态资源,行为和样式会崩坏。

切换 fake-ip-range

为了解决这一问题,我的第一直觉是:整理一下可用的内网地址中不会被拦截的部分。对比 Wikipedia 上列出的私有地址和 Chrome 的限制列表,Wikipedia 标记为私有但 Chrome 不拦截的段:

192.0.0.0/24 - IETF 协议分配用,256 个地址太少,fake-ip 会很快耗尽

198.51.100.0/24203.0.113.0/24 - TEST-NET 文档示例用,同样只有 256 个地址

233.252.0.0/24 - 组播测试用,地址太少且组播段可能有特殊处理

224.0.0.0/4 到 239.255.255.255 - 组播地址,协议层面不适合做单播 fake-ip

240.0.0.0/4 - 预留未来使用的 E 类地址,其实这个保留地址段由于历史包袱一直没放出使用是最适合的,但很多系统和路由器会直接丢弃这个段的包,有兼容性问题,部分老旧网络设备、防火墙、甚至 Windows 的 TCP/IP 栈会拒绝处理 E 类地址。

似乎没有很合适的选项。

曲线救国之我是美国国防部

虽然我不太愿意这样做,但私有地址都不合适的情况下,只能将目标转向虽然不标准但能解决问题的公网 IP。众所周知,互联网刚出现的时候,是为军方服务的,早期有大量的 IP 地址被美国军方申请走并且一直没有归还。这些美国国防部拥有的海量地址过去近三十年间几乎从未出现在互联网路由表中。例如:

7.0.0.0/8
11.0.0.0/8
21.0.0.0/8
22.0.0.0/8
26.0.0.0/8
28.0.0.0/8
29.0.0.0/8

例如 6.0.0.0/8、11.0.0.0/8 和 28.0.0.0/8 这些都是归属于美国国防部的公网 IPv4 地址段。这些 IP 是标准的公网 IP,因此,将 fake-ip 映射到这些网段,可以骗过浏览器,使其认为你在访问公网,从而绕过 PNA,同时不会对真正的内网 IP 地址产生影响,从而也吃上了 PNA 的安全性红利。

虽然在 2021 年,美国国防部曾短暂地通过一家名为 Global Resource Systems 的公司向全球互联网宣告了这些路由,但其它时候几乎从未被使用过。一般我们也不会有主动访问美国国防部的需求,所以不会影响到公网。此外,占用美国国防部的地址段似乎也是腾讯云、华为云等云厂商的通用的脏方法,虽然不标准,但是我们至少可以比较乐观地预期在未来较长的时间内以这种方式解决问题。

所以,配置 fake-ip-range: 28.0.0.0/8,Chrome 可以看到我的内网地址是在美国国防部的公网 IP 段,Chrome 小姐你也不想你拦截国防部的事被人知道吧,从而解决开头提到的问题。

不生效的话,检查 store-fake-ip 是否开启,清理浏览器缓存,检查 Service Worker 和 DNS 缓存。


📌 转载信息
原作者:
MUTED64
转载时间:
2026/1/18 10:09:35