没有公网ip?用cloudflare部署内网穿透服务,随时随地访问内网资源
这几年运营商都开始大力回收公网ipv4,而目前ipv6并不普及,相当一部分网络下仍然没有ipv6地址,这导致出门在外想访问家里nas等资源都不方便,这时候就需要用上内网穿透了,这里就通过cloudflare免费的内网穿透服务来实现无公网访问内网资源。
之前写了一篇《利用cloudflare让ipv4与ipv6互通》,那一篇就是为了在ipv4网络下访问ipv6的服务,但是受限于其所用的cloudflare(cdn),只能通过这种方式访问http/https的服务,对于tcp或者其他类型的服务就不能用,但是本期说的内网穿透则没有任何协议上的限制。
内网穿透顾名思义,就是把内网中的服务穿透出来,实现公网访问,简单来说就是利用一个具有公网访问的设备(服务)来中转流量,流量先到中转的设备/服务上再回到客户端/服务端,这意味着速度受限于客户端到中转服务器以及访问端到中转服务器的速度,但鉴于cloudflare(简称cf)速度并不快,不过人家免费,,,,,但仍建议有能力的童鞋自行部署独立的内网穿透服务器(以后再出一期),也可以选择购买第三方穿透服务。
一、前排准备
1.一个cf账号
2.一个域名,域名相关内容请翻看往期文章,可以选择购买或者申请免费的域名。
二、cf添加域名
cf入门以及添加ns解析相关内容请看《利用cloudflare让ipv4与ipv6互通》,这里不再赘述。
三、cf开通tunnel
登录到cf后台,选择“zero trust”,首次使用会要求给项目起个名字,这里随意名称都行。
第一次使用还会要求选择套餐,直接选择第一个免费的就行,随后会要求付款,点击“继续付款”,到结账的时候不用选择“添加付款方式”,直接点击右上角的“取消并退出”,就可以回到“zero trust”主页面。
然后点击左侧“Networks/Tunnels”,首次进入还需要点击“add a tunnel”,之后选择“Cloudflared”,再给这个项目取个名称,名称也是随意,之后点击“next”。
四、部署tunnel
这时候项目就已经新建好了,cf会给出部署的方式,可以直接部署在操作系统上,也可以使用docker来部署,这里我以docker为例。
注:内网穿透本质是用一个服务器(服务)来中转流量,而为把本地内网的流量递给服务器,就需要在本地部署一个内网穿透的程序(服务),而且在一个内网下只用部署一个内网穿透程序就行。
建议:鉴于大部分童鞋内网环境,建议在路由器或者nas上以docker的形式来部署,当然也可以直接部署在操作系统上,但是对于大部分nas系统或路由器来说,一来是系统受限可能无法部署,二来docker部署也更加方便。
什么docker无法拉取镜像?可以翻看往期文章《cloudflare workers 解决docker无法拉取镜像问题》《nginx反向代理docker hub,加速拉取镜像》。
选择docker部署后会给个命令,登录设备的ssh后直接运行这一串命令就行。这里命令末尾,“token”后面的就是自己的令牌,这个令牌注意不要告诉他人,否则数据可能会被窃取。
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token xxxxxxxx
当然,很多童鞋不方便使用命令,例如nas系统这些,这里就以威联通nas为例,添加对应的docker,其他的图形化docker界面部署方法是一样的。
基础的步骤看图就会(不会我也没办法),映像为“cloudflare/cloudflared”,这个docker不需要映射端口,所以网络默认nat就行,但在配置容器的时候选择高级设置,命令改成如下的命令,对比官方给出的部署命令,其实就是删掉“docker run cloudflare/cloudflared:latest”,其他的全部默认设置就行:
tunnel --no-autoupdate run --token XXXXXX
五、添加内网穿透信息
docker部署好后回到刚刚cf “tunnel” 界面,点击“save tunnel”,保存整个项目。
此时还需要添加添加内网穿透信息,也就是需要访问的内网地址等信息。
这里假设已经绑定的“aaa.com”域名,需要通过“tunnel.aaa.com”访问内网地址为“192.168.31.11”端口号为9999的http(网页web)服务,则对应以下内容:
Subdomain tunnel #子域名
Domain aaa.com #主域名,直接选择自己的域名就行
Path 留空 #访问路径,建议留空,这样就代表直接访问这个域名就可以访问对应的服务
Type http #选择对应的内网服务,比如我这个是http协议的网站,就选择http
URL 192.168.31.11:9999 #需要内网穿透的服务对应的ip地址以及端口号
都填入了后点击“Save hostname”,就可以完成部署,此时访问“tunnel.aaa.com”就可以打开内网对应的服务了。
注意:这时候不要再去添加“tunnel.aaa.com”的解析地址,cf会自动添加的,啥都不用管。
如果此时还有其他的端口也想要内网穿透的话,选择刚刚建立的这个tunnel,转到“Public hostnames”添加其他的端口就行,步骤和上面的一致。
六、其他&注意
1.不要滥用,不要滥用,不要滥用
2.cf速度并不快,建议自己搭建内网穿透服务,当然,更推荐公网直连。