將所有Tailscale裝置的流量導向到特定裝置。
在我們連上Tailscale組成的虛擬區域網路之後,所有的裝置依然是使用自己的網路上網,只有在二個裝置(節點)需要通訊的時候才會走Tailscale網路。因此你會發現Tailscale並沒有更改裝置地理IP的效果,它不過是負責組虛擬內網的工具而已。
那,能不能強制將所有流量都使用Tailscale傳輸呢?我們可以透過Tailscale的出口節點(Exit Node)功能,將所有Tailscale裝置的流量導向特定節點的出口。
大約就是讓其他裝置使用特定裝置的網路上網的意思。
如此一來就有以下應用場景:
- 加強網路通訊安全性,像使用公共Wifi容易有安全性顧慮,改用Tailscale傳輸就能啟用點對點加密功能。
- 提升網速,因為使用出口節點上網,所以遠端主機比你的網路快很多的話就會感到有感提升。反之,如果你電腦固網的網速比4G慢的話則網速會降速。
- 將Tailscale部署在租賃的外國VPS,此時Tailccale的功能就會變得像一般人認知的商業VPN,也就是達成地理IP跨區效果。
- 將Tailscale部署在台灣家中的NAS,從中國翻牆回自由網路。不過據說不是很穩定,容易被GFW識別流量。
啟用出口節點功能之後,各個節點之間依然可以互相連線。
1. 環境#
- Ubuntu 24.04電腦
- Windows 11 23H2電腦
- Android 14手機
三部裝置,全部都加入Tailscale網路。
任一作業系統都可以當作Tailscale節點出口,並且同時能有很多個。為了方便操作,我選用Ubuntu當節點出口。
所有的流量應該都會轉發到Ubuntu,所以Android和Windows不論使用什麼方式上網,對外IP都會變得跟Ubuntu一樣。
2. 安裝Tailscale#
Tailscale的中繼伺服器我是直接用官方的,如果你擔心官方伺服器被封鎖,也可以自架Headscale。
3. 設定出口節點#
- 首先要給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
- 如果有啟用UFW防火牆,還得允許IP Forwarding
sudo ufw default allow FORWARD
sudo ufw reload
- 在Ubuntu執行以下指令,廣播此節點可作為出口
sudo tailscale set --advertise-exit-node
之後在Tailscale的網頁後台可看到有哪些節點可作為出口
點進去選單,允許作為出口節點
然後在對應的Tailscale客戶端進行操作。請確保與Ubuntu之間的連線為Direct而非Relay。
Windows在系統匣面板選取出口節點即可
Android APP也是如此。
最後,檢查一下對外IP。Ubuntu要檢查公共IP可以使用此指令:
curl https://ipinfo.io/ip
- 至於其他裝置,就到 https://www.whatismyip.com網站看看吧,IP應該會變得跟出口節點一致。