OpenVPN client auto reconnect

 ( makgab | 2015. augusztus 10., hétfő - 9:27 )

Üdv!

Mi a szép megoldás arra, hogy az openvpn kliens (linux) automatikusan újracsatlakozzon?
Egy teszt szerver openvpn-el szépen működik, de előfordul, hogy akár 1napig nem elérhető a szerver.
Az openvpn kliens nem is látszódik a szerver openvpn-status.log fájljában. Tehát már nem kapcsolódik vissza.

Találtam 1-2 lehetőséget, de nem tudom mi az igazi megoldás ilyenkor.
auto-ovpn.sh on github
auto reconnect openvpn client trick

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

sub

Debian szerű rendszereknél a /etc/default/openvpn -ben az AUTOSTART= -be beírod a config nevét, amit rebootnál automatikusan indítani akarsz, és ez leszakadáskor is újra próbál csatlakozni. Mondjuk 1-2 napos szerver kiesés nekem nem volt, lehet, hogy van valami timeoutja, de néhány (tíz) percig biztos próbálkozik. Gondolom más distroknál is van ez a paraméter valami hasonló módon.

Rövid szakadás esetén az openvpn auto visszakapcsolódik, igen. De hosszabb időkiesés esetén már nem - ahogy tapasztaltam.
Ezért keresek erre megoldást.
Megnézem, amit írtál. Kösz!
A github-os auto reconnect script is jó lehet. Elvileg ilyenkor a kliensen a tun eszköz eltűnik, amit a script is figyel.

vegigneztem debianon az "AUTOSTART" valtozo kezeleset de semmilyen parameterezesre nem hasznalja az openvpn mukodesevel kapcsolatban. nekem ugy tunik ez a valtozo csak az instance-ok config neveit tartalmazza es csak az init-script start/stop-nal van szerepe.
az en tapasztalataim alapjan az openvpn mindig automatikusan ujracsatlakozott akar fel nap utan is. squeeze es wheezy aminel ez biztosan igy van.

Valószínű, ennyire nem néztem utána hirtelen, és átgondolva az újra konnektálást valószínű ez kevésbé befolyásolja, ha már elindult a kliens, az próbálkozik. Valószínű tényleg valami timeout-nak kellene utána nézni,ha van ilyen és egy idő után valóban abbahagyja a próbálkozást (nekem sem tűnt még ez fel).

A keepalive beállításnak nem tudom van-e ilyenkor jelentősége (alapértelmezett: "keepalive 10 120").

ez szerver oldalon mondja meg hogy mikor tekintse megszakadtnak a kapcsolatot a klienssel.

nem, ez számít mind kliens, mind szerver oldalon, de mást jelent mindkét helyen.

valoban. en azert nem probaltam hasznalni eddig kliens oldalon mert a szerver attolja a kliensnek a sajat keepalive beallitasat kapcsolodaskor.

Céghez jön be vagy 100 feletti vpn kapcsolat, én 3 15-el használom ezt az opciót. Default értékekkel sokszor megszakadt a kapcsolat.

Az AUTOSTART=true|false nem arra van,hogy maga az OpenVPN elinduljon-e boot során? Legalábbis tudtommal:)
Ami /etc/openvpn mappában van .conf file Linux alatt azokat automatikusan felhúzza boot során.

Erre kell egy script, ami figyeli, hogy él-e a kapcsolat és ha nem újraindítja.

Igen, igen, revideáltam magam két commenttel feljebb.

mondjuk lehet pingetni kliensbol a szerver vpn ip-jet, aztan ha nem ping akkor openvpn restart.
kozben rajottem, nekem miert nem volt gondom ilyesmivel: jellemzoen ha nem erik el a szervert az a kliens netkapcsolatanak hibajabol adodott, igy nem volt nevfeloldas es a "resolv-retry inifinte" megoldotta a vegtelen ujraprobalkozast.

A resolv-retry infinite parancsot próbáltad már a configban?


--resolv-retry n
If hostname resolve fails for --remote, retry resolve for n seconds before failing.

Set n to "infinite" to retry indefinitely.

By default, --resolv-retry infinite is enabled. You can disable by setting n=0.

Konkrét esetben a távoli openvpn szervernek csak IP címe van.

Jó lenne tudni, hogy hogy van konfigurálva a tunnel. A leggyakoribb gond az, hogy a privilégiumok eldobása miatt nem tudja olvasni illetve létrehozni a megfelelő konfigurációkat. Sok dologtól függ
keepalive (ez befolyásolja a ping-restart értékét)
ping-exit van e deklarálva.
Melyik helyen (server, client) mi van beállítva ezekből illetve hogy SIGUSR1 (ping-restart) esetén van e persist-tun persist-key.
Ennek nagy része a logból kiolvasható, ha többet írnál a kapcsolat beállításról, lehet, hogy könnyebben menne.....

# client.ovpn
client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key

# server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
# -----------------------------------

Ez esetben a kliens meddig próbálkozik?

Kliensbe is tedd be:
keepalive 10 60

Nálam hasonló konfig retry -vel + keepalive opciókkal napok után is visszajött a kliens, amikor online lett a szerver.

Valóban újrakapcsolódik. :)

proto udp esetén csak a ping szolgáltatás az amivel el tudja dönteni szakadt e kapcsolat. A fenti beállítás nem tartalmazza se a ping se a keepalive se a ping-exit se a ping-restart kulcsszót, a fenti szerverkonfiggal együtt elméletileg bármeddig kellene próbálkoznia. Mivel verb 3- van a log file el fogja mondani mi volt a leállás oka.

"ping" és "ping-restart" openvpn config opciókkal

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack