利用可能なGUI(Kill Switchチェックボックスがあります)がないため、現在LinuxディストリビューションからVPNに接続するためにコマンドラインを介してOpenVPNを使用しています。
私の問題は、VPN接続が切断された場合にKillスイッチを追加したり、プライマリ接続への置き換えを防ぐ方法を見つけることができないことです。
現在の接続に使用するコマンドは次のとおりです。
openvpn --config /etc/openvpn/gateway.conf
基本的に、私はVPNが問題が発生した場合にプライマリ接続に戻るのを防ぐ簡単な方法を見つけたいと思います。 VPN接続が再び回復されるまで、接続が中断されることを望みます。
ゲートウェイ構成ファイル
client
dev tun
proto udp
remote us-california.privateinternetaccess.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/ca.crt
tls-client
remote-cert-tls server
auth-user-pass /etc/openvpn/login.conf
comp-lzo
verb 1
reneg-sec 0
crl-verify /etc/openvpn/crl.pem
auth-nocache
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.sh
ソースファイル:https://aur.archlinux.org/packages/private-internet-access-vpn
ベストアンサー1
より高いメトリックを使用してブラックホールルールを設定すると、これを行うことができます。各ルーティングルールに優先度の低い(より高いメトリック)冗長パスを追加し、OpenVPNのパスが解放されると、そのパスはそのまま残ります。追加のパスはblackhole
、prohibit
またはunreachable
パスです。
次の方法でこれを行うことができます。
#!/bin/sh
set -e
ip route replace blackhole "$ifconfig_local/$ifconfig_netmask"
i=1
while true; do
route_network_i="$(eval echo \$route_network_$i)"
route_netmask_i="$(eval echo \$route_netmask_$i)"
route_metric_i="$(eval echo \$route_metric_$i)"
if [ -z "$route_network_i" ]; then
break
fi
ip route replace blackhole "$route_network_i"/"$route_netmask_i" metric $(( $route_metric_i + 1 ))
i=$(( $i + 1 )
done