Так в основном я просто хочу переключатель уничтожения, таким образом, соединение только позволяется через 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
Я делаю что-то скручивание? Существует ли более легкий способ достигнуть этого? Вызовите это чувствует, что должно действительно быть что-то, жеманничают затем это.
Мое решение не идеально, поскольку оно могло бы позволить некоторым данным проходить прежде, чем уничтожить соединение, когда 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 и подобные аргументы."
Новая тонкая настройка гнома здесь утверждает, что сделала просто 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 & gt; = 1.16.0)"
сопутствующая тонкая настройка является главным индикатором панели, который является 'VPN, произошел', или 'VPN снижается'. https://extensions.gnome.org/extension/1134/vpn-indicator/