为什么你的OpenClaw需要内网穿透?
\n\n很多人在本地成功部署OpenClaw后,都会遇到一个现实问题:如何在外网访问家里或公司内网的OpenClaw服务?
\n\n想象这些场景:
\n- \n
- 你在公司部署了OpenClaw,回家想继续调试Agent配置 \n
- 你的OpenClaw运行在NAS或闲置笔记本上,需要在外网随时调用 \n
- 你想让团队成员通过公网访问你内网的OpenClaw服务 \n
- 你需要在外网通过飞书/钉钉机器人调用内网的OpenClaw \n
这些场景的核心痛点是:OpenClaw部署在内网,没有公网IP,外部无法直接访问。
\n\n本文基于我实际部署经验,分享3种经过验证的内网穿透方案,从免费到企业级,帮你选择最适合的方案。
\n\n内网穿透的核心原理(5分钟搞懂)
\n\n很多人对"内网穿透"有误解,以为需要复杂的网络配置。其实原理很简单:
\n\n\n[外网设备] → [公网服务器/中转服务] → [内网OpenClaw]\n ↑ ↑ ↑\n 你的手机 有公网IP的桥梁 家里没有公网IP的电脑\n\n\n
核心思路:让内网的设备主动"连接"到公网的桥梁服务器,建立一条加密隧道。外网访问时,流量先到桥梁服务器,再通过隧道转发到内网设备。
\n\n这就像:你家住在深巷里(内网),快递员找不到(外网访问不了)。你在巷口找个代收点(公网服务器),让快递先寄到代收点,你再去取(建立隧道)。
\n\n方案对比:3种内网穿透方案深度评测
\n\n| 方案 | \n适用场景 | \n成本 | \n难度 | \n稳定性 | \n
|---|---|---|---|---|
| frp(自建) | \n有公网服务器,追求完全掌控 | \n服务器费用 | \n⭐⭐⭐ | \n⭐⭐⭐⭐⭐ | \n
| cpolar(第三方) | \n快速验证,不想折腾服务器 | \n免费/付费 | \n⭐ | \n⭐⭐⭐ | \n
| 花生壳(商业) | \n企业场景,需要SLA保障 | \n付费 | \n⭐ | \n⭐⭐⭐⭐ | \n
我的建议:个人用户先用cpolar免费版验证可行性,确认需求后再考虑frp自建或升级付费方案。
\n\n实战方案1:frp自建(完全掌控,推荐技术用户)
\n\n为什么选择frp?
\n\nfrp(fast reverse proxy)是开源的内网穿透工具,也是目前最成熟的方案。优势:
\n- \n
- 完全开源免费,代码在GitHub可查 \n
- 性能可控,取决于你的服务器配置 \n
- 支持多种协议,TCP/HTTP/HTTPS都支持 \n
- 配置灵活,可以精细化控制每个隧道的权限 \n
实际部署步骤(基于我的生产环境)
\n\n前提条件:
\n- \n
- 一台有公网IP的服务器(我用的是阿里云ECS,1核1G就够) \n
- 内网设备已安装OpenClaw(默认端口18789) \n
- 服务器安全组放行相应端口(我用的7000和18789) \n
第一步:在公网服务器安装frp服务端(frps)
\n\n\n# 下载frp(以Linux为例,版本请访问GitHub获取最新)\nwget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz\n\n# 解压\ntar -zxvf frp_0.61.1_linux_amd64.tar.gz\ncd frp_0.61.1_linux_amd64\n\n# 编辑服务端配置(frps.toml)\nvim frps.toml\n\n\n
frps.toml 配置内容(我的实际配置):
\n\n\nbindPort = 7000\nauth.token = "你的安全令牌,建议随机生成"\n\n# Dashboard配置(可选,用于监控)\nwebServer.addr = "0.0.0.0"\nwebServer.port = 7500\nwebServer.user = "admin"\nwebServer.password = "设置强密码"\n\n\n
第二步:启动frp服务端
\n\n\n# 前台测试(确认配置无误)\n./frps -c frps.toml\n\n# 后台运行(确认没问题后)\nnohup ./frps -c frps.toml > frps.log 2>&1 &\n\n# 或者配置systemd服务(推荐)\nsudo vim /etc/systemd/system/frps.service\n\n\n
systemd服务配置:
\n\n\n[Unit]\nDescription=frp server\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/你的路径/frps -c /你的路径/frps.toml\nRestart=on-failure\nRestartSec=5s\n\n[Install]\nWantedBy=multi-user.target\n\n\n
然后执行:
\n\n\nsudo systemctl daemon-reload\nsudo systemctl enable frps\nsudo systemctl start frps\nsudo systemctl status frps # 确认运行状态\n\n\n
第三步:在内网设备安装frp客户端(frpc)
\n\nWindows系统下载对应的frp Windows版本,解压后编辑 frpc.toml:
\nserverAddr = "你的公网服务器IP"\nserverPort = 7000\nauth.token = "与服务端一致的令牌"\n\n[[proxies]]\nname = "openclaw-web"\ntype = "tcp"\nlocalIP = "127.0.0.1"\nlocalPort = 18789\nremotePort = 18789\n\n\n
第四步:启动frp客户端
\n\nPowerShell执行(管理员权限):
\n\n\n# 测试连接\n.\\frpc.exe -c frpc.toml\n\n# 无报错后,配置为Windows服务(实现开机自启)\n# 下载NSSM工具:https://nssm.cc/download\nnssm install frpc "C:\\frp\\frpc.exe" "-c C:\\frp\\frpc.toml"\nnssm start frpc\n\n\n
第五步:验证穿透是否成功
\n\n- \n
- 外网访问:
http://你的公网服务器IP:18789\n - 如果能看到OpenClaw登录界面,说明穿透成功 \n
- 检查frp服务端Dashboard:
http://你的公网服务器IP:7500\n
实战方案2:cpolar第三方服务(5分钟快速验证)
\n\n如果你没有公网服务器,或者只是想快速验证内网穿透的可行性,cpolar是最简单的选择。
\n\ncpolar的优势和局限
\n\n优势:
\n- \n
- 免费版可用,无需信用卡 \n
- 配置极简,图形化界面 \n
- 自动生成公网域名(虽然每次重启会变) \n
局限:
\n- \n
- 免费版隧道会在24小时后失效 \n
- 域名随机生成,不适合生产环境 \n
- 流量经过第三方服务器,隐私敏感场景慎用 \n
cpolar配置步骤
\n\n第一步:注册并下载cpolar
\n\n- \n
- 访问 cpolar官网 注册账号 \n
- 下载Windows客户端并安装 \n
- 获取你的认证token(在控制台的Auth页面) \n
第二步:配置cpolar隧道
\n\n\n# 认证cpolar(第一次使用时)\ncpolar authtoken 你的token\n\n# 创建HTTP隧道,映射本地18789端口\ncpolar http 18789\n\n\n
执行后会显示类似输出:
\n\n\nForwarding https://xxxx.cpolar.io -> localhost:18789\n\n\n第三步:测试访问
\n\n
- \n
- 外网访问显示的
https://xxxx.cpolar.io地址 \n - 如果看到OpenClaw界面,说明穿透成功 \n
第四步(可选):配置为Windows服务
\n\n\n# 配置cpolar为服务(开机自启)\ncpolar service install\n\n# 启动服务\ncpolar service start\n\n\n
安全加固:穿透后必须做的3件事
\n\n内网穿透后,你的OpenClaw本质上暴露在了公网上。安全配置不到位,等于把家门向互联网敞开。
\n\n1. 配置OpenClaw的allowedOrigins
\n\n在OpenClaw的配置文件中,添加公网访问域名到允许列表:
\n\n\n{\n "gateway": {\n "allowedOrigins": [\n "https://你的域名或cpolar域名",\n "http://localhost:18789"\n ]\n }\n}\n\n\n2. 启用HTTPS(生产环境必做)
\n\n如果使用frp,建议在frp服务端前置Nginx,配置SSL证书:
\n\n\n# Nginx配置示例\nserver {\n listen 443 ssl;\n server_name openclaw.你的域名.com;\n \n ssl_certificate /path/to/cert.pem;\n ssl_certificate_key /path/to/key.pem;\n \n location / {\n proxy_pass http://127.0.0.1:18789;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n }\n}\n\n\n3. 配置访问认证(双层保护)
\n\n除了OpenClaw自带的认证,建议在frp或Nginx层再加一层HTTP Basic Auth:
\n\n\n# 安装apache2-utils(用于生成密码文件)\nsudo apt install apache2-utils\n\n# 生成密码文件\nhtpasswd -c /etc/nginx/.htpasswd openclaw_user\n\n# Nginx配置中加入认证\nlocation / {\n auth_basic "Restricted Access";\n auth_basic_user_file /etc/nginx/.htpasswd;\n proxy_pass http://127.0.0.1:18789;\n}\n\n\n常见问题排查(我踩过的坑)
\n\n问题1:frp客户端连接服务端失败
\n\n现象:login to server failed: EOF
原因:
\n- \n
- 防火墙未放行7000端口 \n
- token配置不一致 \n
- 服务端未正常启动 \n
解决方案:
\n\n# 检查服务端状态\nsudo systemctl status frps\n\n# 检查端口监听\nsudo netstat -tulpn | grep 7000\n\n# 检查防火墙(阿里云还需检查安全组)\nsudo ufw status\nsudo ufw allow 7000/tcp\n\n\n
问题2:穿透成功但访问超时
\n\n现象:frp显示隧道建立成功,但浏览器访问超时
\n\n原因:通常是localIP配置错误。如果OpenClaw运行在WSL2里,127.0.0.1可能指向错误。
解决方案:
\n\n# 查看WSL2的实际IP\nwsl hostname -I\n\n# 修改frpc.toml中的localIP为WSL2的IP\nlocalIP = "172.x.x.x"\n\n\n
问题3:cpolar免费版隧道频繁失效
\n\n现象:每天都需要重新创建隧道,域名变化
\n\n解决方案:升级cpolar付费版(保留固定域名),或者切换到frp自建方案。
\n\n性能优化:让穿透后的OpenClaw更流畅
\n\n内网穿透会引入额外的网络延迟。以下是我在实际部署中总结的优化技巧:
\n\n1. 选择合适的服务器地域
\n\n如果你的OpenClaw在上海,frp服务器选在上海或邻近区域,延迟可以降低20-40ms。
\n\n2. 启用frp的压缩和加密
\n\n在frpc.toml中:
\n[[proxies]]\nname = "openclaw-web"\ntype = "tcp"\nlocalIP = "127.0.0.1"\nlocalPort = 18789\nremotePort = 18789\nuseCompression = true\nuseEncryption = true\n\n\n
3. 调整OpenClaw的超时配置
\n\n穿透后的网络不稳定,建议适当增加超时时间:
\n\n\n{\n "gateway": {\n "timeout": 60000\n }\n}\n\n\n总结与建议
\n\n经过上述配置,你的OpenClaw已经可以在公网安全访问了。回顾一下关键要点:
\n\n- \n
- 个人用户:先用cpolar免费版快速验证,确认需求后再考虑长期方案 \n
- 技术用户:frp自建是最优选择,完全掌控,成本低 \n
- 企业用户:考虑商业方案(花生壳/神卓互联),有SLA保障 \n
- 安全永远是第一位的:HTTPS、访问认证、allowedOrigins,一个都不能少 \n
内网穿透只是手段,核心目标是让你的OpenClaw真正成为"随时随地可及的私人AI助手"。
\n\n如果你在配置过程中遇到问题,或者有更好的优化方案,欢迎在评论区交流。
\n\n\n\n
相关阅读:
\n\n\n本文基于作者实际部署经验撰写,所有配置都在生产环境验证通过。转载请注明出处。
\n版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论