請參閱:開源內網穿透軟體比較
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#
- 參考官網指示,使用指令稿安裝。它支援Ubuntu、Arch、Fedora系的發行版
curl -fsSL https://tailscale.com/install.sh | sh- 安裝後設定開機自動啟用Tailscale服務
sudo systemctl enable --now tailscaled
# 檢查服務狀態
sudo systemctl status tailscaled- 將裝置加入Tailscale網路,點選終端機顯示的連結,到Tailscale網頁後台驗證(見下一段),並在後台按Approve同意加入。
sudo tailscale up- 如果啟用MagicDNS,Tailscale可能會覆寫
/etc/resolv.conf導致Docker服務的DNS出問題,這時請參考官方說明,在Linux安裝systemd-resolved服務解決:
sudo apt install systemd-resolved
sudo systemctl restart NetworkManagerWindows#
Tailscale支援Windows 10以上系統。
至官網下載exe安裝。
點選系統匣的Tailscale圖示,開啟Tailscale應用程式,登入帳號。
Tailscale服務會在Windows開機之後自動啟動。
macOS#
從App Store下載安裝,開啟Tailscale應用程式,登入帳號。
Android#
請至Google Play下載。
iOS#
請至App Store下載。
3. 將裝置加入Tailscale網路#
至官網註冊帳號,使用Google帳號登入
登入後Machines面板是空的,需要在裝置安裝Tailscale,將其加入網路(Tailscale安裝過程見上一節)。

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

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; relayTailscale使用的通訊埠是41641/udp,在連線的二個裝置用指令開放防火牆:
sudo ufw allow 41641/udp再用tailscale status指令確認是否有顯示direct,表示P2P成功
100.705 linux linux active; -
100.125 windows windows active; direct


