Lazy loaded image
技术分享
使用cloudflare-tunnel做内网穿透
00 分钟
2023-2-19
2024-12-27
type
status
date
slug
summary
tags
category
icon
password

前言

其实几个月前就了解到了 cloudflare tunnel 这个产品,当时没仔细看文档,就随便部署了一个 http 服务,当然也有尝试做 ssh 内网穿透,但是失败了。。

看文档

在正式使用之前,建议先把文档看一看,这很重要。Connect with SSH through Cloudflare Tunnel

创建一个 tunnel

登陆 cloudflare 账户,进入 Zero Trust-> Access -> Tunnel。点击 create a tunnle 创建一个新的 tunnel。注意:使用这个功能需要有一个域名托管在 cloudflare ,根据提示,在自己的机器上安装 cloudflard 并启动服务。
由于本人使用的是 ubuntu 20.04 操作系统,因此我选择的是以 deb 的方式安装软件包,你也可以使用 docker,但是我曾经在使用 docker 的时候,遇到了一些网络问题。为了减少折腾,这次就不使用 docker 了。
安装完成以后,可以在 cloudflare 页面的下方,看到有一个 Connector,并且 Status 是绿色的,表示已经正常链接,可以访问。
下一步要选择协议,因为我是想从外面访问内网的终端,所以协议选择 ssh,在访问地址处填写: 127.0.0.1:22,我没有选择 localhost,虽然虚拟机在 /etc/hosts 文件中映射了 localhost,但是我在尝试使用 localhost 作为主机名连接时,并不能成功(我是在主机中尝试,也就是自己链接自己的 22 端口)。猜测可能是哪里的配置有点问题,试了一下 127.0.0.1 是 OK 的,就填 127.0.0.1。

配置

在前一步骤配置完成以后,仍不能直接访问 ssh,需要配置一个 application,用于做鉴权,毕竟把家里的网络直接公开到互联网是一件很危险的事情。
在和 Tunnel 的同一级菜单中,有 Application 选项,单击 Add Application ,然后有一系列配置要填写。这里假设我上面配置 ssh 时,填写的域名是 shell.example.com ,那么在这里设置需要鉴权的域名时,也要填写 shell.example.com

添加策略

在配置中,这一步是设置策略,目的是限制只有满足某个条件的人才可以访问,这里我使用的是 email,我填写了 [email protected][email protected] ,当我使用 web 页面访问 shell.example.com 时,需要输入一个 email 账号,cloudflare 会发送一封带有验证码的邮件到邮箱,输入正确的验证码才能成功访问。

开启浏览器终端访问

在 Applications 配置中,最后一条是 settings,拉到最下面,有 Browser rendering 选项,可以选择 ssh 或者 vnc,这里我选择 ssh 即可。不过看它既然支持 vnc,看起来远程连回家里 windows 也应该是可行的。

验证

访问 shell.example.com ,输入 [email protected],此时邮箱会接收到一封邮件,输入邮件中的验证码就可以访问远程终端。在我的测试中,如果输入的邮箱是不在前面设置的策略中,那么就不会收到验证邮件。

逼逼赖赖

cloudflare tunnel 确实好用,还能全球组内网,国内访问速度是有些慢,但是实测还是可以使用,而且速度并不低,我之前验证过,从家里内网的网盘上下载东西,下载速度是取决于家里宽带的上行速度,也可能是我 100M 的宽带上行太低了,但是这已经秒杀一众国内的内网穿透工具了好吧。
上一篇
promeQL使用
下一篇
使用 kubeadm 安装 k8s 集群