上周我部署了open claw然后玩崩了,重新部署后又出现了端口不能转发(web也无法访问的问题),今天又梳理了一下大家看看怎么解决的?[我的私有IP地址是172.18.196.44]

1. 重新创建容器

bash

运行
 

docker run -d \

  --name openclaw \

  --restart=always \

  -p 0.0.0.0:18788:18788 \

  -p 0.0.0.0:18789:18789 \

  -p 0.0.0.0:18791:18791 \
  -p 0.0.0.0:18792:18792 \

  -p 0.0.0.0:18794:18794 \

  -p 0.0.0.0:18795:18795\

  -p 0.0.0.0:18796:18796 \

  -v ~/openclaw/data:/home/node/.openclaw \

  --user root \

  ghcr.io/openclaw/openclaw:latest

2. 等待 30 秒,查看日志确认启动成功

bash

运行

docker logs openclaw --tail 20
3. 进入容器配置 socat 转发

bash

运行

docker exec -it openclaw /bin/sh

进入容器后,依次执行以下命令:

bash

运行

# 安装 socat
apt update && apt install socat -y

# 启动转发(后台运行)
socat TCP-LISTEN:18788,fork,bind=0.0.0.0 TCP:127.0.0.1:18789 &
socat TCP-LISTEN:18790,fork,bind=0.0.0.0 TCP:127.0.0.1:18791 &

# 将转发命令加入启动脚本(永久生效)
echo 'socat TCP-LISTEN:18788,fork,bind=0.0.0.0 TCP:127.0.0.1:18789 &' >> /entrypoint.sh
echo 'socat TCP-LISTEN:18790,fork,bind=0.0.0.0 TCP:127.0.0.1:18791 &' >> /entrypoint.sh

# 退出容器
exit
4.临时关闭防火墙(100% 排除拦截)

这是最常见的原因 ——Windows 防火墙拦截了 WSL2 的端口访问,先临时关闭验证:

  1. 以管理员身份打开 Windows PowerShell(Win+X → 选择「Windows PowerShell (管理员)」);
  2. 执行命令关闭所有防火墙:

    powershell

    netsh advfirewall set allprofiles state off
    
  3. 关闭后,立即刷新浏览器,访问地址:

    plaintext

    http://172.18.196.44:18788/__openclaw__/canvas/
5.确认 Windows→WSL2 端口转发规则

如果关闭防火墙仍打不开,检查端口转发是否生效:

  1. 管理员 PowerShell 执行:

    powershell

    # 查看所有端口转发规则
    netsh interface portproxy show all
    # 测试 18788 端口连通性
    Test-NetConnection 172.18.196.44 -Port 18788
    
  2. ✅ 正常结果:
    • portproxy show all 能看到 18788 端口指向 172.18.196.44
    • Test-NetConnection 显示 TcpTestSucceeded: True
  3. ❌ 异常解决:请在管理员 PowerShell 中,按顺序执行以下命令,补全缺失的转发规则:
1. 添加 18788 端口转发规则(核心步骤)

powershell

# 为 18788 端口添加转发,指向 WSL2 的 IP
netsh interface portproxy add v4tov4 listenport=18788 connectaddress=172.18.196.44 connectport=18788
2. 验证规则是否生效

再次执行查看命令,现在应该能看到 18788 和 18789 两个端口了:

powershell

netsh interface portproxy show all
3. 测试连通性

powershell

Test-NetConnection 172.18.196.44 -Port 18788

预期结果TcpTestSucceeded 变为 True

6.强制刷新 Windows 网络

如果连通性测试仍失败,执行以下命令重置网络,确保转发规则生效:

powershell

# 重置端口转发服务
net stop iphlpsvc
net start iphlpsvc

# 刷新网络配置
ipconfig /flushdns

成功:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐