openvpn и ufw killswitch не работают с DNS и автоматическим обновлением ufw

Так в основном я просто хочу переключатель уничтожения, таким образом, соединение только позволяется через VPN. Также я предпочел бы, чтобы openvpn сохранил попытку, снова соединяющуюся неограниченно долго, когда соединение тормозит.

Проблема Tha состоит в том, что я использую CyberGhost в качестве поставщика VPN, и они обеспечивают доменное имя как удаленное скорее затем IP-адрес ожога. Если это доменное имя разрешено, я получаю список IP-адресов. Теперь этот список изменяется.

То, что я сделал, - то, что я добавил up.sh сценарий к openvpn так в каждом запуске, он сбрасывает ufw, запрашивает список IP-адресов и добавляет все IP-адреса к ufw прежде initiaing соединение VPN.

openvpn.ovpn

client
remote 4-1-gb.cg-dialup.net 443
dev tun 
proto udp
auth-user-pass


resolv-retry infinite 
redirect-gateway def1
persist-key
persist-tun
nobind
cipher AES-256-CBC
auth SHA256
#ping 5
#ping-exit 60
#ping-timer-rem
explicit-exit-notify 2
script-security 2
remote-cert-tls server
route-delay 5
tun-mtu 1500 
fragment 1300
mssfix 1200
verb 4
comp-lzo
auth-user-pass login.conf
keepalive 10 60

ca ca.crt

cert client.crt

key client.key

up.sh

#!/bin/sh
echo "Updating FireWall.."
sh ./firewall_setting.sh
echo "Bringing up the tunnel DNS.."
resolvconf -a tap0 <resolve.conf

firewall_setting.sh

#!/bin/bash
###########################################
#          Created by Thomas Butz         #
#   E-Mail: btom1990(at)googlemail.com    #
#  Feel free to copy & share this script  #
###########################################

# Adapt this value to your config!
VPN_DST_PORT=443

# Don't change anything beyond this point
###########################################

# Check for root priviliges
if [[ $EUID -ne 0 ]]; then
   printf "Please run as root:\nsudo %s\n" "${0}"
   exit 1
fi


# Reset the ufw config
ufw --force reset

# let all incoming traffic pass
ufw default deny incoming
# and block outgoing by default
ufw default deny outgoing

list="$(dig +short remote 4-1-gb.cg-dialup.net)"
for item in $list
do
    ufw allow out to $item
    ufw allow in from $item
done
ufw allow out to  8.8.8.8
ufw allow in from 8.8.8.8
ufw allow out on tun0

ufw allow out 53
# Allow local IPv4 connections
ufw allow out to 10.0.0.0/8
ufw allow out to 172.16.0.0/12
ufw allow out to 192.168.0.0/24
ufw allow in from 192.168.0.0/24

# Allow IPv4 local multicasts
ufw allow out to 224.0.0.0/24
ufw allow out to 239.0.0.0/8

# Allow local IPv6 connections
ufw allow out to fe80::/64
# Allow IPv6 link-local multicasts
ufw allow out to ff01::/16
# Allow IPv6 site-local multicasts
ufw allow out to ff02::/16
ufw allow out to ff05::/16

# Enable the firewall
ufw enable

down.sh

#!/bin/sh
echo "Bringing down the tunnel DNS.."
resolvconf -d tap0

resolve.conf

nameserver 8.8.8.8
options edns0

Когда я пытаюсь работать

sudo openvpn --config openvpn.ovpn --script-security 2 --up up.sh --down down.sh --up-restart

Это работает просто великолепно, но когда я отключаю сетевой кабель в течение 10 секунд для моделирования проблемы, и я включаю его назад, я добираюсь:

Tue Jul 16 11:11:43 2019 us=970540 Initialization Sequence Completed
Tue Jul 16 11:11:51 2019 us=671314 Recursive routing detected, drop tun packet to [AF_INET]37.120.159.36:443
Tue Jul 16 11:11:51 2019 us=671489 Recursive routing detected, drop tun packet to [AF_INET]37.120.159.36:443
Tue Jul 16 11:11:51 2019 us=671531 Recursive routing detected, drop tun packet to [AF_INET]37.120.159.36:443
Tue Jul 16 11:11:53 2019 us=670882 Recursive routing detected, drop tun packet to [AF_INET]37.120.159.36:443
.
.
.
Tue Jul 16 11:14:40 2019 us=230774 [UNDEF] Inactivity timeout (--ping-restart), restarting
Tue Jul 16 11:14:40 2019 us=230875 TCP/UDP: Closing socket
Tue Jul 16 11:14:40 2019 us=230958 down.sh tun0 1500 1626 10.248.202.202 10.248.202.201 restart
Bringing down the tunnel DNS..
No resolv.conf for interface tap0
Tue Jul 16 11:14:40 2019 us=234713 WARNING: Failed running command (--up/--down): external program exited with error status: 1
Tue Jul 16 11:14:40 2019 us=234744 Exiting due to fatal error
Tue Jul 16 11:14:40 2019 us=234786 /sbin/ip route del 10.248.200.1/32
Tue Jul 16 11:14:40 2019 us=236717 /sbin/ip route del 37.120.159.36/32
RTNETLINK answers: No such process
Tue Jul 16 11:14:40 2019 us=237808 ERROR: Linux route delete command failed: external program exited with error status: 2
Tue Jul 16 11:14:40 2019 us=237859 /sbin/ip route del 0.0.0.0/1
Tue Jul 16 11:14:40 2019 us=239058 /sbin/ip route del 128.0.0.0/1
Tue Jul 16 11:14:40 2019 us=240052 Closing TUN/TAP interface
Tue Jul 16 11:14:40 2019 us=240104 /sbin/ip addr del dev tun0 local 10.248.202.202 peer 10.248.202.201
Tue Jul 16 11:14:40 2019 us=287588 down.sh tun0 1500 1626 10.248.202.202 10.248.202.201 init
Bringing down the tunnel DNS..
No resolv.conf for interface tap0
Tue Jul 16 11:14:40 2019 us=292226 WARNING: Failed running command (--up/--down): external program exited with error status: 1
Tue Jul 16 11:14:40 2019 us=292267 Exiting due to fatal error

Я делаю что-то скручивание? Существует ли более легкий способ достигнуть этого? Вызовите это чувствует, что должно действительно быть что-то, жеманничают затем это.

0
задан 16 July 2019 в 13:32

2 ответа

Мое решение не идеально, поскольку оно могло бы позволить некоторым данным проходить прежде, чем уничтожить соединение, когда vpn не присутствует... Я установил мой на 1 секунду, Вы могли попробовать намного меньше. Посмотрите ниже. test.wav требует звукового файла (он не работает хорошо, походит на проблему параллелизма, но он действительно предупреждает меня), или опустите его. И мой для tun0, который является моим соединением VPN. проверьте Ваш использование

ip route

когда соединенный vpn и не соединенный для наблюдения различия.

# отметьте работает, это с sudo # обновление примечания 2, sudo не необходимо, не автоматически снова соединяясь (запрашивает мой пароль так или иначе).

 while (true)
  now=$(date +"%T")     
 do
  (ip route | grep tun0)> route.txt
 if [ -s route.txt ]
 then 
  echo "VPN is connected "
 else
  echo "VPN is OFF stopping internet connection"
  play test.wav  
  service network-manager stop 
  sleep 10
# to start it again 'sudo  service network-manager start'
 fi
 echo "$now"
 echo
 sleep 1
 done

для сна для меньше, чем секунда, получил этот https://serverfault.com/questions/469247/how-do-i-sleep-for-a-millisecond-in-bash-or-ksh

"Исторические реализации сна потребовали, чтобы число было целым числом и только приняло отдельный аргумент без суффикса. Однако сон GNU принимает произвольные числа с плавающей точкой. Посмотрите Плавающую точку.

Следовательно можно использовать сон 0.1, сон 1.0e-1 и подобные аргументы."

1
ответ дан 23 October 2019 в 23:37

Новая тонкая настройка гнома здесь утверждает, что сделала просто this.the, только протест состоит в том, что Вы должны быть подключены к vpn прежде, чем включить ее. У меня есть свое автоподключение ehternet к vpn на, который является главной кнопкой панели, которая говорит, что VP НА или VP ПРОЧЬ, и VPN ВНИЗ, когда это снижается. когда соединение потеряно и повторно подключено. VPM ВНИЗ должен быть нажат для выхода затем щелкнувший еще раз для подъема. никакие настройки в ТОНКИХ НАСТРОЙКАХ. Я понятия не имею, сколько времени это берет перед разъединением, но меньше, чем моя секунда в моем сценарии выше.

https://extensions.gnome.org/extension/1898/protectmevpn/

"Отключит все активные соединения (Wi-Fi, соединенный проводом), если включено, и Ваша VPN снижается или в режиме офлайн. Обязательно включите Ваше соединение VPN, прежде чем включат Защиту VPN. Для превращения это вкл\выкл просто нажимает VP-OFF на строку меню. Это изменится на (Защищенный от VPN) VP-ON и защитит Вашу конфиденциальность. На ошибках удостоверяются, у Вас есть установленный "nmcli" (nmcli-v &amp; gt; = 1.16.0)"

сопутствующая тонкая настройка является главным индикатором панели, который является 'VPN, произошел', или 'VPN снижается'. https://extensions.gnome.org/extension/1134/vpn-indicator/

0
ответ дан 23 October 2019 в 23:37

Другие вопросы по тегам:

Похожие вопросы: