hans

hans

基于Cloudflare提供的Zero Trust实现内网穿透

这里总结两个功能,一个是实现 SSH 连接,一个是实现外网访问 web 服务。

一、前置条件
这里不多说了,你需要有一个自己的域名,并且在 cloudflare 托管的。登录 Cloudflare 后在左侧栏位选择 Zero Trust,定义组名,选择免费套餐。

二、SSH
在 Zero Trust 界面点 Access -> Tunnels -> Creat a tunnel

name 随意

我建议用 docker 安装,方便且易管理。

但是 docker 的命令需要改一下

docker run -d cloudflare/cloudflared:latest tunnel --protocol auto --no-autoupdate run --token xxxxxxxxx

docker run 后面加一个 -d 挂起运行,省的一关 terminal 服务就停了。tunnel 后面加一个 --protocol auto。在内网服务器运行后,可以 docker ps 查看一下。--token 后面是你当前 tunnel 的专属令牌。

然后回到 zero trust 页面,点击 Next 或者退出后点击刚刚创建的 tunnel,点击 Public Hostname -> Add a public hostname。Subdomain 填写二级域名,Domain 选择顶级域名,Path 留空。Type 选择 SSH,URL 写内网服务器的局域网 IP 地址和 SSH 端口。最后点击 Save hostname。

这时内网服务器端和网页端都已经设置好了,不过我们还需要在客户端配置一下 ssh:

vim ~/.ssh/config
# 添加
Host *.xxx.xxx
ProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h

上面 xxx.xxx 是你的顶级域名,*. 是为了适配所有二级域名,方便有多个服务器需要内网穿透的情况。

走到现在,你的客户端应该就可以通过你定义的二级域名,成功 ssh 到你的内网服务器了。

三、Web 服务
前面步骤都一样,只是 Type 和 URL 以及端口要按需选择。最后也不需要修改 ssh 配置。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。