以往純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了
留言