快轉到主要內容

Tailscale設定Subnet Routers,從跳板機存取區網的裝置

分類   Linux系統 Self-hosting自架
標籤   Tailscale
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

從外網存取區域網路的裝置,又不需要每一台裝置都安裝Tailscale。

1. Subnet Routers的用途
#

適用場景:不想在每個裝置都安裝Tailscale,佔掉Tailscale裝置名額的用戶。

試想,在家裡,當手機、電腦、NAS、樹莓派位於同一個網路的時候,我們可以透過區域網路IP連線。

例如:

  • 電腦 192.168.0.109
  • 手機 192.168.0.110
  • NAS 192.168.0.111
  • 樹莓派 192.168.0.112

區域網路下,電腦能夠從192.168.0.111連線到NAS的服務。

如果我要從外部網路連線到家中NAS,可以選擇在所有裝置都安裝Tailscale客戶端,之後用Tailscale分配的虛擬區域IP連線到NAS,例如100.64.0.0,不能再使用192.168.0.111連線了。

但是這樣很麻煩的說,要是裝置多起來了怎麼辦呢?每部裝置都安裝一次Tailscale嗎?還要去記住Tailscale給的IP?萬一那台裝置不給安裝第三方軟體呢?

能不能在家裡的一部裝置安裝Tailscale就好,把它作為跳板機使用,從而存取背後的所有區域網路的裝置呢?

這就是Tailscale的「Subnet Routers」子網路路由功能,只要在一部裝置安裝Tailscale,並啟用Subnet功能,就可以把它當成跳板機,存取區域網路的其他裝置,即使那些裝置沒有安裝Tailscale也能連線。

連線的時候,作為Subnet Routers的裝置是扮演SNAT的角色。

2. 安裝Tailscale
#

參考 Tailscale安裝教學

建議安裝在Linux系統的裝置,例如電腦或者路由器,比較好處理網路連線。

3. 將Linux作為Subnet Routers
#

  1. 登入要作為Subnet Router的Linux電腦。使用sysctl指令,給Linux核心啟用IP Forwarding
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf

echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf

sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
  1. 你需要注意防火牆是否會阻擋IP Forwarding,這裡使用UFW因此不需要再另外設定。

  2. 接著,利用NetworkManager附屬的nmcli指令,列出網路連線裝置。如果使用乙太網路,那麼裝置名稱應該是enp開頭

nmcli device 

# 範例輸出
DEVICE           TYPE      STATE                   CONNECTION      
enp2s0           ethernet  已連線                  eth0            
  1. 取得Linux網路的預設閘道(gateway),例如我家網路是192.168.0.0/24
nmcli device show enp2s0 | grep 'IP'
  1. 將Tailscale設定使用該閘道器
sudo tailscale up --advertise-routes=192.168.0.0/24 --operator=user
  1. 開啟Tailscale網頁後台,點進去Subnet的機器設定

  2. 在Routing Settings這裡同意Subnet規則

4. 嘗試連線到Subnet Routers背後的裝置
#

接著讓另一台電腦連上Tailscale網路,不要連到區域網路。

測試能否ping到192.168.0.0網段的裝置。

Windows、macOS、Android、iOS應該是開箱即用。

如果電腦是Linux,需要執行以下指令才能存取Subnet Routers背後的裝置:

sudo tailscale up --accept-routes

參考資料
#

相關文章

將Tailscale當跨區VPN用:如何設定出口節點(Exit Node)
分類   Linux系統 Self-hosting自架
標籤   Tailscale
RustDesk + Tailscale內網穿透,IP直連到遠端桌面
分類   Linux系統 Self-hosting自架
標籤   RustDesk Tailscale
自架服務(Self-hosting)需要的硬體與常用工具
分類   Linux系統 Self-hosting自架
標籤   Tailscale

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。