具有多个路由表的OpenVPN

具有多个路由表的OpenVPN

我使用的是 openvpn 客户端,使用默认配置会覆盖默认网关。(服务器上的重定向网关)
我的 Linux 客户端上有 2 个路由表,1(默认 eth0),100 = tun0,由我的 up 脚本添加。
我需要使用 2 个不同的路由表进行拆分路由。

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

有一个问题,当使用 route-nopull 时,$route_vpn_gateway 环境变量未填充。
当我禁用 route-nopull 时,我的默认路由表上的默认网关将被覆盖,因此所有流量都会通过隧道。
我无法访问服务器,所以我无法在那里更改任何内容。OpenVPN
服务器为我提供的默认网关是动态的,所以我无法将其设置为静态。

如何解决这个问题?

答案1

一种方法是使用选项route-noexec(而不是route-nopull)。这将完全填充你的 route-* 环境变量,但实际上不会修改你的路由表,它会将所有路由修改留给你的路由启动脚本

相关内容