因為自己有多台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)

  1. 找到 Orange Pi 裝置。

  2. 點擊右側 ... -> Edit route settings

  3. Subnet routes 下方,勾選剛剛宣告的所有 IP。

  4. (選用) 在 Exit node 下方勾選 Use as exit node (以備不時之需)。

步驟 B:停用金鑰過期 (建議)

為了防止 Orange Pi 幾個月後自動斷線:

  1. 點擊 Orange Pi 右側 ...

  2. 選擇 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 控制台查看

image.png


文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/tailscale
若有業務合作需求,可寫信至: [email protected]
創業、網站經營相關內容未來將發布在 小易創業筆記