不得不服chatgpt
Chrome 无法访问局域网 IP(ERR_ADDRESS_UNREACHABLE),Safari 却可以?最终定位到 macOS 本地网络权限
最近碰到了一个非常奇怪的问题,折腾了整整一天。
现象如下:
- macOS
- Safari 可以正常访问内网地址
- Chrome(包括重装最新版)始终报:
ERR_ADDRESS_UNREACHABLE例如:
http://192.168.120.62:5173或者
http://192.168.120.33:2800一直打不开。
刚开始一直怀疑:
- Chrome 插件
- SwitchyOmega
- 系统代理
- VPN
- 浏览器缓存
- DNS
甚至把 Chrome 完全卸载重装了,依然没有任何变化。
最后借助Chrome NetLog和 ChatGPT,终于定位到了真正原因。
一、为什么会一直误判?
Google 搜索以及 Gemini 给出的建议,大部分都会围绕下面几个方向:
- 检查代理
- 检查 VPN
- 禁用插件
- 清理缓存
- DNS Flush
- 重装浏览器
这些当然没有错。
但是有一个问题:
没有证据证明 Chrome 真的是走了代理。
如果只是凭经验猜,很容易一直在错误方向上浪费时间。
二、Chrome NetLog 才是真正的突破口
Chrome 自带一个网络日志。
地址:
chrome://net-export/点击:
Start Logging然后:
- 打开有问题的网址
- 出现错误
- Stop Logging
- 导出 netlog.json
这个 JSON 记录了 Chrome 从发起请求到失败的整个过程。
三、日志怎么看?
我最开始看到的是:
{"proxy_info":"DIRECT"}这句已经非常重要了。
它说明:
Chrome 根本没有走代理。
也就是说:
- 不是 SwitchyOmega
- 不是系统代理
- 不是 PAC
- 不是 HTTP Proxy
这一步直接排除了之前折腾半天的方向。
继续往后看:
日志里面出现:
TCP_CONNECT_ATTEMPT随后:
os_error: 65紧接着:
net_error: -109Chrome 把它翻译成:
ERR_ADDRESS_UNREACHABLE也就是说:
Chrome 已经开始 TCP 连接了。
不是 DNS。
不是代理。
而是macOS 网络层直接告诉 Chrome:地址不可达。
四、关键推理
这个时候有一个非常重要的信息:
Safari 可以访问同一个地址。
于是整个推理链就出来了:
如果:
Safari 可以
Chrome 不可以
那么:
- 网络没问题
- 服务器没问题
- IP 没问题
- 端口没问题
问题一定出在:
Chrome 和 Safari 使用网络的方式不同。
而不是:
“浏览器坏了。”
五、真正原因
最终发现:
macOS:
系统设置 → 隐私与安全性 → 本地网络(Local Network)里面:
Google Chrome没有开启权限。
打开之后:
重新启动 Chrome。
所有内网地址立即恢复正常。
包括:
192.168.x.x全部恢复。
六、为什么 Safari 没问题?
Safari 是 Apple 自家的应用。
很多系统能力天然拥有权限。
Chrome 属于第三方应用。
如果没有允许:
Local Network访问局域网时,就可能出现各种奇怪的问题。
Chrome 给出的错误只是:
ERR_ADDRESS_UNREACHABLE它不会提示:
“你没有本地网络权限。”
因此特别容易误判。
七、为什么 NetLog 非常重要?
真正让我觉得收获最大的不是最后那个权限。
而是:
NetLog 可以一步一步排除错误方向。
例如:
看到:
proxy_info : DIRECT立即知道:
代理不用查了。
看到:
TCP_CONNECT说明:
DNS 已经过去了。
看到:
os_error : 65说明:
不是 HTTP。
不是浏览器。
而是操作系统返回的错误。
最后定位速度一下就快了很多。
相比之下,如果只是不断:
- 猜代理
- 猜插件
- 猜 DNS
效率会低很多。
八、最终结论
如果遇到:
Chrome: ERR_ADDRESS_UNREACHABLE但是:
Safari 正常建议按下面顺序排查:
导出 Chrome NetLog(chrome://net-export/)
查看是否为:
proxy_info : DIRECT查看:
TCP_CONNECT后面的:
net_error如果是 macOS,检查:
系统设置 → 隐私与安全性 → 本地网络 → Google Chrome打开权限,重启 Chrome。
后记:日志 + ChatGPT,比盲猜快得多
这次最大的收获,不是知道了macOS 本地网络权限这个知识点,而是改变了排查问题的思路。
以前遇到网络问题,经常会按照经验去猜:
- 是不是代理?
- 是不是浏览器插件?
- 是不是 DNS?
- 是不是缓存?
包括我一开始用 Gemini 排查时,它也一直建议我检查代理、浏览器插件、重装 Chrome 等方向。虽然这些建议并没有错,但始终没有真正定位到问题。
后来换了一个思路:
- 用Chrome NetLog (
chrome://net-export/)把完整网络日志导出来; - 直接把
netlog.json丢给 ChatGPT 分析。
效果比我预期的好很多。
ChatGPT 并不是简单地猜原因,而是根据日志里的每一步网络事件进行推理,例如:
proxy_info: DIRECT→ 排除代理问题;TCP_CONNECT→ 排除 DNS 问题;os_error: 65、net_error: -109→ 判断错误来自 macOS 网络层,而不是浏览器本身。
这样很快就把排查范围缩小到了Chrome 与系统网络权限,最终发现是:
macOS「系统设置 → 隐私与安全性 → 本地网络」没有授予 Google Chrome 权限。
一个值得分享的小经验
以后遇到浏览器网络问题,尤其是:
ERR_ADDRESS_UNREACHABLEERR_CONNECTION_REFUSEDERR_TIMED_OUTERR_NETWORK_CHANGED
不要急着重装浏览器,也不要一直凭经验猜。
先导出 Chrome NetLog,再把日志交给 ChatGPT 分析,通常能比人工翻日志快得多,也能避免一直在错误方向上排查。
对于这种结构化日志,AI 的优势不是替代分析,而是能够快速串联整个请求链路,帮助我们定位真正值得关注的那几个关键事件。这也是这次排查过程中,我觉得最有价值的经验。