Mam kontener dokerów na hoście LUbuntu 15.10.
Ten kontener używa klienta openvpn do łączenia się z kontem VPN.ac.
To jest skrypt, który uruchamiam, aby zrestartować połączenie VPN, jeśli nie działa:
#! /bin/bash
while true
do
sleep 60s
ps -ef | grep -v grep | grep "/usr/sbin/openvpn --cd /etc/openvpn --config /etc/openvpn/default.conf --redirect-gateway"
if [ $? -eq 1 ] ; then
sv restart openvpn
fi
done
Problem polega na tym, że jeśli połączenie internetowe zostanie zerwane, po powrocie do skryptu skrypt mówi, że nie jest w stanie rozwiązać nazwy hosta serwera VPN i muszę ponownie uruchomić kontener.
Czy jest na to lepszy sposób?
BTW powodem, dla którego szukam całej instrukcji, jest to, że mam inny kontener działający jako serwer VPN i jeśli po prostu wykonam polecenie „grep openvpn”, znajdzie on również inną usługę.
Dzięki.
PS - Proszę zobaczyć poniżej zawartość pliku konfiguracyjnego OpenVPN.
remote nl1.vpn.ac 50000 udp
dev tun
tls-client
persist-tun
persist-key
nobind
pull
redirect-gateway def1
route-delay 3
auth-user-pass pw
keepalive 10 60
verb 3
explicit-exit-notify 2
remote-cert-tls server
setenv CLIENT_CERT 0
key-direction 1
cipher AES-256-CBC
auth SHA512
<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN Static key V1-----
</tls-auth>
script-security 2
up update-resolv-conf.sh
down update-resolv-conf.sh
resolv-retry
gdzieś dyrektywę?Odpowiedzi:
Zwykle nie powinieneś robić tego w ten sposób: stwierdzenie podobne
w pliku konfiguracyjnym klienta automatycznie zrestartuje klienta po 60 sekundach bez pingowania. Pingi są wysyłane co 10 sekund, jeśli pominięto 6, klient uruchamia się ponownie.
Alternatywnie możesz uruchomić openvpn jako usługę; w dystrybucjach systemd, po prostu skopiuj plik
/lib/systemd/system/[email protected]
do nowego pliku, powiedz/lib/systemd/system/[email protected]
i zmień liniędo
W końcu,
oznacza, że utraciłeś konfigurację DNS, jeśli nie cała łączność. Nie podałeś wystarczających szczegółów, aby to rozwiązać, możesz spróbować, sprawdzając, czy utraciłeś łączność, czy tylko DNS przez
Jeśli otrzymasz odpowiedź, utraciłeś konfigurację DNS (najprawdopodobniej
/etc/resolv.conf
plik jest pusty), jeśli nie utraciłeś całej łączności.Edytuj :
Na pewno. Masz dwie opcje: albo usuń
persist-tun
, jak poprawnie wskazał DanielB, albo użyj `persist-remote-ip. Zgodnie z instrukcją :źródło
persist-tun
.