快轉到主要內容

Tailscale設定教學,免費內網穿透VPN(Linux / Windows /macOS)

· 民國115年丙午年
·
切換繁體/簡體
分類 Linux系統 Self-hosting自架
標籤 Tailscale VPN
目錄

請參閱:開源內網穿透軟體比較

Tailscale是一款開源的虛擬區域網路(virtual LAN)軟體,可將多個裝置組成虛擬內網,互相連線,存取共享資源。

適合用在遊戲對戰連線,或是從外部網路存取家中的NAS,再也不需要port forwarding,將機器暴露到公共網路了。

Tailscale設定起來十分簡單。最殺的是,Tailscale有個叫「MagicDNS」的功能,讓您不需要打長長的數字IP,可以直接打網址連線到其他裝置!

1. Tailscale安全性
#

Tailscale基於WireGuaed技術開發,客戶端是開源軟體,採MIT授權釋出。伺服端則是閉源的軟體。

使用前需要到Tailscale公司的網站註冊一個帳號。免費版方案最多加入100個裝置,最多邀請3名帳號加入自己的網路。

你的使用者帳號會有自己的虛擬區網,稱之為「Tailnet」。你會將所有的裝置都加入進去,形成一個虛擬區網。原理圖如下:

每個安裝Tailscale裝置在連線的時候,會先到Tailscale控制伺服器獲取公鑰,並得知有哪些裝置可以連線。網路傳輸流量預設是不會經過Tailscale公司的伺服器的。在這裡,Tailscale的控制伺服器僅用於WireGuard的P2P hole punching,幫兩個裝置之間的連線「牽線」而已。而且資料傳輸全程點對點加密,難以被第三方竊聽傳輸內容。

任何裝置要加入你的Tailscale網路,都必須經過你手動同意。否則其他人沒有加入網路,是看不到你的虛擬區域網路內的裝置的。

當然,所有裝置連線的時候還是要會經過Tailscale控制伺服器,這樣的話Tailscale公司便能知道你在使用他們的服務。

如果你若不信任Tailscale公司的控制伺服器,亦可用第三方開發的Headscale自己架設中繼伺服器。

1. 安裝TaileScale客戶端
#

Linux
#

  1. 參考官網指示,使用指令稿安裝。它支援Ubuntu、Arch、Fedora系的發行版
curl -fsSL https://tailscale.com/install.sh | sh
  1. 安裝後設定開機自動啟用Tailscale服務
sudo systemctl enable --now tailscaled

# 檢查服務狀態
sudo systemctl status tailscaled
  1. 將裝置加入Tailscale網路,點選終端機顯示的連結,到Tailscale網頁後台驗證(見下一段),並在後台按Approve同意加入。
sudo tailscale up
  1. 如果啟用MagicDNS,Tailscale可能會覆寫/etc/resolv.conf導致Docker服務的DNS出問題,這時請參考官方說明,在Linux安裝systemd-resolved服務解決:
sudo apt install systemd-resolved

sudo systemctl restart NetworkManager
  1. Linux版Tailscale目前還沒有桌面GUI,只能執行sudo tailscale web叫出簡陋的網頁界面。你可以加裝第三方開發的KTailctlTrayscale

Windows
#

Tailscale支援Windows 10以上系統。

官網下載exe安裝。

點選系統匣的Tailscale圖示,開啟Tailscale應用程式,登入帳號。

Tailscale服務會在Windows開機之後自動啟動。

macOS
#

App Store下載安裝,開啟Tailscale應用程式,登入帳號。

Android
#

請至Google Play下載。

iOS
#

請至App Store下載。

3. 將裝置加入Tailscale網路
#

  1. 官網註冊帳號,使用Google帳號登入

  2. 登入後Machines面板是空的,需要在裝置安裝Tailscale,將其加入網路(Tailscale安裝過程見上一節)。

  3. 加入方法有二種,如果是您自己的裝置,那就在電腦或手機上的Tailscale客戶端登入帳號即可加入網路。另一種方法是邀請(invite)其他Tailscale帳號加入網路。

  4. 裝置加入後還需要按Approve同意加入

  5. Tailscale免費版方案最多新增100個裝置。如下圖,每個裝置會分配到一個固定的虛擬區域IP (Addresses),要互相連線就是打這些IP。

4. Tailscale實際使用例
#

當裝置都加入Tailscale網路後,就彷彿處於一個區域網路,可以嘗試互相連線了。

譬如從Android手機SSH到Linux電腦,只需安裝Termux,輸入ssh user@<電腦的Tailscale IP>即可連線。

如果覺得記IP太麻煩,你可以到Tailscale的網頁後台 → DNS啟用Magic DNS。手機有使用私人DNS伺服器的記得也要在下方Nameservers填入DNS伺服器的IP。

這樣在裝置連到Tailscale網路的情況下,就可以不用IP,改用裝置的hostname來連線了。例如Linux電腦的hostname在Tailscale面板顯示為archlinux-pc,那麼SSH進去的指令就變成ssh user@archlinux-pc

關於其他用途,Tailscale可以用在存取自架服務上,請參閱本站自架雲端服務的實例

如果要讓其他用戶加入你的網路,請使用帳號邀請功能。設定好權限之後,別人就可以存取你的TailScale裝置。

5. 改善Tailscale延遲
#

Tailscale會嘗試各種方式連線,盡量使用P2P連線。但若P2P失敗就會走relay伺服器,導致延遲變高。遇到這種狀況就得開放通訊埠讓裝置之間做P2P連線。

使用tailscale status指令查看兩個節點是否有P2P成功,出現relay的話就是走官方伺服器,延遲較高。

100.705  linux             linux   active; -
100.125  windows          windows  active; relay

Tailscale使用的通訊埠是41641/udp,在連線的二個裝置用指令開放防火牆:

sudo ufw allow 41641/udp

再用tailscale status指令確認是否有顯示direct,表示P2P成功

100.705  linux             linux   active; -
100.125  windows          windows  active; direct

延伸閱讀
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

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