前几年关注过Cloudflare的Tunnel服务,当时号称是可以进行tcp流量防护的服务,只是当时还是需要收费的,没有进行深入研究。最近没事点开Cloudflare的控制台,发现tunnel服务已经放到一个新的叫 Cloudflare Zero Trust的子网站里面功能了,而且好像已经不收费了,免费就能用。
尝试了一下,非常爽,之前各种办法尝试解决的内网穿透问他,现在可以很优雅的解决了。
这里简单介绍下具体是怎么玩的。
场景
现在很多人开始玩NAS比如群晖之类的,然后这类设备上面一般提供了很丰富的功能,比如容器等等,然后我们一般都会在上面做一些比如搭建个人博客,搭建git服务器等等。
然后我们在玩的很爽的同时发现一个问题,我们在家里可以很方便的访问到这些服务(通过内网IP)。然而如果当我们如果在外部,比如在单位,甚至在逛街的时候。我们知道现在国内带宽分配的都是动态地址,甚至有些运营商连外网IP也不会给你。
当然你也可以通过ddns来解析你家的外网地址,但是我们知道国内宽度的 80/8080/443端口都是封禁的。所以即使你ddns帮你的博客映射出去,你的博客域名也会变成类似 xxxx.com:801这种带端口号的,奇丑无比,强迫症的人肯定受不了。
我之前的玩法是在云上买一台服务器,这种服务器都是有固定IP的,然后通过NGINX代理到家里机器的IP或者使用frp这种软件进行穿透。代价就是你需要去进行这些配置,然后你还要花钱买一台机器来获取一个固定的外网地址。
Cloudflare Tunnel
是的,Cloudflare Tunnel他来了,完美解决上面这种需求场景。
注册他们家账号,左侧菜单打开 Cloudflare Zero Trust子网站。
在Cloudflare Zero Trust网站的左侧菜单找到 Access -> Tunnels
点击 Create a tunnel,创建一个你的tunnel,随便取个名字。
进入到这个tunnel的详细页面,你会看到下面有个安装&运行连接器。
他的意思是,要在你家的内网安装他的一个代理连接器。
这里提供的丰富的选择,由于我家里本来就有容器化环境,我就使用了他的 Docker的方式。
Docker的话,他提供的是docker run命令来安装的。
我家里用的portainer管理容器的,就帮他的指令转换成docker-compose配置的模式
version: "3.2" services: tunnel: image: cloudflare/cloudflared:latest command: 'tunnel --no-autoupdate run --token yJoiNjMweyJhIjoiNjMweyJhIjoiNjMw'
注意帮你配置文件里面的token换成你网页上面的token(就是页面上面docker run 后面 跟着参数里面的token)就行了。
到这里,安装步骤就完成了。
配置穿透
点击上面的Public Hostname标签,进入hostname配置页面
页面很简单,上面要填上你需要用的域名,下面填上你内网服务的地址和端口号。
值得注意的是,这个domain必须是在Cloudflare上面管理的域名,所以你得有个自己的域名,并且托管到Cloudflare来管理解析,这个想必大家都有。
最后,新增你家的内网地址段
在上面的Private Network选项卡打开,录入下你家的内网地址段即可。
至此大功告成,后面想新增解析也很简单,只需要在 Public Hostname里面增加记录即可,别的地方都不需要配置,非常方便。