侧边栏壁纸
博主头像
一万AI分享

聚焦AI、数码、未来趋势,用内容解码科技世界。下一代的改变,今天开始讲给你听。

  • 累计撰写 23 篇文章
  • 累计创建 11 个标签
  • 累计收到 26 条评论

目 录CONTENT

文章目录

Cloudflare Tunnel终极指南:告别公网IP,随时随地安全访问你的家庭服务!

一万AI分享
2025-09-01 / 3 评论 / 3 点赞 / 244 阅读 / 0 字

--- **(引言)**

大家好!相信很多人都有这样的烦恼:家里的NAS、媒体服务器(比如MoonTV、Emby、Jellyfin),明明资源丰富,但只有在家才能看?一到办公室想摸鱼追剧,或者出差在外想访问家里的文件,是不是就犯愁了?特别是那些没有公网IPv4的朋友,是不是觉得居家服务器就是个“局域网摆设”?

之前有朋友问我,他在家里部署了如MoonTV之类的影视服务,只有在家的时候才可以观看,他想知道有没有办法让他在办公摸鱼的时候也能接着追剧。我就告诉他我之前出过一期获取固定IPv6的视频,那期有教大家如何将本地端口映射到公网使用。但是他说公司的网络不具备IPv6访问的能力,让我再帮他想其他办法。他的要求是要安全,最好能使用HTTPS访问,避免中间人攻击。

这个问题确实是一部分国内用户的痛点。家庭用户现在获取公网IPv4的难度不亚于登月。部署frp之类的组网方案费用又少不了(至少得有一台服务器做中转,或者使用站点中转又不安全)。那么有没有既不需要太多开销又安全的解决方案呢?肯定有!我们可以使用Cloudflare(以下简称CF)的Tunnels(也就是隧道)完美解决这个问题。CF的隧道对OpenWrt系统和Docker的支持都非常好。这里我将给大家演示如何在OpenWrt系统和飞牛NAS系统中部署。我们需要的开销仅仅是每年不到一杯奶茶钱(只包含域名费用)。整个过程非常简单,相信大家一看就会。接下来就开始吧。


第一步:准备一个域名

在创建CF隧道之前,我们需要提前购买一个域名。推荐大家使用Namecheap或者Dynadot这样的网站去购买.xyz域名,或者可以直接在CF中注册购买也可以,反正价格都差不多,都不需要备案。在CF中直接注册购买,还少了一步将域名交给CF解析的过程。下面我将给大家演示在CF中注册购买。

看过往期内容的读者相信大家已经有了自己的CF账号。如果没有的话,大家先去申请一个自己的CF账号,非常简单,这里就不重复演示了。登录后在CF的主页选择注册新域。这里推荐大家注册一个6位或者7位纯数字域名(因为便宜)。我以 6610000.xyz为例给大家演示。

我们可以看到这个域名每年也就是不到1美元,非常便宜。选择购买,这里的信息除了付款信息不用完全实名。需要注意这里的付款信息,建议使用Visa卡或者万事达卡进行购买。当然如果你有PayPal账号也可以。全部填好之后选择验证地址,之后选择完成购买。稍等片刻,就提示您购买成功了。

当然,如果你没有这种付款信息的话,也可以在国内平台中进行购买后选择使用CF进行托管。托管类的教程网上太多了,这里就不过多赘述了。如果你在这方面有疑问,可以在我的博客中找到这篇教程的主题文章,我会将托管方法以文字和图片的形式向你展示。

24def41546cfada2907b5d8e1bb830db.png
e70eabe6be1e210ff594d03b0464a70c.png
22367630b7e2aeb08c763c30a8205060.png


第二步:配置SSL/TLS 加密方式

搞定域名之后,我们需要进入此域名的控制面板,点击“SSL/TLS”,将加密方式改为“灵活”(Flexible),并保存。这一步是为了确保CF能够处理你从本地发送的HTTP请求,并在边缘将其加密为HTTPS,保障安全访问。


第三步:Cloudflare Zero Trust 设置

接着,回到CF主页,找到并点击“Zero Trust”。这里会要求你填写一个团队名称(不重要)。选择免费的计划就可以,选择“继续付款”(这里不会扣费),一路下一步直到进入 Zero Trust。

能看到这里的读者恭喜你,这个教程里最难的部分你已经解决了,剩下的内容对于你来说会非常简单。我们点击“网络”->“Tunnels”,选择“添加隧道”,选择第一个“Cloudflared”(不用考虑第二个,暂时和大家没关系)。为我们的隧道起个名字(不重要),点击“保存隧道”。然后将这个页面先停留在这里。


第四步:创建隧道并部署客户端 - OpenWrt篇

去到我们的OpenWrt系统中安装客户端。在“系统”->“软件包”中,先点击“更新列表”。更新完之后在过滤器中搜索 cloudflared。选择安装 luci-i18n开头的这个中文语言包就行,它会自动将我们所需要的插件都一并安装。安装完成后刷新页面,找到我们安装的Cloudflared插件,通常它会以“Cloudflare 零信任隧道”的名称出现。打开它,在启用后打勾。然后回到刚才的页面。点击“复制令牌”信息。

回到OpenWrt中将我们复制的令牌信息粘贴回令牌一栏中。需要注意的是,将 ey开头的命令删除,仅保留 ey开头的令牌信息(非常重要),保存并应用。回到CF隧道中,不出意外的话,我们的连接信息就会出现在这里了。需要看到这个连接器之后才可以进行下一步。


第五步:配置公共主机名(远程访问)

好的,我们选择下一步。这里不要被这些你不懂的名词唬住,它就是添加你想要远程访问的服务而已。很简单,跟着我一步一步来。在“子域”中填写一个子域名,比如填 op可以代表OpenWrt系统,填 fn可以代表使用 fn.你的域名.xyz来访问你的飞牛NAS。在“域”这一项中选择你刚购买的域名,或者是你在别处买来托管在CF中的。路径可不选。类型选择HTTP(注意不是HTTPS),在URL中填写 127.0.0.1:80(这里你可以填写你OpenWrt系统的真实内网IP,80是访问端口)。最后检查一下,没问题,选择“完成设置”。

回到公共主机名,复制我们刚刚填写的公共主机名至浏览器并打开。没问题,这下我们就可以在公网访问我们的OpenWrt系统了,并且CF已经帮我们自动配置好了域名证书,是不是非常方便?

接下来我们来将本地的NAS系统也一并演示。我们选择“添加公共主机名”,和OpenWrt前面设置一样,在URL中我们这次选择填写真实的内网IP和端口(5666是飞牛的访问端口,和访问群晖的5000端口是一回事)。选择保存后访问这个域名,我们发现已经可以正常访问了。

那么我们部署在飞牛NAS中的服务是不是一样可以呢?肯定没问题。我们来试试将部署在飞牛NAS中的 nastoolsmoontv也添加进隧道。只需要注意的是URL填写你真实的访问地址加端口号。没问题,可以正常访问!是不是非常简单又方便?使用CF隧道还省去了我们在防火墙中开放端口的步骤。


第六步:部署客户端 - 飞牛NAS Docker篇 (通用NAS方法)

很多朋友习惯用NAS来管理Docker服务,所以这里我再用飞牛NAS系统给大家演示如何通过Docker Compose部署Cloudflared客户端。其他支持Docker的NAS系统,比如群晖、威联通,都可以参考这个方法。

为了演示,我需要删掉这个隧道,并保证DNS解析中的记录为空。回到“Tunnels”,选择“创建隧道”。填写一个隧道名称(不重要),点击“保存隧道”。然后将这个页面先停留在这里。

登录飞牛NAS后台,选择“Docker”,点击“Compose”。起一个项目名称(不重要),选择一个存放你Compose文件的路径,点击“创建”。将下面为大家整理的Compose代码复制进来:

version: '3.8'

services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared
    restart: unless-stopped
    command: tunnel --no-autoupdate run --token 你的TOKEN

只需要修改一处:将你自己的Token令牌填入这个Compose文件中。回到“Tunnels”中点击“复制令牌”信息。我们将其复制在浏览器的地址栏中,复制 ey开头的Token令牌,覆盖填入Compose文件中 <你的TOKEN>的位置。勾选“创建项目后立即启动”,选择“确定并创建”。稍等片刻,我们的Docker客户端就部署完成了。

回到“Tunnels”中,选择“公共主机名称”,和之前的内容一样,添加我们的公共主机名就行了。需要注意的是,客户端部署在NAS中我们就不可以使用 127.0.0.1了。如果是NAS中的服务,可以使用Docker网络中的网关地址,如我的是 172.17.0.1。这些都不重要,怕麻烦你可以全部填写你内网真实IP加端口号。

我将给大家演示将OpenWrt、飞牛NAS、MoonTV都加进隧道中。是不是非常简单?以此类推,大家就可以愉快地将你本地的服务(如:飞牛影音、Emby、Jellyfin之类的服务)通过CF隧道进行公网访问了!


结语

好啦!今天我们要聊的话题到这里就结束了!感谢大家的阅读!

如果你觉得我输出的内容对你有那么一丢丢的帮助,请别忘了点一下关注支持我!你的支持是我持续分享的动力!

未来,我还会带来更多好玩、又实用的硬核技术姿势等着你解锁!那么,我们下期再见!


3

评论区