cloudflared,不需要服务器和公网 IP 的免费内网穿透,一条命令上手

大家好,我是狂师。

前阵子 Hacker News 首页挂了个老工具,Cloudflare 的隧道服务,页面上一句口号挺扎眼。

Your agent needs a URL, not a laptop.

意思很直白,Agent 要干活,先得有一个公网能访问的地址,光在自己那台笔记本本地跑没用。

现在很多人让 Claude Code、Codex 这类编程 Agent 写程序,程序跑在本地电脑的 3000 端口,自己在本地浏览器打开没问题。想让外部回调打进来,想让同事拿手机看一眼,想让 Agent 自己去接第三方登录,都不行,这些地址出了你自己电脑就没人访问得到。

让外面的人访问到本机服务,解决这类需求有个统称,叫内网穿透。

Hacker News 上翻红的那个工具名叫 cloudflared,就是 Cloudflare 官方给这类需求做的一个隧道客户端。今天这篇就讲它,从原理到选型再到上手实操。

cloudflared 是个什么工具

简单来说,cloudflared 是 Cloudflare 官方出的一个小工具,装在自己电脑上,专门干一件事。

一条命令,把你电脑上的 localhost 变成一个公网 HTTPS 地址。


官网地址https://trycloudflare.com/

你电脑上跑了个网页或者服务,本来只有你自己的浏览器打得开。比如你用 Claude Code、Codex 写了一个网站,启动以后地址通常是:

http://localhost:8000

这个地址只有你自己的电脑能访问。

但运行:

cloudflared tunnel --url http://localhost:8000

# 或者

cloudflared tunnel --url http://localhost:8000 --output json

Cloudflare 就会给你一个类似这样的临时地址:

https://xxx.trycloudflare.com

现在,手机可以打开,朋友可以打开,互联网上的其他服务也可以访问。整个过程不需要买域名,不需要配置 DNS,甚至不需要 Cloudflare 账号。

顺带说一下。网上文章和官方文档里常见的 Quick Tunnels、TryCloudflare,说的都是 quick tunnel 这个免账号模式,TryCloudflare 是官方给起的展示名。工具自始至终只有一个,cloudflared,你装的是它,敲的命令也是它。

名字上有个小坑提前说一句。你查资料时会看到 Cloudflare Tunnel 这个词,那是这套东西在云端的那个部分,跑在 Cloudflare 那头,你不用管它。

它有两种用法。一种是 quick tunnel,临时隧道,零账号零配置,一条命令换一个随机公网地址,用完即弃。另一种是 named tunnel,正式隧道,绑定自己的域名长期跑。日常两种都会用上。

它解决什么问题

核心痛点只有一个,你的服务跑在自己电脑上,别人访问不到。

最典型的是 Webhook 联调

做过支付的人都知道,微信、Stripe 的回调是从人家服务器主动发过来的,人家只认公网地址。你在本地 3000 端口起一个回调接收服务,回调永远打不进来。

以前的路子要么把代码部署到测试服务器再联调,改一次发一次,要么先用内网穿透工具把本地服务捅出去。企微机器人、钉钉回调、GitHub Webhook,全是同一类问题。

第二类是给别人看

H5 页面写完了,产品要拿手机真机验收,二维码扫出来一个他自己电脑才能访问的地址。Allure 报告在本地生成了,想发给出差在外的同事。这些时候要的都是一个能转发的公网地址。

第三类是 AI Coding 带出来的新需求,也是它这次翻红的原因

Agent 写完一个页面跑在本地,你要让它去接第三方登录、收 Webhook,或者让另一个会话里的 Agent 访问这个页面,都得先给这个页面配一个公网入口。

再往大里说,它给了没有公网 IP 的机器一个对外的可能性。学生宿舍、出租屋、公司内网,这些网络里的机器以前只能当客户端。装上 cloudflared 之后可以直接当服务端用,不用买云主机。

和 frp、ngrok 比怎么选

聊内网穿透绕不开两个老名字,ngrok 和 frp。

ngrok 是很多人的启蒙工具。

注册个账号,ngrok http 3000 一敲,随机公网地址就来了。它的问题在免费额度,目前免费档同时在线 3 个隧道,每月 1GB 流量、2 万次 HTTP 请求,随机域名每次都变,自定义域名要付费档才有,HTTP 隧道默认还会先插一个提示页。轻度用够了,要挂域名、要稳定跑,就开始按月交钱。

frp 走的是另一条路,完全自建。

GitHub 上 10.9 万 star 的国产开源项目,Apache 2.0 协议,更新一直很勤。你花几十块钱一个月租一台有公网 IP 的 VPS,服务端跑 frps,内网机器跑 frpc,流量从 VPS 中转。代价也清楚,VPS 的钱、证书的续期、端口的加固,全归你管,出了安全事也是你的责任。

cloudflared 的位置在两者中间,偏省事那头。

它和 ngrok 一样走官方服务器中转,但这台「服务器」是 Cloudflare 的全球边缘网络。临时隧道官方没设月度流量额度,只限 200 个在途请求。正式隧道挂自定义域名,只要把域名托管到 Cloudflare,免费套餐就行。

路由器上常驻的花生壳这类国产工具,免费档限速,轻度临时用可以,重度一般要付费升级,这里就不展开了。

一张表看清差别。

维度 frp ngrok cloudflared
要不要自己的服务器 要,带公网 IP 的 VPS 不要 不要
免费额度 软件免费,服务器自付 3 个隧道,每月 1GB 临时隧道不限月流量,限 200 并发
固定域名 自己域名解析到 VPS 付费档才有 域名托管到 Cloudflare 即可
HTTPS 证书 自己申请续期 官方托管 自动配好
国内访问速度 看你 VPS 在哪 海外节点为主 走海外边缘,看时段
上手门槛 服务端客户端两套配置

选法其实简单。临时给人看一眼、调一次回调,quick tunnel,三十秒的事。要长期固定域名,顺手白嫖 Cloudflare 的 CDN 和防护,named tunnel。国内访问速度是硬指标、数据只想走自己的机器,老老实实 frp 加国内 VPS。

怎么安装

macOS 一条命令,Homebrew 直接装。

brew install cloudflared

装完验证一下。

cloudflared --version

Debian 和 Ubuntu 用 Cloudflare 官方源。

sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update && sudo apt-get install cloudflared

RHEL 系加一个 repo 文件再装。

curl -fsSl https://pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
sudo yum update && sudo yum install cloudflared

提一个坑。Cloudflare 在 2025 年 10 月换过 Linux 源的签名密钥,旧密钥 2026 年 4 月已经停用,网上老教程里的旧命令装不上,照上面的新命令来。

Windows 去 GitHub Releases 下载 msi 安装包,一路下一步。不方便装的用户,所有平台都能从 GitHub Releases 直接下二进制,Docker 用户还有官方镜像 cloudflare/cloudflared。

看到这里,恭喜你,已经超过了80%的人了,告诉你一个好消息,cloudflared是开源的,目前在GitHub上已经获得了超1.5W+ star了,你可以随便自己造。

https://github.com/cloudflare/cloudflared

先跑一条临时隧道

本机把服务跑起来,比如 3080 端口 (本地的DeepSeek Harness服务),然后一条命令。

cloudflared tunnel --url http://localhost:3080

终端会打出一个方框,里面是一个 https 开头的地址,长得像 https://random-words-1234.trycloudflare.com

任何人访问这个地址,到的就是你本机 3080 端口的服务。HTTPS 由 Cloudflare 边缘直接终结,证书有效,不用你管。

https://directly-adaptor-yellow-gdp.trycloudflare.com

全程不需要注册账号,不需要域名,不需要配置文件。

但需要注意,quick tunnel 是前台进程,关掉终端 / Ctrl+C,隧道立刻断,链接就失效了。

每次重启都变:quick tunnel 的域名是随机生成的(sort-bear-inclusion-...),关掉重跑就不是这个地址了。

想要固定域名,配正式隧道

临时隧道用完即弃,要长期对外、要固定地址,就得配正式隧道。前提只有一个,你有一个域名,并且把它托管到 Cloudflare,免费套餐就行。

流程四步。

第一步,登录授权。

cloudflared tunnel login

浏览器弹出授权页,选中你的域名,本地 ~/.cloudflared 下会生成一张证书。

第二步,创建隧道。

cloudflared tunnel create ai-env

命令会输出隧道的 UUID,同目录下多出一个同名 json 凭证文件。

第三步,写配置文件 ~/.cloudflared/config.yml

url: http://localhost:8080
tunnel: <Tunnel-UUID>
credentials-file: /home/you/.cloudflared/<Tunnel-UUID>.json

一个隧道只对一个服务时,url 这一行就够了。要一条隧道挂多个域名、多个服务,官方文档里有 ingress 规则的写法。

第四步,绑定域名并启动。

cloudflared tunnel route dns ai-env ai.testfather.cn
cloudflared tunnel run ai-env

route dns 会自动在 Cloudflare 里给 ai.testfather.cn 加一条 CNAME 指向隧道。run 起来之后,这个域名在全球任何地方都能访问到你本机的 8080 端口。要长期挂机,官方文档有把它注册成 systemd 服务或 Windows 服务的做法,开机自启。

一个容易被公司网络卡住的细节。防火墙封得严的环境,确认放行了 7844 端口的出站流量,cloudflared 靠它和边缘节点建立连接。

写在最后

文中的命令和数字,我对着 Cloudflare 官方文档和 GitHub 仓库实操核过一遍。工具迭代快,免费额度、签名密钥这类细节会变,以你用时官方页面的为准。

这么老的工具还能翻红,靠的是需求一直在。Agent 写的页面、支付回调、真机验收,要的都是同一个东西,一个别人能访问到的地址。遇到坑,评论区聊。

posted @ 2026-09-22 09:13  狂师  阅读(11)  评论(0)    收藏  举报