卧槽!局域网访问被拒?OpenClaw 这个坑我替你踩了!
人工智能 网络服务 技术分享 端口绑定 局域网访问 踩坑实录 OpenClaw 5

😱 开篇暴击:明明配置是对的,为什么连不上?!

兄弟们,今天真的被 OpenClaw 搞破防了。

事情是这样的:我在 Mac mini 上跑了个 OpenClaw 的 Agent,本机 localhost:29876 访问丝滑无比,WebUI 界面美滋滋。想着躺沙发上用 MacBook Air 远程调戏一下 AI,结果输入 http://192.168.3.28:29876……

Connection Refused。

我当时就懵了。

第一反应:防火墙?查了,关着的。
第二反应:IP 输错了?查了,没错。
第三反应:配置文件写错了?打开 openclaw.json 一看:

"gateway": {
  "bind": "lan",  // 这里明明写着 lan 啊!
  "port": 29876
}

官方文档说 bind: "lan" 就是监听 0.0.0.0,也就是允许局域网访问。配置没毛病,网络没毛病,但它就是死活连不上

那一刻,我感觉我的智商受到了侮辱。🤬


🕵️‍♂️ 抽丝剥茧:谁在搞鬼?

既然配置是对的,那肯定是实际运行状态出了问题。

我祭出了大杀器 lsof,想看看 29876 端口到底是谁在用,监听在哪个 IP 上。

lsof -i :29876

结果显示:

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node      2236   sisuad 16u  IPv4 0x3665...   0t0  TCP localhost:29876 (LISTEN)

破案了!

注意看最后一行:localhost:29876 (LISTEN)
这意味着这个进程(PID 2236)只监听了本地回环地址 (127.0.0.1),根本没有监听 0.0.0.0

真相只有一个
这个 PID 2236 是一个僵尸进程!它可能是我之前测试时启动的,当时用的配置是默认的 loopback。后来我虽然改了配置文件为 lan,但这个老进程一直没死,占着茅坑不拉屎,新配置根本没生效!


✨ 高光时刻:一行命令教做人

既然找到了“内鬼”,解决办法就简单粗暴了:杀掉它,重启!

1. 处决僵尸进程 🧟‍♂️

kill -9 2236

(注意:你的 PID 可能不一样,用 lsof 查出来的那个)

2. 满血复活 🚀

重新启动 OpenClaw Gateway,这次它会乖乖读取新的配置文件:

nohup node openclaw.mjs gateway run > /tmp/openclaw.log 2>&1 &

3. 见证奇迹

再次检查端口状态:

lsof -i :29876

输出变成了:

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node      2950   sisuad 15u  IPv4 0x3665...   0t0  TCP *:29876 (LISTEN)

看到那个 *:29876 了吗?这就代表它监听了所有接口(0.0.0.0)!

回到 MacBook Air,刷新页面…… 通了! 🎉🎉🎉


📝 避坑指南:血泪总结

  1. 不要盲目信配置:配置文件写对了,不代表程序当前运行的状态就是对的。
  2. 端口被占是常态:Node.js 开发经常遇到进程没退干净的情况,lsof -i :端口号 是永远的神。
  3. 重启大法好:遇到这种玄学问题,先杀进程重启,能解决 90% 的问题。
  4. 绑定地址要看清
    • 127.0.0.1 (localhost) = 只能本机玩。
    • 0.0.0.0 (*) = 局域网大家一起玩。

希望这篇踩坑实录能帮到同样在深夜怀疑人生的你!如果觉得有用,点个赞再走呗~ 😉

卧槽!局域网访问被拒?OpenClaw 这个坑我替你踩了!
https://sisuad.cn/archives/d6da6e80-4310-4e83-ad71-35ed99ce81cc
作者
Engr_Peng
发布于
更新于
许可