Dual stack OpenVPN 預設閘道切換不完全

以往純IPv4的環境下,要讓client把所有的流量轉送到VPN的話,會在server上用下面這個語法,告訴client要把預設閘道轉到VPN上

push "redirect-gateway def1 bypass-dhcp"

如果server同時有IPv4和IPv6,就會改用這個語法,同時相容兩種client

push "redirect-gateway def1 ipv6 bypass-dhcp"

最近觀察到手機在連線的時候會出現這樣的訊息

NOTE: unable to redirect IPv4 default gateway - Cannot obtain current remote host address

連上之後,會發現只有IPv6走VPN,IPv4一樣是原本的行動網路

研究之後判斷是client端使用dns name連線到server時,會優先解析出IPv6,然後使用IPv6連線

因此client端知道server的IPv6地址,但不知道IPv4地址

收到server說要切換閘道的時候,需要先建立一個static route

而client因為不知道IPv4地址,所以只會在IPv6建route,並把default gateway轉過去

這部分的解法我是直接從server多推幾組default route

push "route 0.0.0.0 0.0.0.0 vpn_gateway"
push "route-ipv6 ::/0"

因為IPv6已經有打通的VPN連線,直接叫client把資料丟到tun device走VPN過去

這樣就能讓流量都經過VPN了

留言

粗體斜體刪除線連結引用圖片程式碼

注意:您的電子信箱將不會被公開,且網站連結不會被搜尋引擎採計