部署openclaw之网络问题 排查解决全攻略
本文主要解决网络问题
网络问题排查
远程 DNS 解析本身是一个非常正确的选择,它能有效防止 DNS 污染,确保 generativelanguage.googleapis.com 能解析到正确的海外 IP。但在你目前的网络环境下,最大的问题是 OpenClaw 根本没能连接上你的代理服务器,导致即便 DNS 是对的,流量也发不出去。
刚才的 netstat 没有返回 LISTENING,说明 HeySocks 的这两个进程(5936 和 17196)只是客户端连接,并不是代理监听服务。
🛠️ 终极排查:寻找真正的代理“守门员”
既然 5936 不是监听端口,那说明VPN可能有一个主进程专门负责监听。请直接运行以下命令,列出系统中所有正在监听的端口:
netstat -ano | findstr LISTENING 💡 为什么远程 DNS 没能救场?
- DNS 只是“地图”:远程 DNS 给了你 Google 的准确坐标(IP),但你的电脑现在还没有连接代理的“车”(代理端口),所以请求还是发不出去。
- fetch failed 的本质:这通常意味着 Node.js 尝试发起连接,但既没有直连权限,又找不到有效的代理路径。
找到可疑的端口直接执行以下操作
- 打开 PowerShell(确保窗口左上角显示的是
Windows PowerShell,而不是命令提示符)。 - 直接粘贴并运行以下这一串复合命令:
$env:HTTPS_PROXY="http://127.0.0.1:1227"; $env:HTTP_PROXY="http://127.0.0.1:1227"; $env:NODE_TLS_REJECT_UNAUTHORIZED="0"; curl.exe -I https://www.google.com 🔍 结果判定
- 如果返回了
HTTP/2 200:恭喜你!1227就是正确的代理门牌号。 - 如果还是
Timeout或失败:请尝试把上面命令中的1227替换为10000或8588再次运行(这两个也是列表中的候选者)。
通过这次排障,你其实已经实践了网络编程中的两个核心概念:
- 端口监听 (Listening):服务器(你的代理软件)在本地开放一个端口等待连接。
- 路由转发:你的程序(OpenClaw)将请求通过环境变量重定向到该本地端口,再由代理软件转发至远程服务器(Google)。
🚀 尝试“强力唤醒”:改用 SOCKS 协议
既然你在之前的 HeySocks 设置中看到了 socks5,我们直接让 curl 尝试 SOCKS5 握手,这通常能跳过协议转换的卡顿。
请在 PowerShell 中执行这行命令(针对 10000 端口):
curl.exe --socks5-hostname 127.0.0.1:10000 -I https://www.google.com 注意:如果运行后立刻返回了200 OK:那么10000就是我们要找的英雄!如果依然闪烁光标超过 10 秒:说明这个端口可能只是一个不转发流量的“黑洞”。
💡 备选方案:换一个端口试试
如果 10000 卡住了,请同样用 SOCKS5 协议测试列表里的 8588 或 1227:
# 测试 8588 curl.exe --socks5-hostname 127.0.0.1:8588 -I https://www.google.com # 测试 1227 curl.exe --socks5-hostname 127.0.0.1:1227 -I https://www.google.com 🚀 试试这个“大招”
与其在这些不确定的端口上浪费时间,我们直接让系统告诉你 HeySocks 到底在用哪个端口。
- 打开 Windows 设置 -> 网络和 Internet -> 代理。
- 看看 “手动设置代理” 那里是不是被 VPN 自动打开了?
- 如果打开了,直接记下那里的 地址和端口。那才是真正的“官方指定出口”。
看到 Connection timed out 且伴随着之前的 invalid version 报错,我们可以得出一个实锤的结论:10000 端口确实是一个 HTTP 代理监听端口,但由于某种原因(可能是 HeySocks 节点失效,或者它需要身份认证),它无法把流量送出外网。
咱们别在这几个“死端口”上耗时间了。既然你的浏览器能正常上网,说明你电脑里一定有一个“活”的出口,只是没在 10000 端口上。
🛠️ 终极找寻方案:从“系统级”抓取端口
请按以下操作,这是找到正确代理的最快路径:
- 直接看 Windows 代理设置:
- 按下
Win + I打开设置。 - 进入 网络和 Internet -> 代理。
- 在 “手动设置代理” 下方,看看那个“代理服务器”开关是否是“开”。
- 如果是开的,请直接把那里的 地址 和 端口 记下来。
- 按下
- 通过 PowerShell 强制读取:
- 它会直接返回类似
127.0.0.1:XXXX的结果。这个 XXXX 就是你浏览器上网用的真正端口!
- 它会直接返回类似
在 PowerShell 里输入这行“黑科技”命令:
(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings").ProxyServer 🚀 找到后如何一键启动?
一旦你拿到了那个真正的端口(比如是 7890 或 1082),直接运行这串命令:
$env:HTTP_PROXY="http://127.0.0.1:XXXX"; $env:HTTPS_PROXY="http://127.0.0.1:XXXX"; openclaw gateway 💡 为什么我会建议你这么做?
- 浏览器能用 = 代理在跑:只要浏览器能打开 Google,说明系统里一定有一个进程在处理
127.0.0.1的请求。通过注册表查询,能绕过 VPN 模糊的 UI 界面,直接拿到它的底层端口。
那个注册表查询命令返回了什么?如果返回为空,说明你的 VPN 可能用了特殊的 TUN 模式或者驱动转发,那样的话,我们得用另一套策略。(事实证明 确实是我的VPN直接启用了系统代理)
总结以后如何启动openclaw gateway (网关)
记得在蓝色图标的powershell里面执行
# 1. 确保代理已注入(每次新开窗口都要执行) $p=(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings").ProxyServer; $env:HTTPS_PROXY="http://$p"; $env:HTTP_PROXY="http://$p" # 2. 强制运行修复后的 Gateway openclaw gateway解决后的效果
解决以后的openclaw tui 终端输出:

openclaw gateway 网关终端输出

以及gemini lab的 API 监控界面也实时更新了这次的token消耗情况,还能看到之前失败的404的报错记录

openclaw架构详解
详见codewiki链接吧,我用codewiki对这个项目进行了分析,界面如下
