玩NAS的朋友应该都知道,国内由于IPv4资源紧张,运营商通常不会主动给家宽用户开公网IP,即使要到了公网,也会因众所周知的原因,无法使用80/443端口,对于喜爱折腾的NAS玩家来说可谓如鲠在喉。一般来说,有公网的情况下,可以使用DDNS实现域名访问家里的NAS,但是无法使用80/443端口;如果没有公网,也可以借助像Frp、Zerotier、NPS/NPC等家喻户晓工具实现内网穿透,不过都各有优缺点,在此暂不赘述。本文要介绍的是另一个大名鼎鼎的工具--CloudFlare Tunnels,它可以实现无公网的情况下,穿透到内网,并且可以直接使用80/443端口,就问你香不香吧。
前提条件
注册一个Cloudflare账号,选择免费计划就行
准备一个域名,没有就买一个,不想买可以自己找免费的
将域名解析转移到Cloudflare
1、登录Cloudfalre,将你的域名添加到Zones中,然后在DNS上找到名称服务器的网址,如下图红框所示,两个网址就是:
2、比如,域名是从腾讯云购买的,则找到你的域名,在管理中将DNS解析服务器改成Cloudfalre的名称服务器网址即可,如下图
创建Tunnels
1、打开Cloudfalre控制台,依次点击Zero Trust-> Access -> Tunnels
2、创建Tunnel1)点击Create Tunnel按钮,创建一个新的隧道
2)名称按自己想法填,然后点击Save Tunnel
4)在配置界面,切换到Public Hostname页签,点击Add a Public Hostname,创建一个新的穿通域名
参考图中的说明进行填写,划重点:Subdomain:就是你要用的子域名,比如你想用x.abc.com访问家中的服务,就填aDomain:就是你的域名,直接选择Path:路径,不用填type:内网服务的协议,一般是http,如果你非要给内网服务配置了https,你就选httpsURL:内网服务的ip+端口,比如你想穿透到内网的WP博客,则填写WP的ip和端口。注意:此处如果内网服务是docker部署的,需要注意使用合适的ip和端口
设置并保存后,回到域名的DNS记录页面,会看到已经自动添加了一个CNAME记录,并且开启了代理。什么都不要动,保持就行。
部署connector
上面的步骤已经完成了域名配置以及隧道配置,但是要想让域名自动找到你的内网服务,还需要你在内网安装一个程序,或者叫连接器,用于与Cloudfalre Tunnel进行通信。1、回到Tunnels界面,并点击Configure进入配置页面,在Overview页签中,可以看到选择安装环境的按钮,选择一个,然后安装下面的提示安装即可。
2、本文以Docker为例,选择Docker按钮,下面会显示出一键启动镜像的命令,把命令复制到你的内网机器上,打开终端,直接执行即可。实际上就是启动了一个Cloudflared容器
起飞吧
现在,打开浏览器,输入你域名(不需要输入端口),你会发现可以直接在外网访问内网的服务了。