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 配置。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。