
私は openvpn クライアントを使用していますが、デフォルト設定ではデフォルトの GW が上書きされます。(サーバー上のリダイレクト ゲートウェイ)
Linux クライアントには 2 つのルーティング テーブルがあります。1 つは (デフォルト eth0)、もう 1 つは up スクリプトによって追加された 100 = tun0 です。
必要なのは、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
問題が 1 つあります。route-nopull を使用すると、$route_vpn_gateway 環境変数が設定されません。route
-nopull を無効にすると、デフォルトのルーティング テーブルのデフォルト ゲートウェイが上書きされ、すべてのトラフィックがトンネルを通過するようになります。
サーバーにアクセスできないため、何も変更できません。OpenVPN
サーバーによって提供されるデフォルトの GW は動的であるため、これを静的に設定することはできません。
これを回避するにはどうすればいいでしょうか?
答え1
route-noexec
これを行う1つの方法は、オプション( の代わりに)を使用することですroute-nopull
。これにより、route-*環境変数が完全に設定されますが、ルートテーブルは実際には変更されず、ルートの変更はすべてルートアップ.sh