linux – 用于killswitch或连接回退防止的OpenVPN CLI

我正在使用OpenVPN通过命令行连接到我当前Linux发行版上的VPN,因为没有可用的GUI(具有killswitch复选框).

我的问题是,当VPN熄灭时,我找不到任何方法来添加killswitch或阻止回退到我的默认连接.

这是我目前用来连接的命令:

openvpn --config /etc/openvpn/gateway.conf

基本上,我想找到一种简单的方法来阻止我的VPN回退到默认连接,如果它熄灭.我只是希望我的连接在VPN连接恢复之前就已经死了.

gateway.conf

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

解决方法:

您可以通过设置具有更高度量标准的黑洞规则来实现此目的:对于每个路由规则,您希望添加具有较低优先级(较高度量标准)的重复路由,当OpenVPN的路由被拆除时,该路由将保持不变.这条附加路线是黑洞,禁止或无法到达的路线.

您应该可以使用以下内容:

#!/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
上一篇:在64位Ubuntu 12.04上安装32位Java(OpenJDK)


下一篇:Redis数据库的使用场景介绍(避免误用Redis)