快轉到主要內容

Tailscale設定教學,免費內網穿透VPN

Linux系統 Self-hosting自架 VPN Tailscale
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

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

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網路
#

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

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

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

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

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

3. 安裝TaileScale
#

Linux
#

  1. 參考 官網指示,使用指令稿安裝,支援Debian/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. 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        qj985n2@     linux   active; -
100.125  windows     qj985n2@     windows  active; relay

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

sudo ufw allow 41641/udp

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

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

延伸閱讀
#

相關文章

ZeroTier使用教學:建立虛擬區網的VPN軟體
Linux系統 Self-hosting自架 VPN ZeroTier
Docker跑calibre-web,架設閱讀電子書伺服器
Linux系統 Self-hosting自架 Calibre Docker
用calibre管理E-hentai本子,自動給漫畫上標籤
Linux系統 Self-hosting自架 Calibre E-Hentai Doujinshi Manga

留言板

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

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。