尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

内网穿透终极方案:Cloudflare Tunnel 零基础傻瓜化配置指南

发布时间:2026/9/26 9:06:12

资讯中心
01
ARTICLE

内网穿透终极方案:Cloudflare Tunnel 零基础傻瓜化配置指南

内网穿透终极方案:Cloudflare Tunnel 零基础傻瓜化配置指南
内网穿透这件事我前后折腾过 frp、ngrok、cpolar 好几套方案最后留在 Cloudflare Zero Trust 的 Tunnel 上再没换过。这个方案说白了就是让 Cloudflare 帮你做一条反向出站隧道不需要公网 IP不需要租一台 VPS 当中转也不用在路由器上折腾端口映射只需要一台装了 cloudflared 的机器加上一个能正常解析的域名几步就能把一个本地服务安全地暴露出去。这篇文章就以零基础为假设把整套傻瓜化流程走一遍顺带把我踩过的坑和排查思路一并交代清楚不管你只是想让朋友看到你本地起的页面还是想随时连回家里 NAS都能照着操作。1. 为什么选 Zero Trust先弄懂内网穿透的本质1.1 内网穿透到底解决了什么问题先回到本质。大多数家庭的宽带没有公网 IPv4运营商给的是一个内网地址路由器后面的设备对外完全不可达。可人的需求恰恰相反出差路上想看 NAS 里的资料在家想连办公室的开发机朋友想预览你本地刚做好的页面。设备没有公网入口访问方又不在同一个局域网这就是内网穿透要解决的矛盾。传统的解决办法无非三类。第一类是有公网 IP直接在路由器上做端口映射但很多宽带环境根本拿不到公网 IPv4IPv6 又要求访问端同样具备 IPv6 网络覆盖不全。第二类是租一台公网服务器做中转代表方案是 frp 和 nps灵活但也意味着自己搭、自己维护、自己出服务器钱。第三类是直接用别人做好的隧道服务比如 ngrok、cpolar、樱花内网穿透装个客户端就能用但免费额度通常限制比较大。Cloudflare Zero Trust 的 Tunnel 走的是“半托管”路线隧道基础设施由 Cloudflare 免费提供客户端是开源工具 cloudflared你在自己机器上多跑一个轻量进程就能获得一条比 ngrok 免费版宽松得多的隧道。它同时解决了上述三类方案各自的痛点这也是我最终换过来的核心原因。1.2 与 frp、ngrok、cpolar 放在一起比先说 frp。frp 是真稳定功能也强大TCP、UDP、HTTP 全支持配合 xtcp 还能做 P2P 打洞。但它的前提是你得有一台有公网 IP 的服务器而服务器带宽直接决定穿透体验小水管跑起来很痛苦。更麻烦的是要维护 frps 和 frpc 两边的配置、systemd 服务、TLS 证书出了一点问题排查成本不低。如果你手上已经有服务器frp 确实能打但如果只是为了“偶尔访问一下家里 NAS”专门养一台 VPS 就显得有点过了。再看 ngrok 和 cpolar 这类 SaaS 隧道。它们最大的卖点是零配置装完客户端输入 token 就能拿到一个公网域名。但免费版域名是随机的重启就变还有并发连接数、流量、域名数量等多重限制。拿来临时 demo 可以想长线使用就难受了哪天服务重启了一下之前发给别人的链接就失效了。Cloudflare Tunnel 的优势在于域名由你自己控制子域名固定不变没有按流量计费的说法免费额度对个人使用非常宽松同时自带 HTTPS 证书、基础 DDoS 防护和 WAF 能力。唯一的门槛是你得有一个域名并且把 DNS 托管到 Cloudflare。对本来就用 Cloudflare 做解析的人而言这意味着零新增成本。1.3 Tunnel 的原理为什么不用开端口很多人一听“内网穿透”就想到“路由器端口映射”其实 Tunnel 走的是完全不同的路子。cloudflared 这个进程会在你内网机器上主动向外发起连接连到 Cloudflare 的边缘节点然后保持这条长连接不断开。当用户访问你配置好的子域名时Cloudflare 边缘节点接收请求再通过这条已经被建立好的连接把请求转回你内网机器上的 cloudflared 进程最后由它转发给本地服务。这个过程最妙的地方在于所有连接都是“出站”的路由器上根本不需要开任何入站端口。哪怕你的设备在一个严格限制入站流量的网络里只要它能正常访问外网隧道就能通。类比一下就是你家没有门牌号外人进不来但你自己每天都主动去快递驿站报到驿站收到包裹后再通过你这条“固定路线”送回你家。别人看到的是一个正常的公网域名背后实际的服务器 IP 被完全隐藏了。2. 前置准备域名、客户端和网络环境2.1 需要准备的材料清单这套方案需要的东西很少我列一下清单一个域名最好是.com、.net 这类常见后缀新注册的域名也完全没问题只要能修改 DNS 解析记录就行。一台能联网的设备作为隧道出口可以是家里的旧电脑、NAS、树莓派甚至一台云主机系统不限 Windows / macOS / Linux。一个 Cloudflare 账号免费注册。要暴露的服务本身比如一个本地 Web 服务、SSH、远程桌面随便什么。特别提醒一下域名这一步绕不开。Cloudflare 的命名隧道必须绑定一个你拥有的域名这是方案的门槛。如果现在手上没有域名去注册一个便宜的即可一年几十块的成本大多数人都能接受。那些“免费域名”我也试过稳定性参差不齐关键是不一定支持修改 NS接管起来容易卡住。2.2 把域名托管到 Cloudflare如果你之前没用过 Cloudflare第一步是把域名接管过来。注册账号后进入 Dashboard添加站点输入你的域名。Cloudflare 会自动扫描现有的 DNS 记录问你要不要导入这一步建议选导入后面省事。紧接着它会给你两个 NS 地址类似 xxx.ns.cloudflare.com你需要去你买域名的注册商后台把域名的原始 NS 改成这两个。改完后等生效快的话几分钟慢的话十几个小时Cloudflare 后台显示“Active”就说明接管成功了。这一步虽然有一点等待时间但整体不用怎么操作属于一次性的成本。如果你域名本来就在 Cloudflare 上直接跳过这一节。如果还没有域名千万别在没域名的情况下开始创建隧道后面 Public Hostname 那一步会卡住。2.3 安装 cloudflared 客户端cloudflared 就是隧道的客户端进程是 Cloudflare 开源的工具各平台都有编译好的二进制安装很简单。Windows 上我推荐用 winget命令就一条winget install --id Cloudflare.cloudflared装完重新开一下命令行输入cloudflared --version能看到版本号就说明成功了。Windows 还有一种方式是从 GitHub Releases 页面下载 exe 文件把 exe 放在一个固定目录下比如C:\cloudflared\cloudflared.exe然后自己加 PATH麻烦一点但同样可行。Linux 上如果系统是 Debian/Ubuntu可以走官方仓库sudo apt-get update sudo apt-get install cloudflaredCentOS/RHEL 系列用对应的 rpm 仓库装。不想折腾仓库的话直接下载二进制文件扔到 /usr/local/bin 下给个执行权限也能跑sudo curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared sudo chmod x /usr/local/bin/cloudflaredmacOS 用 brew 一键安装brew install cloudflared。装完之后建议先在命令行里手动跑一次cloudflared tunnel login它会打开浏览器让你选择一个域名授权这一步会生成一个 cert.pem 文件后面创建命名隧道会更顺畅。虽然最新的流程用 token 也行但我习惯先登录一次避免后面出现权限不足的报错。3. 傻瓜操作流程从创建隧道到访问成功3.1 在 Zero Trust 后台创建隧道登录 Cloudflare Dashboard左侧菜单找到 Zero Trust首次进入会让你选团队名称并选一个免费计划。进入 Zero Trust 后台后左侧导航找到 Access点开下面的 Tunnels这就是隧道的管理入口。点击“Create a tunnel”按钮会看到两个选项Cloudflared 和 WARP Connector。这里选 Cloudflared。接下来给它起一个名字比如home-lab这个名称不会直接暴露给用户只用于后台管理随便起个自己能记住的就好。创建完成后页面会展示一条安装命令里面已经包含了一个很长的 token类似cloudflared service install eyJhIjoi...一长串这一刻先别急着关页面token 在后面安装连接器的时候还要用。如果关掉了也没关系Tunnels 列表里点开对应隧道右上角有“Configure”按钮里面能找到同样的安装命令。3.2 安装连接器并让它跑起来刚才复制的那条命令就是让 cloudflared 以系统服务方式运行的安装命令。在目标机器上执行它Windows 下需要用管理员权限打开 PowerShellLinux 下需要用 sudo。命令执行完系统会自动注册一个后台服务Windows 叫 CloudflaredLinux 是 systemd 服务。服务启动后cloudflared 会自动读取 token连上 Cloudflare 边缘节点。此时回到 Tunnels 页面刷新如果隧道状态显示 Healthy就说明连接器已经成功上线。这里有一个细节容易踩坑cloudflared service install装的是系统服务意味着机器重启后隧道会自动恢复不用手动操作这是生产环境该有的姿态。但如果你只是想临时测一下也可以直接前台运行cloudflared tunnel run home-lab前台运行的好处是能看到实时日志方便排查问题。但正式使用建议还是装成服务。Windows 下如果遇到权限不足记得右键 PowerShell 选择“以管理员身份运行”Linux 下如果是普通用户命令前面加 sudo。3.3 配置 Public Hostname 指向本地服务连接器在线只是第一步接下来要告诉 Cloudflare哪个域名对应你本地的哪个服务。回到隧道的配置页找到 Public Hostname 标签页点“Add a public hostname”。这里需要填三个信息Subdomain也就是子域名比如nas。Domain下拉框选择你已经接入 Cloudflare 的域名。Type协议类型HTTP 服务选 HTTPSSH 选 SSH远程桌面选 RDP最常用的是 HTTP。URL填写本地服务的真实地址比如你本地跑了一个服务在 8080 端口就填localhost:8080注意不要加http://前缀。保存之后DNS 记录会自动创建不需要你手动去 DNS 面板加解析。这一步是为啥傻瓜的根本在传统方案里你还要自己判断该用 A 记录还是 CNAME要不要开 CDN 代理在 Cloudflare Tunnel 这里全部自动处理了。配置完成后直接打开浏览器访问你填的子域名比如https://nas.example.com如果一切顺利页面直接出现你本地服务的内容。这一瞬间你会觉得之前折腾 frp 的日子都白费了。3.4 用 Access 策略给隧道加一道锁如果只是把服务裸奔挂在公网上那和直接开端口没区别安全隐患很大。Zero Trust 的价值就在这里你可以在隧道前面加一层身份认证只有指定的邮箱账号能访问其他人连页面都看不到。操作路径在 Zero Trust 后台的 Access → Applications。新建一个自托管应用Self-hosted填刚才配置的域名然后配置 Access PolicyPolicy name 随便起。Session duration 建议默认即可。Action 选 Allow。Rule 里配置允许条件我习惯用 Email 精确匹配只允许自己常用的邮箱登录。也可以配置成 Only allow users from your country比如允许中国地区的访问其他国家全部拒绝。保存之后再访问那个子域名会先弹出一个 Cloudflare Access 的登录页验证通过后才跳转到真实服务。这一步强烈建议做尤其是需要暴露 SSH、远程桌面这类高风险服务的时候。免费计划下支持 50 个用户个人使用绰绰有余。4. 实操排错常见问题与排查技巧4.1 访问出现 502/521/522先按这个顺序检查隧道配置失败最常见的表现就是浏览器报 521 或 522。521 是 Cloudflare 无法连接源站522 是连接超时。遇到这两个错误不要慌按顺序排查先看本地服务有没有监听。命令行执行netstat -ano | findstr 8080Windows或ss -lntp | grep 8080Linux确认端口处于 LISTEN 状态。然后回到 cloudflared 前台日志看有没有 “Registered tunnel connection” 字样连接器在线是基础。再看 Public Hostname 的 URL 填得对不对。这里有个典型误区如果你本地服务绑定的是127.0.0.1那 URL 写localhost:8080没问题但如果你绑定的是某个特定内网 IP就写那个 IP。另外注意 URL 填写时不需要带协议前缀填localhost:8080而不是http://localhost:8080填错会在保存时报错。最后检查 DNS 代理状态。Zero Trust 自动创建的 DNS 记录默认是橙色云朵已代理状态这是正确的。如果之前手动改成了灰色云朵仅 DNS隧道访问会失效需要改回来。4.2 后台显示 Connector 离线创建完隧道、也执行了 service install但后台显示 Offline这种情况我遇到过好几次尤其是 Windows 上。原因通常是 cloudflared 服务没有真正启动或者启动后出错退出。排查方法Windows 下打开服务管理器找到 Cloudflared 服务看状态是否正在运行。如果显示已停止手动启动一次再回 Dashboard 刷新。如果启动报错大概率是安装命令执行时没有管理员权限导致服务注册不完全重新用管理员 PowerShell 执行一次cloudflared service install即可。Linux 下用systemctl status cloudflared查看服务状态。常见问题是 systemd 服务文件里指定的 WorkingDirectory 权限不足或者 token 没有正确传入。另一种情况是机器时间不准导致 TLS 握手失败执行date看一下系统时间偏差太大就同步一下。这问题在旧设备、树莓派上尤其容易出现。4.3 Windows 服务模式和前台运行的差别Windows 下还有一个容易忽略的细节服务方式运行和前台运行环境是不一样的。服务运行时不读取你当前用户的命令行环境变量如果 cloudflared 是手动下载的 exe放在一个带空格的路径下服务注册就可能失败。我的建议是Windows 正式部署时把 cloudflared.exe 放进一个纯英文无空格的目录然后手动创建服务sc create Cloudflared binPath C:\cloudflared\cloudflared.exe service run --token 你的token start auto当然直接用官方推荐命令最省事但如果命令失败就按上面的方式手动注册。还有一个常见问题是 Windows 防火墙拦截出站连接虽然绝大多数情况下出站不会被拦但我确实遇到过安全软件把 cloudflared 当恶意程序杀掉的情况需要手动加白名单。5. 安全加固与典型应用场景5.1 别裸奔每个服务都应该有访问策略我第一次配置隧道的时候图省事直接把 NAS 的 Web 界面暴露了结果一天后日志里全是境外 IP 的扫描记录。虽然 NAS 系统本身安全性不错但这提醒了我一个原则凡是走公网隧道的服务都应该默认加一层 Cloudflare Access 身份认证。配置 Access Application 时服务类型选 Self-hosted域名填你的子域名。Policy 建议设置成“允许指定邮箱 指定国家/地区”的组合。比如允许的邮箱是你的个人邮箱国家/地区选中国。这样即使有人拿到了域名他首先面临的是一个 Cloudflare 的登录页没有你的邮箱权限就完全进不去。特别说明一下SSH 和 RDP 这类非 HTTP 服务也可以通过 Access 保护。Cloudflare 支持在 Access 层面对 SSH 做身份校验但配置复杂度高一些需要安装 cloudflared 的客户端侧配置。如果只是偶尔用一次我建议不通过公网暴露 SSH而是先用 Web 隧道进到内网管理界面再从本机发起连接相当于多一道闸门。5.2 典型场景NAS、开发环境、Webhook 调试说几个我实际用得最多的场景。第一个是 NAS。群晖和威联通的 Web 界面都可以通过 HTTP 隧道直接暴露配上 Access 邮箱验证后出差时打开浏览器登录就能管理文件体验和在家里内网访问几乎一样。配合 Cloudflare 的 CDN 加速静态文件加载速度并不慢至少看照片、传小文件是完全够用的。第二个是本地开发环境。前端项目本地起了 Vite 开发服务器想让甲方远程预览效果直接把 Vite 端口配置成 Public Hostname发个链接过去就行。以前用 ngrok 免费版最烦的就是每重启一次链接就变现在用一个固定子域名刷新页面即可非常稳定。第三个是 Webhook 调试。微信公众平台、支付宝回调这类服务要求你提供一个公网可达的地址。用 Tunnel 把本地某个端口暴露出来直接在代码里打断点调试回调数据这个体验比反复部署到测试服务器舒服太多了。唯一需要注意的就是 Webhook 服务不要加 Access 认证因为对方服务器不会帮你登录这时候要用“DNS 解析 手动配置防火墙规则”的方式来限定来源或者干脆只在你需要调试的时间段开启隧道。6. 免费额度、局限与我的使用体会这套方案最打动我的地方是免费额度对个人用户极其慷慨。Cloudflare Zero Trust 免费计划支持最多 50 个用户、不限数量的命名隧道单个域名下的服务基本可以随便加。和 ngrok 免费版动辄限制连接数、限制域名数量相比Cloudflare 这边几乎感觉不到限制的存在。当然免费计划对每次上传大小有一定限制最大 100MB对于常规页面访问和 API 调用完全够用但如果你要传大文件走隧道还是要想别的办法。局限性也有几个。第一隧道走的是 Cloudflare 的边缘网络国内访问速度取决于你和 Cloudflare 边缘节点之间的链路质量有些地区快有些地区慢整体来说是可用的但不要指望它比国内 BGP 机房直连还快。第二命名隧道要求域名必须托管在 Cloudflare这套方案不适合域名还在其他服务商、又不想迁移 DNS 的场景。第三极少数对延迟极其敏感的本地服务比如在线游戏服务器走隧道并不是好选择延迟抖动会明显一些。我个人在实际使用中最大的感悟是把“暴露服务”这件事当作“发布一个内部应用”来思考而不是当作“开一个端口”。Cloudflare Zero Trust 把身份认证、流量加密、访问控制全部整合到了隧道前面你只需要维护好 cloudflared 这一个进程剩下的安全和可靠性交给边缘网络处理。这和传统 frp 方案“只管打通管道安全全靠自己”的思路完全不同也是我更愿意长期用它的原因。最后再分享一个小技巧如果你有多个设备需要暴露服务不需要每个机器都创建一个隧道。可以在每个设备上装 cloudflared然后用同一个隧道 token 注册多个 connectorCloudflare 会自动负载均衡。比如我家一台 NAS、一台开发机公网入口是同一个域名不同子域名分别指向不同设备的本地端口管理起来非常清晰。这套流程整个走下来真正花在操作上的时间不超过十分钟剩下的都是等待生效和顺手加固的功夫。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。