Cloudflare Tunnel试用
cloudflare tunnel 介绍
cloudflare tunnel通过在源站和cloudflare边缘节点建立一条隧道,所有访问此服务的流量都要先到达cloudflare,再经过cloudflare和服务器源站之间建立的cloudflare tunnel
到达源站。同理,源站对客户端的响应也要先通过cloudflare tunnel
送到cloudflare的边缘节点,再由cloudflare边缘节点送给客户端。cloudflare tunnel
提供了两点好处:(1)隐藏源站,所有的流量都要经过cloudflare边缘节点,在cloudflare配置访问控制规则,可以过滤掉非法请求;(2)可以借助cloudflare tunnel
提供内网内的服务。如接入家用宽带的服务一般只能在同一个网络内才能访问,但是借助cloudflare tunnel
可以让在其他网络中的设备通过互联网访问此服务。
下图是cloudflare tunnel
的工作原理示意,建立cloudflare tunnel
需要一个工具,这就是cloudflare提供的cloudflared。将cloudflared
部署在源站服务器上,cloudflared
主动和cloudflare边缘节点建立隧道,并将信息上报给cloudflare。隧道建立后,如果有合法的流量访问源站服务,则cloudflare会通过cloudflare tunnel
将流量送到源站。
cloudflare tunnel 使用
step0 设置nameserver
首先准备一个域名,并将域名的nameserver设置为cloudflare的nameserver(更改后到真正生效可能需要一段时间,大概几小时吧:))。
step1 配置域名
setp1-1 创建Tunnel
到cloudflare的零信任控制台Access》Tunnels点击Create a tunnel
,然后给tunnel命令即可。
step1-2 配置Public Hostname
创建完test-tunnel
隧道之后,进入配置界面,选择Public Hostname
,点击Add a public hostname
按钮,添加一个子域名,并配置本地服务。
配置子域名(Subdomain)和本地服务(Service),并保存。这里选择了HTTP协议,选择选择栏还有其他协议可以选择,如SSH、RDP、TCP等。其实只要是非HTTP/HTTPS的TCP流量(如SSH、RDP等)都可以选择TCP协议(因为内部只区分TCP和HTTP/HTTPS)。
配置完成之后,如下所示:
step2 源站安装cloudflared
找到控制台的如下信息,按照提示拷贝到源站服务器执行,并在源站起一个http服务(端口是8000)。
step3 验证效果
上面的操作执行完了之后就可以找一台测试机器,用浏览器打开www.whoami.monster,It works! 😃