cloudflare Zero Trust Tunnel发布内网网站/内网穿透/访问NAS/文件传输…花生壳一边呆着去吧!

想象一个场景:你在家里的电脑运行了一个网站,于是你可以用localhost或127.0.0.1来访问它,也可以让连在同一路由器的其它设备用局域网IP来访问,但是你现在想让它对外访问,并且使用域名供他人访问(如http://test.org),那怎么才能实现呢?本文就总结一下我能想到的方法和各自利弊。

另外,本文要讲的cloudflare Zero Trust Tunnel本身也是一种内网穿透方式。

不过相比于我以往介绍过的zeroTier和tailscale用法复杂一些,并且访问方式更加优雅(域名)、通用(不需要安装客户端),可以用来搭建、发布网站等服务。

一、家庭宽带有公网IP,在路由器进行端口映射到本机。

使用公网IP访问本机的网站(如http://120.245.21.253:8080),如果你的宽带没有公网IP那就没办法。

这个方法还可以进行优化,使用动态域名替换公网IP,比如我曾经用过的动态域名商(https://www.duckdns.org/),每过一段时间更新一下动态域名和公网IP的映射关系(如http://test.duckdns.org绑定公网IP120.245.21.253),这样就可以用http://test.duckdns.org:8080访问本机网站了。最后,需要指出的是,国内的运营商对家庭宽带是封锁80和443端口的,所以我们只能用其它端口访问网站,同时动态域名是二级域名,会显得很丑陋,就像这个样子http://test.duckdns.org:8080

二、使用花生壳等内网穿透工具

这种方法基本可以解决问题,弊端是:

1、只能用花生壳的域名,很丑陋。

2、花生壳这类公司为了盈利,对白嫖党极不友好,分配的带宽和流量都很低很低,不付费的话几乎无法满足使用,付费的话也不便宜。1Mpbs的带宽,让一个人访问网站都会感到卡,更别说让很多用户一起访问了;如果是访问家里的NAS上的媒体资源,那就更加卡得一逼了!

三、使用cloudflare Zero Trust Tunnel

其实久闻Zero Trust大名,直到最近研究RouterOS时才在上面试了试,大吃一惊,花生壳在cloudflare面前完全就是垃圾…

在这里进入Zero Trust之后需要添加付费方式(我添加的是paypal)才能免费使用,然后添加一个tunnel。

我的台式机是windows系统的,需要在电脑上安装windows客户端。其它系统则选择对应的environment。

安装好后,以管理员身份运行命令框,复制、执行上面的命令。

执行成功后,可以在cloudflare后台看到状态是healthy。

到此为止,已经可以实现内网的映射了,你有域名并已经托管在cloudflare的话,需要设置域名,这样就可以用你自己的域名访问家里这台电脑了。操作如下

hostnames里添加主机名,设置如下,域名就是你已经托管在cloudflare的域名,可以映射到子域名,顶级域名另有他用当然不要浪费在此。

192.168.1.3是我的主机在局域网的IP,你可以用windows命令行用ipconfig/all来查看你的局域网IP。这样设置以后,就可以通过我设置的域名mycomputer.域名来访问了。我来测试一下,我本地电脑跑了一个nginx,看看通过我的域名能否访问 成功✌

这里我发现,尽管Zero Trust显示支持很多协议,但除了http协议之外我还试了TCP,多次尝试都无法连通,后来经过一番搜索后发现其他网友也不行…所以目前我不知道是我的问题,还是Zero Trust的问题,以后有空我再试试其它各种协议,不过可以穿透http协议我已经非常满意了!

最后总结一下,Zero Trust有哪些用途呢?我能想到的有

  • 内网对外发布。创业门槛都降低了,只要在家用自己宽带就可以开办网站。
  • 文件传输。如果有大文件需要传输给对方,用QQ、百度网盘(非会员)速度太慢……像我刚才那样,启动一个nginx,再用Zero Trust把文件分享出去,速度很快(看你的带宽)。
  • 访问家里的NAS。有NAS无公网IP,虽然可以用tailscale、ZeroTier访问,但是需要安装客户端,Zero Trust可以实现免费、无客户端直接访问。

发表回复