具有多個路由表的 OpenVPN

具有多個路由表的 OpenVPN

我正在使用 openvpn 客戶端,在預設配置下,預設 GW 被覆蓋。 (伺服器上的重定向網關)
我的Linux客戶端上有2個路由表,1(預設eth0),100 = tun0,它是由我的up腳本添加的。
我需要的是使用兩個不同的路由表來分割路由。

openvpn客戶端設定:

client
dev tun
proto udp
remote blea.com
auth-user-pass
persist-key
persist-tun
remote-cert-tls server
reneg-sec 0
keepalive 10 60
route-nopull
pull-filter ignore "ifconfig-ipv6"
script-security 2
up /etc/openvpn/route-up.sh
mute-replay-warnings
explicit-exit-notify 3
cipher AES-256-CBC
auth SHA512
tls-version-min 1.2

路由腳本:

if [ $(/bin/cat /etc/iproute2/rt_tables | /bin/grep $dev | /usr/bin/wc -l) -eq 0 ]; then
/bin/echo "100 tun0" >> /etc/iproute2/rt_tables

/bin/ip route add default via $route_vpn_gateway dev $dev table $dev

有 1 個問題,當使用route-nopull 時,$route_vpn_gateway 環境變數未填入。
當我停用route-nopull時,預設路由表上的預設閘道將被覆蓋,因此所有流量都會通過隧道。
我無權訪問伺服器,所以我無法更改那裡的任何內容。
我由 OpenVPN 伺服器提供服務的預設 GW 是動態的,因此我無法設定此靜態。

如何解決這個問題?

答案1

一種方法是使用 選項route-noexec(而不是route-nopull)。這將完全填充您的route-*環境變量,但實際上不會修改您的路由表,它將把所有路由修改留給您路由-up.sh

相關內容