大家好,我是羊刀仙。
之前介绍过通过VPS和frp实现无公网访问局域网NAS。
本期会利用 Cloudflare Tunnel,实现随时随地访问局域网Web应用,并且无惧DDoS攻击,无需开放额外端口,也无需VPS服务器。
树莓派、威联通、群晖甚至是软路由等内网设备都可以使用该方法。
讲在前面
Cloudflare 的 Cloudflared tunnel 服务是通过 HTTPS 建立安全连接。
在 Cloudflare tunnel 的工作方式中,你的 NAS 运行 Cloudflared 代理,这个代理建立并保持一个到 Cloudflare 的长连接(长连接指的是一种保持开放的网络连接,允许客户端和服务器之间进行多次数据交换而不需要在每次通信时重新建立连接)。这个长连接是通过 HTTPS 协议进行的,以实现通信加密,保证数据的安全传输。他人即便截获这个数据流也无法解读其中内容。
当有请求通过你的域名来到 Cloudflare 时,Cloudflare 会通过已经建立的长连接将这个请求转发到你的内网应用。这个过程也是通过加密的 HTTPS 连接进行,同样是安全的。
因此,在 Cloudflare 和内网 NAS 之间的通信是通过 HTTPS 进行,在这种配置下,你可以用 HTTPS 来访问你的内网应用,即使这个应用本身并没有设置证书和加密。
CloudFlare解析
账户注册很简单,不过多赘述。
这一步必须,因为要使用Cloudflare服务,所以必须要Cloudflare托管DNS服务,具体方法请看这篇,很简单:
往期利用Cloudflare搭建Docker加速文章:
开通 CloudFlare Tunnel
点击左侧栏的Zero Trust
:
填写项目名,你心仪的名字可能会被占用,有点威联通cloudlink设备名的味道。不过这个后面也可以随便更改,填好了点击Next
:
会跳出一个选择套餐界面,跟之前一样,还是选择零元:
虽然是零元,但仍然会让我们添加支付方式(估计是为了防脚本之类的东西),可以添加PayPal或外币卡(visa),不过这里点击右上角的退出就行。
今后要长期使用Cloudflare的朋友倒是可以顺手绑上支付方式,是不会扣费的哦。
接下来再次回到主页点击Zero Trust
,左侧栏Networks
下选择Tunnels
,然后点击Add a tunnel
:
这里来解释一下:
首先下载并安装Cloudflared,然后将本地服务与Cloudflared连通,Cloudflared可以理解为隧道;
这样一来就可以把本地服务的流量通过Cloudflared交给Cloudflare;
因为我们已经将域名托管至Cloudflare,因此就可通过域名访问本地服务;
如下图所示,点击Next
:
命名并保存:
选择环境,咱们是要访问 NAS,那肯定选择最后一个 Docker,下面也给出了具体的部署命令并附带了 Token :
NAS 部署 Cloudflared
所获得的部署命令,我加了一个开机自启动:
docker run -d --restart=always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token 你的token
我就不开启SSH,直接转成Docker Compose,通过威联通的Container Station部署:
version: '3'
services:
cloudflared:
image: cloudflare/cloudflared:latest
command: tunnel --no-autoupdate run --token 你的token
restart: always # 加上一条开机自启动
在NAS中创建应用程序:
点击创建并且cloudflared跑起来后,回到WEB界面,等一会就能看到cloudflare那边自动搜索到连接:
此时说明已经能够跟本地服务连通,点击Next
。
继续配置Cloudflared
选择已经托管的主域名,比如我这里想访问威联通NAS的web端,那二级域名就填写为nas,局域网内完整的访问地址为http://192.168.200.110:5000 ,也如实填写,如下图所示:
点击右下角保存后,稍等一会便会创建成功:
后续要增加emby、qb等应用可以点击上图箭头位置进行添加。
现在不出意外的就可以用刚刚创建好的服务,即利用nas.ydxian.love
访问威联通NAS的web端:
评论区