利用CloudFlare的Tunnel隧道穿透,完美实现域名访问内网服务
Tunnel 的工作原理:
Tunnel 通过在内网运行的一个 Cloudflare 程序,与 Cloudflare 云端通信,将云端请求数据转发到本地网络的 IP + 端口,重点是支持IP:端口的方式哟!!
前置条件:
持有一个域名
将域名 DNS 解析服务器托管到 Cloudflare
内网有一台本地服务器,用于运行本地与 cloudflare 通信的 cloudflared 程序
教程开始:
1.注册Cloudflare账号:
2.购买域名
此步省略
3.将域名DNS解析托管到Cloudflare
在购买域名的网站后台更改DNS服务器设置为cloudflare分配的名称服务器地址,可参考修改教程,等待cloudflare中状态由(待处理的名称服务器)更新为(活动中)即完成托管。
开始使用:
以上条件都准备好以后我们就开始使用
1.在Cloudflare登录好账号并打开Zero Trust
2.依次打开Networks-Tunnels,点击创建Create a tunnel;
3.选择Select Cloudflared
4.命名你的隧道-点击Save tunnel保存
5.可以看到Tunnel created successfully,表示Tunnel隧道已经创建成功
配置服务端cloudflare Tunnel隧道
本教程使用docker来配置
1.选择docker-把命令中token后面的一大串内容复制下来,后面要用。
2.然后点击next-根据图示填入相应的内容-Save tunnel即可
3.到此,服务端设置完成了-可以看到Cloudflare隧道的状态是INACTIVE状态
配置内网cloudflare Tunnel隧道程序
1.以飞牛NAS为例,打开飞牛云nas的docker-compose,点击新增项目
2.根据图示填入自己容器的信息,建议每次都规范命名下,避免后续新增容器出现端口冲突或者名称冲突的报错
YML代码如下:
version: '3'
services:
cloudflared:
image: cloudflare/cloudflared
container_name: cloudflared-navidrome #这里自定义容器名
restart: always
network_mode: host
command: tunnel --no-autoupdate run --token ***************************** #这里的*改成你上面保存好的token后面那一大串
3.确保容器启动正常-即可
4.我们再次返回cloudflare即可看到状态变成HEALTHY(健康)
完成
接着访问刚刚配置的域名,例如https://immotor.top/(是的,你没看错,是 https,cloudflare 已经自动为域名提供了 https 证书)就可以访问到内网的非公端口号服务了。一个 Tunnel 中可以添加多条域名前缀(子域名)或服务端口来跳转到不同的内网服务,在 Tunnel 页面的 Public Hostname 中新增即可,方法如下:
新建内网转发URL的方法
若内网有多个服务需要穿透,可按以下方法配置:
点击隧道右边的三个点,选择configure
跟图操作,新建转发
配置内网信息
一个隧道可以转发多个内网IP及服务端口,只需要绑定新的域名或为已使用的域名添加前缀(子域名)即可。
注意 Type 处建议使用 HTTP,因为 Cloudflare 会自动为你提供 HTTPS,因此此处的转发目标可以是 HTTP 服务端口。
教程结束!
利用CloudFlare的Tunnel隧道穿透,完美实现域名访问内网服务
https://immotor.top//archives/nHJtDajm