キルスイッチまたは接続交換を防ぐためのOpenVPN CLI

キルスイッチまたは接続交換を防ぐためのOpenVPN CLI

利用可能な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のパスが解放されると、そのパスはそのまま残ります。追加のパスはblackholeprohibitまたは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

おすすめ記事