实战SOP:CodeArts用CF CLI搭隧道转发

举报
shuai1021 发表于 2026/11/05 10:24:55 2026/11/05
【摘要】 把本地服务暴露到公网的需求告诉码道CodeArts,让它操作cloudflared CLI完成隧道转发全流程。本文记录四步从本地到公网的过程,含快速隧道与命名隧道区别、排障状态码、进程守护和安全要点,给用AI Agent做网络配置的人一个参考。

背景:本地服务要让外网访问,隧道转发一条命令的事

开发时本地跑了个服务,想让外网访问——做Webhook联调、给同事预览、让AI Agent接回调。以前要么买域名配DNS,要么用内网穿透工具手动配。现在Cloudflare出了个叫cloudflared的CLI工具,一条命令就能把本地端口变成公网HTTPS地址。

这次更进一步:不自己敲命令,把需求告诉码道CodeArts,让它操作cloudflared CLI完成隧道转发。从安装到建隧道到验证,全程自然语言驱动。本文记录整个过程,给想用AI Agent做网络基础设施配置的人一个参考。

方案:四步从本地到公网

整体流程

步骤 人工做的事 CodeArts做的事
1.说需求 描述本地服务和端口 解析需求,规划执行步骤
2.装CLI 确认执行 下载安装cloudflared
3.建隧道 无 运行快速隧道命令,获取公网地址
4.验证 无 用curl测试公网地址是否可达

第一步:用自然语言下指令

打开码道CLI,输入需求:

帮我用cloudflared把本地8000端口的服务通过隧道转发到公网,
要求:
1. 先检查cloudflared是否已安装,没有就装
2. 用快速隧道模式(不需要账号)
3. 启动隧道后把公网地址告诉我
4. 用curl验证公网地址能访问到本地服务

CodeArts收到后列了个四步执行计划,每步标注要跑的命令和预期结果。

第二步:安装cloudflared

CodeArts先检查是否已安装:

# 检查是否已安装
which cloudflared || echo "NOT_INSTALLED"

# 没装则安装(Debian系)
# 从Cloudflare官方发布页下载对应架构的deb包
sudo dpkg -i cloudflared-linux-amd64.deb

# 验证
cloudflared --version

输出显示版本号,安装成功。这步如果手动做,得先查系统架构选对安装包,CodeArts自己判断了是x86_64用amd64包。

第三步:启动快速隧道

快速隧道不需要Cloudflare账号,一条命令出公网地址:

# 后台启动隧道,输出JSON格式方便解析
cloudflared tunnel --url http://localhost:8000 --output json &
TUNNEL_PID=$!

# 等几秒让隧道建立
sleep 3

# 从输出中提取公网URL
# JSON输出里有个hostname字段,就是公网地址

CodeArts启动隧道后,从JSON输出里解析出公网地址,格式类似一串随机字符加固定后缀。它把这个地址记下来,用于下一步验证。

这步有个细节:cloudflared的JSON输出是流式的,地址不是立刻就有,要等隧道建立完成。CodeArts用了轮询方式,每秒检查一次输出里有没有hostname字段,最多等10秒。手动做这步容易直接读第一行输出发现没有地址就以为失败了。

第四步:验证公网可达

# 用curl测试公网地址
curl -s -o /dev/null -w "%{http_code}" https://<隧道地址>/

# 预期输出: 200 或 302(取决于本地服务)
# 如果返回 530: 隧道没连上,检查cloudflared进程
# 如果返回 502: 隧道通但本地服务没响应,检查8000端口

CodeArts跑完curl,返回200,确认公网地址可达。它还额外跑了ps aux | grep cloudflared确认隧道进程在运行,比手动做多了个存活检查。

实践要点

  1. 快速隧道是临时的:重启cloudflared后公网地址会变。如果需要固定地址,得用命名隧道(Named Tunnel),需要Cloudflare账号和自定义域名。CodeArts可以帮你走完整流程,但需求描述里要说明"要固定的"还是"临时的"。

  2. 让CodeArts区分两种模式:

    • 快速隧道(Quick Tunnel):零账号零配置,一条命令出随机地址,用完即弃,适合临时联调
    • 命名隧道(Named Tunnel):绑域名长期跑,需要创建隧道、配DNS路由、写配置文件,步骤多但地址固定

    说清楚要哪种,CodeArts才知道走哪条路径。不说的话它默认用快速隧道,够用但不持久。

  3. 隧道进程要守护:cloudflared不是systemd服务,终端关了隧道就断。让CodeArts用nohup或写个systemd unit保活。这步很多人忘,第二天发现地址访问不了,以为隧道坏了,其实是进程没了。

  4. 排障记住两个状态码:

    • 530:隧道本身没连上(cloudflared进程死了或网络不通)→查进程和网络
    • 502:隧道通了但回源失败(本地服务没监听或端口不对)→查本地服务

    把这两个码告诉CodeArts,它排障时能快速定位是哪层的问题,不用从头查。

  5. 安全注意:隧道一旦建立,公网任何人都能访问你的本地服务。临时联调完记得关隧道。让CodeArts在验证通过后提示你是否保留,不要一直开着暴露本地服务。

小结

用CodeArts操作cloudflared搭隧道转发,核心价值不在省命令(一共也就三四条),而在省认知——不用记住快速隧道和命名隧道的区别,不用查JSON输出的字段名,不用知道530和502代表什么。把这些知识交给AI Agent,你只需要说清楚"把哪个端口转到公网"。

从效率看,手动搭隧道约15分钟(含查文档和等隧道建立),用CodeArts约3分钟。差距主要在"不用查文档确认参数"和"不用手动从输出里找公网地址"这两点上。对于不常做网络配置的人,AI Agent兜底的价值更明显——说对需求就行,执行细节不用管。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。