利用 cloudflare 转发内网端口

date
Mar 22, 2024
slug
using-cloudflare-to-forward-internal-network-ports
status
Published
tags
cloudflare
Tunnel
内网穿透
SSH
加速
海外
VPS
summary
type
Post
之前介绍过 Cloudflare 的 tunnel 试用,那个时候还没有网页 UI,现在已经有了 UI,方便了许多。
登录Cloudflare后,再左侧菜单中打开 Zero Trust (零信任?),如果你是第一次,需要绑定信用卡,基本上你用到的功能都是免费就足够了,不需要付费。
绑定信用卡之后就可以用了,打开 ZeroTrust 左侧的 Networks 然后点击 Tunnels ,然后里面是空的列表,点击 CreateTunnel 选择Clouflared,一步一步按照提示安装在你需要内网穿透的机器即可,安装完毕后,再回到列表,就会看到了对应机器的记录。
notion image
现在我们尝试一下转发机器的 ssh 端口,点击对应机器,会在右侧弹出,点击弹窗的 Configure 就会来到机器的配置页面,因为已经安装过了,直接点 public hosname ,创建一个 ssh 配置
notion image
红色框是必填的,根据实际填写,domain 是你绑定到 cloudflare 的域名,如果没绑定过,需要绑定,这阳我就把这台机器的 ssh 端口跟 ssh.example.com 绑定了。
那要如何访问呢,也很简答,需要用 ProxyCommand建立隧道,我用的是 mac,其他系统大同小易,先安装cloudflared,mac 使用命令
brew install cloudflare/cloudflare/cloudflared
安装即可,然后修改 ~/.ssh/config
添加
Host ssh.example.com
ProxyCommand cloudflared access ssh --hostname %h
然后就可以在 shell 中使用 ssh 命令链接
ssh ssh.example.com
其他端口也可以例如,我们要转发 mysql 3306,可以在配置 public hostname 的时候,type 选择 tcp
当然也不能像 ssh 那样用 ProxyCommand 建立隧道了,需要执行命令例如
cloudflared access tcp --hostname mysql.example.com --listener 127.0.0.1:3306
 

© Deron Cheng 2022 - 2024