請參閱: 開源內網穿透軟體比較
Tailscale是一款基於WireGuard技術開發的虛擬區域網路(virtual LAN)VPN軟體,可將多個裝置組成虛擬內網,方便互相連線,存取共享資源。
適合用在遊戲對戰連線,或是從外部網路存取家中的NAS,再也不需要port forwarding,將機器暴露到公共網路了。
Tailscale設定起來十分簡單。最殺的是,Tailscale有個叫「MagicDNS」的功能,讓您不需要打IP,可以直接打網址連線到其他裝置!
1. Tailscale安全性#
Tailscale客戶端是開源軟體,採MIT授權釋出。伺服端則是閉源的。
Tailscale連線時會走Tailscale Inc公司的伺服器,僅用於P2P hole punching,資料傳輸全程點對點加密。若不信任官方伺服器,亦可用第三方開發的 headscale架設中繼伺服器。
免費版方案最多加入100個裝置,最多邀請3名帳號加入自己的網路。
2. 設定Tailscale網路#
至 官網註冊帳號,使用Google帳號登入
登入後Machines面板是空的,需要在裝置安裝Tailscale,將其加入網路(Tailscale安裝過程見下一節)。
加入方法有二種,如果是您自己的裝置,那就在電腦/手機上的Tailscale客戶端登入帳號即可加入網路。另一種方法是邀請(invite)其他Tailscale帳號加入網路。
裝置加入後還需要按Approve同意加入
Tailscale免費版方案最多新增100個裝置。如下圖,每個裝置會分配到一個固定的虛擬區域IP (Addresses),要互相連線就是打這些IP。
3. 安裝TaileScale#
Linux#
- 參考 官網指示,使用指令稿安裝,支援Debian/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
導致其他服務的DNS出問題,這時請參考 官方說明用systemd-resolved解決。Linux版Tailscale目前還沒有圖形界面,你可以加裝第三方開發的 KTailctl或 Trayscale。裝完後記得將使用者加入Tailscale的operator:
sudo tailscale set --operator=$USER
Windows#
Tailscale支援Windows 10以上系統。
至 官網下載exe安裝,點選系統匣開啟Tailscale應用程式,登入帳號。
macOS#
從 App Store下載安裝,開啟Tailscale應用程式,登入帳號。
Android#
請至 Google Play下載。
iOS#
請至 App Store下載。
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-k31cd
,那麼SSH進去的指令就變成ssh user@archlinux-k31cd
關於其他用途,Tailscale可以用在存取自架服務上,請參閱本站 自架雲端服務的實例
如果要讓其他用戶加入你的網路,請使用 帳號邀請功能。設定好權限之後,別人就可以存取你的TailScale裝置。
5. 改善Tailscale延遲#
Tailscale會嘗試各種方式連線,但若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