利用CloudFlare的Tunnel隧道穿透,完美实现域名访问内网服务

Tunnel 的工作原理:

Tunnel 通过在内网运行的一个 Cloudflare 程序,与 Cloudflare 云端通信,将云端请求数据转发到本地网络的 IP + 端口,重点是支持IP:端口的方式哟!!

前置条件:

  • 持有一个域名

  • 将域名 DNS 解析服务器托管到 Cloudflare

  • 内网有一台本地服务器,用于运行本地与 cloudflare 通信的 cloudflared 程序

教程开始:

1.注册Cloudflare账号:

点击注册

2.购买域名

此步省略

3.将域名DNS解析托管到Cloudflare

1 2 3

在购买域名的网站后台更改DNS服务器设置为cloudflare分配的名称服务器地址,可参考修改教程,等待cloudflare中状态由(待处理的名称服务器)更新为(活动中)即完成托管。

开始使用:

以上条件都准备好以后我们就开始使用

1.在Cloudflare登录好账号并打开Zero Trust

4

2.依次打开Networks-Tunnels,点击创建Create a tunnel;

5

3.选择Select Cloudflared

6

4.命名你的隧道-点击Save tunnel保存

7

5.可以看到Tunnel created successfully,表示Tunnel隧道已经创建成功

8

配置服务端cloudflare Tunnel隧道

本教程使用docker来配置

1.选择docker-把命令中token后面的一大串内容复制下来,后面要用。

9

2.然后点击next-根据图示填入相应的内容-Save tunnel即可

10

3.到此,服务端设置完成了-可以看到Cloudflare隧道的状态是INACTIVE状态

11

配置内网cloudflare Tunnel隧道程序

1.以飞牛NAS为例,打开飞牛云nas的docker-compose,点击新增项目

12

2.根据图示填入自己容器的信息,建议每次都规范命名下,避免后续新增容器出现端口冲突或者名称冲突的报错

13

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.确保容器启动正常-即可

14

4.我们再次返回cloudflare即可看到状态变成HEALTHY(健康)

15

完成

接着访问刚刚配置的域名,例如https://immotor.top/(是的,你没看错,是 https,cloudflare 已经自动为域名提供了 https 证书)就可以访问到内网的非公端口号服务了。一个 Tunnel 中可以添加多条域名前缀(子域名)或服务端口来跳转到不同的内网服务,在 Tunnel 页面的 Public Hostname 中新增即可,方法如下:

新建内网转发URL的方法

若内网有多个服务需要穿透,可按以下方法配置:

点击隧道右边的三个点,选择configure
16

跟图操作,新建转发

17

配置内网信息

18

一个隧道可以转发多个内网IP及服务端口,只需要绑定新的域名或为已使用的域名添加前缀(子域名)即可。

注意 Type 处建议使用 HTTP,因为 Cloudflare 会自动为你提供 HTTPS,因此此处的转发目标可以是 HTTP 服务端口。

教程结束!


利用CloudFlare的Tunnel隧道穿透,完美实现域名访问内网服务
https://immotor.top//archives/nHJtDajm
作者
嘟总
发布于
2024年11月20日
许可协议