
Ich verwende einen OpenVPN-Client. Mit meiner Standardkonfiguration wird das Standard-GW überschrieben. (Gateway auf dem Server umleiten)
Ich habe 2 Routing-Tabellen auf meinem Linux-Client, 1 (Standard eth0), 100 = tun0, die von meinem Up-Skript hinzugefügt wird.
Was ich brauche, ist ein geteiltes Routing mit 2 verschiedenen Routing-Tabellen.
OpenVPN-Client-Konfiguration:
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
Route-Up-Skript:
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
Es gibt ein Problem: Bei Verwendung von route-nopull wird die Umgebungsvariable $route_vpn_gateway nicht ausgefüllt.
Wenn ich route-nopull deaktiviere, wird das Standard-Gateway in meiner Standard-Routing-Tabelle überschrieben, sodass der gesamte Datenverkehr durch den Tunnel geht.
Ich habe keinen Zugriff auf den Server, daher kann ich dort nichts ändern.
Das Standard-GW, das mir vom OpenVPN-Server bereitgestellt wird, ist dynamisch, daher kann ich es nicht statisch einstellen.
Wie kann man das umgehen?
Antwort1
Eine Möglichkeit hierfür ist die Verwendung der route-noexec
Option (anstelle von route-nopull
). Dadurch werden Ihre Umgebungsvariablen route-* vollständig ausgefüllt, Ihre Routentabelle wird jedoch nicht geändert. Alle Änderungen an der Route werden Ihremroute-up.sh