Выключатель kill OpenVPN не работает

Мне нужен переключатель kill, который убивает исходящие соединения, если OpenVPN не запущен, потому что в противном случае VPN не будет иметь никакого смысла – если он отключится, и будет соединение, мой настоящий IP будет выпущен.

Предположим, что 1.2.3.4 – это мой адрес VPN-сервера, и это мои iptables после того, как я выполнил свой сценарий переключения kill:

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- 255.255.255.255 anywhere ACCEPT all -- 192.168.0.0/16 192.168.0.0/16 Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere 255.255.255.255 ACCEPT all -- 192.168.0.0/16 192.168.0.0/16 DROP all -- anywhere !1.2.3.4 

Имо это должно работать нормально. Но я не могу подключиться к Интернету, пока идет местный трафик. Вы видите проблему в этой конфигурации?

В этой ситуации мой компьютер является малиновым Pi 3, и я использую OpenVPN через TCP, и у меня есть Fritz.Box, подключенный к WAN.

Вы видите ошибки? Мой скрипт следующий:

 #!/bin/bash # check that OpenVPN is actually running. running=$(ps -e | grep openvpn) if [ $? -eq 1 ]; then echo "No active VPN session found." exit 1 fi iptables -F # Get WAN IP WAN_IP=$(wget -q -O - http://ipecho.net/plain) # Configure IPTable rules # Change eth0 to wlan0 (or whatever network interface is being used) for wireless iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A OUTPUT -d 255.255.255.255 -j ACCEPT iptables -A INPUT -s 255.255.255.255 -j ACCEPT iptables -A INPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT iptables -A OUTPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE iptables -A OUTPUT -o eth0 ! -d $WAN_IP -j DROP 

Он собран со следующими источниками: https://github.com/qbwaggle/vpnkillswitch/blob/master/vpnkillswitch.sh , https://www.reddit.com/r/VPN/comments/43djk3/generic_kill_switch_script_for_openvpn_linux/

Я тоже пробовал эти сценарии самостоятельно, но они тоже не работают (я думаю, что это одна и та же ошибка?).

Есть идеи? Заранее спасибо.

OpenVPN позволяет использовать внешние скрипты, когда следующая директива,

  script-security 2 

Включен в файлы конфигурации клиента. Использовать директивы

 up /path/to/executable/script down /path/to/another/executable/script 

Для запуска этих двух скриптов, когда интерфейсы настраиваются или срываются. В вашем случае это не имеет значения, но вы можете использовать вниз, чтобы сбить все сетевые интерфейсы при смене OpenVPN, чтобы убедиться, что трафик не просочился через незашифрованные каналы. Обратите внимание, что если OpenVPN зависает или отключается, пока ваш клиент считает, что он подключен , утечек не будет, поскольку трафик по-прежнему отправляется зашифрованным (и, возможно, сжатым) сервером OpenVPN. Таким образом, его невозможно перехватить.

Сценарий вниз может быть записан следующим образом:

 #!/bin/bash find /sys/class/net -mindepth 1 -maxdepth 1 -exec sh -c '[ "$1" != "lo" ] && ip link set dev $(basename $1) down' something {} \; 

Это снижает все интерфейсы, кроме lo, которые необходимы для работы вашего ПК.

  • Почему моя VPN не будет подключаться?
  • Могу ли я настроить Windows 7 VPN, чтобы только заблокированные в Китае сайты маршрутизировались через VPN?
  • Cisco VPN перестает просматривать Windows 7
  • Как заставить только Chrome отправлять сетевой трафик через VPN-соединение в Windows 7?
  • На windows 7, vpn'ing для работы, как заставить весь трафик использовать VPN?
  • Как заставить Windows 7 использовать определенные сетевые адаптеры для каждой программы?
  • «Java недоступен» в Firefox 32 бита
  • Перенаправление локальной локальной сети и интернет-трафика в VPN
  • Как я могу запретить создание маршрута в Windows XP при подключении к Cisco VPN?
  • Лучший способ передачи файлов через Интернет?
  • Может ли веб-сайт видеть / знать мой MAC-адрес, даже если я использую VPN?
  • Interesting Posts

    получить тип NSNumber

    Java: случайное длинное число в диапазоне 0 <= x <n

    Powershell, поставщик файловой системы, фильтрация Get-ChildItem … где находятся официальные документы?

    Как я могу получить доступ к моему мини-компьютеру (RaspberryPi / MK802 / Mele A1000 / VIA APC) через ethernet / wifi без монитора?

    Как добавить амперсанд для значения в файле конфигурации приложения ASP.net/C#

    Сделать Windows 10 распознавать Bluetooth-ключ как Bluetooth?

    Скопируйте профиль пользователя по умолчанию – учетная запись администратора

    R управления памятью / не может выделить вектор размера n Mb

    Необходима миграция из GCM в FCM?

    Объединение C ++ в C #

    В чем разница между JPA и Hibernate?

    Пользовательские шрифты и XML-макеты (Android)

    Где вы устанавливаете и получаете доступ к параметрам конфигурации во время выполнения для среды службы?

    Возможно ли «заполнить» форму Google, используя данные из электронной таблицы google?

    Java: как прервать чтение streamа из System.in

    Давайте будем гением компьютера.