不得不服chatgpt

📅 2026/7/3 5:29:03 👁️ 阅读次数 📝 编程学习
不得不服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

然后:

  1. 打开有问题的网址
  2. 出现错误
  3. Stop Logging
  4. 导出 netlog.json

这个 JSON 记录了 Chrome 从发起请求到失败的整个过程。


三、日志怎么看?

我最开始看到的是:

{"proxy_info":"DIRECT"}

这句已经非常重要了。

它说明:

Chrome 根本没有走代理。

也就是说:

  • 不是 SwitchyOmega
  • 不是系统代理
  • 不是 PAC
  • 不是 HTTP Proxy

这一步直接排除了之前折腾半天的方向。


继续往后看:

日志里面出现:

TCP_CONNECT_ATTEMPT

随后:

os_error: 65

紧接着:

net_error: -109

Chrome 把它翻译成:

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 正常

建议按下面顺序排查:

  1. 导出 Chrome NetLog(chrome://net-export/)

  2. 查看是否为:

    proxy_info : DIRECT
  3. 查看:

    TCP_CONNECT

    后面的:

    net_error
  4. 如果是 macOS,检查:

    系统设置 → 隐私与安全性 → 本地网络 → Google Chrome
  5. 打开权限,重启 Chrome。

后记:日志 + ChatGPT,比盲猜快得多

这次最大的收获,不是知道了macOS 本地网络权限这个知识点,而是改变了排查问题的思路。

以前遇到网络问题,经常会按照经验去猜:

  • 是不是代理?
  • 是不是浏览器插件?
  • 是不是 DNS?
  • 是不是缓存?

包括我一开始用 Gemini 排查时,它也一直建议我检查代理、浏览器插件、重装 Chrome 等方向。虽然这些建议并没有错,但始终没有真正定位到问题。

后来换了一个思路:

  1. Chrome NetLog (chrome://net-export/)把完整网络日志导出来;
  2. 直接把netlog.json丢给 ChatGPT 分析。

效果比我预期的好很多。

ChatGPT 并不是简单地猜原因,而是根据日志里的每一步网络事件进行推理,例如:

  • proxy_info: DIRECT→ 排除代理问题;
  • TCP_CONNECT→ 排除 DNS 问题;
  • os_error: 65net_error: -109→ 判断错误来自 macOS 网络层,而不是浏览器本身。

这样很快就把排查范围缩小到了Chrome 与系统网络权限,最终发现是:

macOS「系统设置 → 隐私与安全性 → 本地网络」没有授予 Google Chrome 权限。

一个值得分享的小经验

以后遇到浏览器网络问题,尤其是:

  • ERR_ADDRESS_UNREACHABLE
  • ERR_CONNECTION_REFUSED
  • ERR_TIMED_OUT
  • ERR_NETWORK_CHANGED

不要急着重装浏览器,也不要一直凭经验猜。

先导出 Chrome NetLog,再把日志交给 ChatGPT 分析,通常能比人工翻日志快得多,也能避免一直在错误方向上排查。

对于这种结构化日志,AI 的优势不是替代分析,而是能够快速串联整个请求链路,帮助我们定位真正值得关注的那几个关键事件。这也是这次排查过程中,我觉得最有价值的经验。