Loading... # 背景 这几年宽带运营商的政策越收越紧,想当年联通的家庭宽带是不封端口的,还给公网IP,在家整一个服务器or软路由可玩性真的很高。渐渐的,联通封掉了80端口,后来又封掉了443端口,从此个人宽带基本告别了web服务(如果是喜欢在url后面加端口的硬茬,你当我没说XD)。 最近,联通又有大动作了,这次联通开启了光猫管理系统,目前应该大部分省份的光猫都已经接入系统被统一管理了吧。为什么说这是个大动作呢?首先,众所周知联通的光猫是管理很松的,以前凭借一个CUAdmin密码就能畅行光猫的管理员页面,但是现在不行了,现在光猫的密码5分钟就会变一次。其次,大家获取光猫的管理权无非就是想启用桥接模式,让自家的路由器可以拨号,现在开始也不行了,因为光猫处于桥接模式据说会被强制下线,这个也可以理解,毕竟你光猫处于路由模式才能被联通管理嘛。 这样的改变无疑是打了大家一个措手不及,毕竟光猫路由的话,那家里的主路由只能用来动态IP上网了,说白了就成一个网桥。另外DDNS服务和DMZ主机也一起寄喽,因为小米的DDNS是基于WAN口IP检测,这样一来检测出来的IP永远是你的光猫IP了,那个可恶的192.168.1.1。还有DMZ主机原来是开放到外网的,现在变成了开放给光猫了,光猫还有一层数据是出不去的(因为你管理不了光猫了)。如果你还不理解为什么,没关系看下面的拓扑图就行了。 ![](https://ftp.makay.top/typecho/blog/3/1.jpg) 那么就很简单了,我们除了内网穿透已经别无他法了。有点担心今后的孩子,如果他和我们一样热爱钻研互联网技术,他们可能一上来就要面对很多难搞的技术,当他们还是孩童的时候就要搞懂这些说实话也有点太难了。 <br> # 简介 内网穿透的技术千千万,但是我决定选取Cloudflare Tunnels来做。这么做主要有以下几个原因: * cloudflare是我域名的DNS解析商 * cloudflare架设在国外,所以可以省去一些麻烦的步骤 * 这么多年了,cloudflare还是那么稳健,可见这家CDN还是很有实力的哈 * 最最最重要的一点,免费 <br> Cloudflare这个名字太长了,我后面部分内容就用cf来指代了。正如cf自己所说“Tunnels establish a secure connection between Cloudflare's edge and your infrastructure.”,cf tunnels提供了从服务器到cf的安全连接,而这个连接指的其实就是内网穿透。cf tunnels是隶属于Zero Trust下的一个子项目,这个Zero Trust还包含其他很多的功能,比如替代VPN之类的,当然这都是cf用来构建零信任网络的一环。不过这次我们用不上,这次我们讲Cloudflare Tunnels。 <br> # 前置任务 要想实现Cloudflare Tunnels,得先提前准备一些东西,但是本文不会详细讲述这些步骤,这些步骤包括: * 一台装好linux的嵌入式设备or主机 * 为你的设备安装并配置好宝塔面板 * 将你的设备连上路由器or交换机 * 一个已经将DNS绑定到Cloudflare的域名 <br> 另外附上我的软硬件版本: * 硬件:树莓派3B * 系统:2023-12-11-raspios-bookworm-arm64-lite * 宝塔面板版本:8.0.5 <br> 这里提一嘴,用树莓派官方的这个系统安装宝塔,一定要切换到root安装,就算用sudo也不行,不然你将收获一个全是bug的宝塔面板,然后安装Nginx之类的时候也尽量能选编译安装就选编译安装(极速安装也没见得快多少)。 <br> # 申请Cloudflare Tunnels 这一步主要是为了在cf申请一个Cloudflare Tunnels的计划,不用担心有免费的计划,而且也够用了。登录你的cf,在左侧栏找到Zero Trust。 ![](https://ftp.makay.top/typecho/blog/3/2.jpg) 要求输入team name,这里随便输入,因为后面要取消,所以写啥都无所谓。 ![](https://ftp.makay.top/typecho/blog/3/3.jpg) 要求选择计划,选左边的free计划即可。 ![](https://ftp.makay.top/typecho/blog/3/4.jpg) 进入付款界面。 ![](https://ftp.makay.top/typecho/blog/3/5.jpg) 右上角找到退出的一行小字Cancel and exit直接退出即可,毕竟是零元购,绑不绑都无所谓。 ![](https://ftp.makay.top/typecho/blog/3/6.jpg) 然后重新进入tunnels,添加tunnels的按钮就出来了,直接点击新建一个tunnel。 ![](https://ftp.makay.top/typecho/blog/3/7.jpg) 这一步正式输入tunnels的名字,这个名字并非以后访问你网站的url。 ![](https://ftp.makay.top/typecho/blog/3/8.jpg) 新建好后会提示你安装客户端,由于宝塔集成了docker的管理,为了方便我们使用docker部署,**这里要记住划 了黄线的部分**,因为后面部署docker要用。目前cf tunnels也支持了挺多平台的,Windows、Mac、Debian和Red Hat,即便不是以上平台也能使用docker部署。 ![](https://ftp.makay.top/typecho/blog/3/9.jpg) 现在来到服务器上的宝塔控制面板,在左侧栏找到docker,上侧栏点击容器,创建容器。然后按照下图的格式填入信息。 * 容器名称:任意取名 * 镜像:cloudflare/cloudflared:latest * 网络:host * command:填入上一步中从tunnels开始到结束的部分(tunnels也要包括在内) ![](https://ftp.makay.top/typecho/blog/3/10.jpg) 回到tunnels的管理页面,刷新一下应该就能看到status变成health了,下面要为这个tunnels添加域名,tunnels右侧三个点,点击配置。 ![](https://ftp.makay.top/typecho/blog/3/11.jpg) 上方点击Public Hostname栏目,找到Add a public hostname按钮。 ![](https://ftp.makay.top/typecho/blog/3/12.jpg) 添加一条域名解析,需要填写以下内容: * subdomain:可选,子域名。填写子域名就是解析哪个子域名,不写则解析你的域名不带www。 * domain:你绑定到cf的域名。 * path:可选,域名的路径 * type:服务器内网中的协议,选HTTP * url:填写你的服务器的内网ip,可用冒号指定端口 ![](https://ftp.makay.top/typecho/blog/3/12.jpg) <br> # 总结 至此服务搭建完成,在宝塔中新建一个站点,然后填写好cf中设置的域名,直接在浏览器里输入url就能访问到网站了,甚至还附送了ssl,这点好评。 但是在使用中,这个方案也不是完美无缺的: * 每次建站,都要去cf tunnels添加域名/子域名,并且目前还不能支持泛域名 * cloudflare虽然老牌,但毕竟在国外,有时候网站也确实会失联 <br> 不过免费的要啥自行车,有这玩意真的方便不少,冲就完事了。 最后修改:2024 年 01 月 22 日 © 允许规范转载 赞 2 如果觉得我的文章对你有用,请随意赞赏