因為自己有多台VPS設備,這些設備都有限定特定IP才能連線,家裡的其中一台Orange Pi有固定IP,是在VPS的允許清單內的,可以正常連線。
但另一台Mini PC採用的是浮動IP,因此連線不了,但我想要讓這台MiniPC平時是浮動IP,只有連線特定主機時,才使用固定IP。
因此決定使用Orange Pi做為跳板,來實現此需求。一開始聽從AI的建議,使用WireGuard作為VPN,但是配置了好幾個小時,多個AI輪流詢問、調整,所有設定看起來都通了,但是就是用不了,後來AI也開始鬼打牆了,就放棄了。
今天又再次問AI有沒有其他的跳板方式,它就推薦了Tailscale,說底層也是用WireGuard的,只是幫忙快速設定而已,個人版是免費使用的。
測試了一下,確實簡單許多... 也順利實現我要的需求。但就是很不理解,為何AI不一開始就推薦它呢?甚至在一開始的推薦清單中,連它的名子都沒出現...
1. 架構說明
情境:利用家中的 Orange Pi (擁有固定 IP) 作為跳板,讓 Mini PC 能透過該固定 IP 存取受防火牆限制的遠端 VPS。
模式:分流模式 (Subnet Router)。
一般上網 (Google, YouTube) -> 走 Mini PC 原本線路 (速度快)。
連線特定 VPS -> 自動繞經 Orange Pi -> 顯示為固定 IP。
2. Orange Pi (跳板機 / Gateway) 設定
步驟 A:安裝 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
步驟 B:開啟核心轉發 (IP Forwarding)
這是為了讓 Orange Pi 能幫忙轉傳封包,必須執行。
# 1. 寫入設定 echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf # 2. 套用生效 sudo sysctl -p
步驟 C:啟動並宣告路由
將你要連線的目標 VPS IP 加入宣告清單。(參數 --reset 是為了確保清除舊設定,避免衝突)
# 假設目標 VPS IP 為: 177.101.94.99 和 1.2.3.4 sudo tailscale up --reset \ --advertise-routes=177.101.94.99/32,1.2.3.4/32 \ --advertise-exit-node
3. Tailscale 控制台設定 (Web Admin)
網址:https://login.tailscale.com/admin/machines
步驟 A:批准路由 (Route Approval)
找到 Orange Pi 裝置。
點擊右側
...-> Edit route settings。在 Subnet routes 下方,勾選剛剛宣告的所有 IP。
(選用) 在 Exit node 下方勾選 Use as exit node (以備不時之需)。
步驟 B:停用金鑰過期 (建議)
為了防止 Orange Pi 幾個月後自動斷線:
點擊 Orange Pi 右側
...。選擇 Disable key expiry。
4. Mini PC (客戶端) 設定
步驟 A:安裝 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
步驟 B:啟動並接收路由
這裡不要使用 --exit-node,而是使用 --accept-routes 來達成「分流」。
# 啟動並自動接收所有被批准的路由 sudo tailscale up --accept-routes #假如要全部流量都用跳板,則用這個指令,但要注意 --exit-node-allow-lan-access 一定要加上,不然連內網都會被轉發, 假如使用內網聯入終端,不加上那個參數就會出現問題,自己就中招,好險能連實體訪問,不然就不知道怎辦了(聽說可以重開機解決,沒實際試過)。 tailscale up --exit-node=my-orangepi(這個實際名稱從Tailscale 控制台查看) --exit-node-allow-lan-access
5. 目標 VPS (Target Server) 防火牆設定
在你要連線的 VPS 上,將 Orange Pi 的固定 IP 加入白名單(這個步驟,一般可以略過,通常就是已經有設定這步驟才需要它當跳板的)。
# 假設使用 UFW # 放行 SSH sudo ufw allow from <Orange_Pi_Fixed_IP> to any port 22 # 放行 ClickHouse HTTP sudo ufw allow from <Orange_Pi_Fixed_IP> to any port 8123 # 放行 ClickHouse Native (選用) sudo ufw allow from <Orange_Pi_Fixed_IP> to any port 9000
6. 驗證與測試
測試 1:確認分流是否生效
在 Mini PC 執行:
curl ifconfig.me-> 應顯示 Mini PC 原本的浮動 IP (正常)。ssh user@你的遠端主機IP -> 登入後打who,應顯示 Orange Pi 的固定 IP (成功)。
測試 2:ClickHouse 連線
在 Mini PC 執行:
curl -u '帳號:密碼' 'http://{你的遠端主機IP}:8123/?query=SELECT%20now(),hostName()'回傳
1即代表資料庫連線與防火牆皆已打通。
7. 常見維護指令
新增更多 VPS IP: 在 Orange Pi 重新執行
tailscale up --advertise-routes=舊IP,新IP --reset,然後去網頁控制台重新打勾。臨時想全域翻牆: 在 Mini PC 執行
sudo tailscale up --exit-node=<Orange_Pi的別名> --exit-node-allow-lan-access。恢復分流模式: 在 Mini PC 執行
sudo tailscale up --exit-node= --accept-routes。
Orange_Pi的別名從Tailscale 控制台查看
文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)
原文連結:
https://blog.aidec.tw/post/tailscale
若有業務合作需求,可寫信至: [email protected]
創業、網站經營相關內容未來將發布在 小易創業筆記