侧边栏壁纸
  • 累计撰写 19 篇文章
  • 累计创建 40 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

Cloudflare Tunnels 免费的内网穿透 自带https证书

Cook
2025-03-25 / 0 评论 / 0 点赞 / 56 阅读 / 0 字

致敬我们的赛博大善人Cloudflare

Cloudflare Tunnels可以提供什么

1、内网穿透

2、https证书

3、服务转发(简易版Nginx)

4、以上免费

背景

家里网络只有ipv6 ,并且80 443等端口被运营商禁用。所以想要暴露内网的服务到公网,只能使用ipv6+非标端口访问。

即使配合域名解析,不支持ipv6的网络下也无法访问。

研究了下有几个方案:

1、使用Cloudflare做DNS解析,并且开启DNS代理功能。

此时流量经过Cloudflare,然后才到自己的服务器,所以解决了v4无法访问的问题。

优点:无需额外的服务器。并且可以隐藏真实ip。

缺点:需要公网IP(v4或v6),而且还是得非标端口访问,而且速度取决于访问端到cf的速度和cf到内网服务器的速度。我这边测试下来,速度非常慢。

适合只是想尝试下公网访问,使用频率不高而且不太想折腾的人。操作简单。

2、使用公网服务器做转发。

此时流量经过公网服务器,可以解决v4无法访问的问题,非标端口的问题也可以解决。

优点:解决了两个问题。

缺点:需要额外准备一台服务器,而且速度取决于你的公网服务器,我这边就是弄了台国外的vps,国内访问速度很慢。

适合手上有一台性能弱的vps,无法挂服务,但是带宽和速度都还不错。

3、使用Cloudflare的Tunnels的功能。

流量经过Cloudflare,然后到服务器的Tunnels客户端,然后客户端再转发到本地服务,所以v4和非标端口的问题都可以解决了。

优点:解决了两个问题,而且速度基本只取决于访问设备到cf的速度,因为cf和内网服务是长连接。并且不需要额外的服务器。

缺点:还是速度问题,按说应该是和DNS代理速度相当,都是走的Cloudflare的服务器,但是由于Tunnels方案是本地服务器和Cloudflare会建立长连接,所以速度上还是会快一点,我体验下来,和我的vps差不多,所以就换这个方案了。

前置条件

1、拥有一个域名并且托管在Cloudflare

cf的注册以及域名托管这里不赘述了,教程很多。

2、有一台内网服务器(这不是当然的,不然穿透个P)

3、内网服务器安装了docker(非强制要求,安装方式有很多,本教程使用docker)

申请账号

1、打开 Cloudflare Zero Trust 工作台面板,创建一个账号。

团队名随便

选择免费计划,这里点击免费计划,会让添加付款方式,实际上在付款方式这里关闭页面,重新进入 控制台 就会跳过这个步骤了。。。

配置Tunnels

添加一个Tunnels

然后选择Cloudflared就行了

起个名,随意

进入配置页面,这里选择Docker安装,下面的命令行就是附带了token的启动命令,但是是前台启动,所以我们加几个参数:包括 后台运行、自动启动以及给服务起个名。

把下面命令的替换部分换成你的后台生成的token即可。粘贴进内网服务器,运行。

docker run --name cloudflare_tunnels -d --restart always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token 替换为你的token

运行成功后,这个页面下面会有个connect的部分,会有个绿色标签提示已连接。我这里忘记截图了。或者再进入tunnels页面也可以看到状态。

点击name,然后点击编辑,进入配置页面。

然后添加一个子域名

输入配置信息

比如你想要通过 blog.youdomain.com访问到你内网的8080服务

这里二级域名就填:blog

domain就选择你托管的域名,后面的path可以不填

service里面的Type选择http

url输入:内网ip:8080

这里内网ip就是你内网服务器的ip,不要输入localhost或者127.0.0.1,因为这里是docker部署的tunnels,localhost会指向docker容器。

点击保存就完成了,可以输入你的blog.youdomain.com,测试下,就可以公网访问了,并且自带https证书。

0

评论区