前言
若你正在使用 Tailscale 的 --advertise-routes
功能,你可能會知道他實現的方式是使用 SNAT。簡單來說,這個方式會網段偽裝成這個路由器的 IP 位址,對方看到的所有來源位址都會是這台路由器,而不是實際的內部 IP 位址,這確實是一個很簡易的訪問方式。
但如果你現在正在建構 Site-to-site VPN 呢,你想讓兩個網段打通,你會再兩台路由器上的 Tailscale 都設置 --advertise-routes
網段,這時候你不會希望繼續使用 SNAT 來偽裝。這篇文章就是講講如何關閉使用 SNAT 的方式。
此作法僅能在 Linux 上實現。
操作方式
其實在 Tailscale 上建構 Site-to-site VPN 這點,官方早就也想過了,所以只要在 tailscale up
的命令帶上一個參數,就可以將 SNAT 禁用。
在這個範例中,我們假設 A 點會宣告 192.168.1.0/24
網段,B 點會宣告 192.168.2.0/24
網段。
A 點設定方式:
tailscale up --accept-routes --advertise-routes=192.168.1.0/24 --snat-subnet-routes=false
B 點設定方式:
tailscale up --accept-routes --advertise-routes=192.168.2.0/24 --snat-subnet-routes=false
在你宣告完之後,千萬不要忘記到 Tailsacle 的網頁允許這兩個網段。
最重要的重點就是 --snat-subnet-routes
,它會使得流量不使用 SNAT 包裝,流量會帶著內部 IP 位址往外傳送。