Kolm tingimust otsustavad, kas valvur aitab või kahjustab: mida suudab sond eristada, kui mitu järjestikust ebaõnnestumist õigustab tegutsemist ja kas tegevus on taasühendamine või vahetus. Cron-rida, mis pingib avalikku aadressi, ei vasta neist ühelegi hästi. See ühendab uuesti tunneleid, mis on korras, ja jätab katkised tunnelid puutumata, ning teeb mõlemat ilma ühegi kirjeta. Disain, mida tasub hoida, teeb need kolm valikut selgeks.

Sond on osa, mis otsustab kõik muu.

Mida ping internetti tegelikult tõestab

Avaliku resolveri pingimine näitab, et kohalik internetitee on elus. See ei tõesta, et tunnel kannab liiklust, ja täistunneli profiilis läbib ping ise tunneli, nii et terve vastus ja katkine tunnel võivad eksisteerida korraga, samal ajal kui klient veel pakette edasi saadab. Kui profiil saadab nimeotsingud läbi tunneli, loetakse DNS-i tõrge surnud ühenduseks ja käivitab taasühendamise, mis ei suuda midagi parandada.

Kumbki vea suund ei ilmuta väljumiskoodis. Sellele signaalile ehitatud valvur on mündivise croni ajakavaga.

Uuri midagi, mis elab tunneli taga

ip -brief addr show tun0
ip route get 10.100.20.10
nc -z -w3 10.100.20.10 443

Uuri seestpoolt, kõige odavam kontroll kõigepealt. Kas liides on olemas, ütleb, et tunnel on püsti; otsing teadaolevale sisemisele aadressile ütleb, et liiklus siseneks sinna; TCP-sond teisel pool asuvasse hosti ütleb, et miski tõesti vastab. Ainuüksi kaja-päringud eksitavad: paljud sisemised hostid vastavad meelsasti TCP-le, kuid viskavad ICMP kõrvale, nii et pingil põhinev valvur ühendab uuesti tunnelit, mis ei lakanud kunagi töötamast.

Hoia sond ajaliselt piiratud ja anna sellele eraldi väljumisstaatus. Sond, mis ripub kolmkümmend sekundit, muudab valvuri katkestuste tuvastajaks, millel on sisseehitatud viivitus.

Vali üherealise ja tsükli vahel

* * * * * nc -z -w5 10.100.20.10 443 || myvpn reconnect

Cron-kirje on üks rida ilma mäluta, mis sobib sülearvutile, kus täiendav taasühendus ei maksa midagi. Järelevalvega tsükkel hoiab loendurit ja tegutseb alles pärast mitut möödalasku, mis hoiab ära puduloksu, mis tekitaks taasühenduste tormi. Igal juhul käivitage see supervisoriga, et see krahhi üle elaks ja ajakirja kirjutaks. Valige selle järgi, kas tarbetu taasühendus loeb, mitte selle järgi, milline versioon on lühem.

failures=0
while sleep 30; do
  if nc -z -w5 10.100.20.10 443; then failures=0
  else failures=$((failures+1)); fi
  if [ $failures -ge 3 ]; then myvpn reconnect; failures=0; fi
done

See tsükkel loeb järjestikuseid ebaõnnestumisi, mitte osakaalu akna jooksul. Aken vajab kella ja valimite mälu ning enamik käsitsi tehtud valvurite vigu elab just selles aritmeetikas.

Serveri vahetus on teine otsus

Serverite vahetamine erineb taasühendamisest. Rebi enne vana ühendus maha, sest teine klient, mis käivitub, kui esimene veel aadressi hoiab, põrkab kokku. Enne vahetust loe järjestikused ebaõnnestumised, piira katseid ja uuri uuesti, kui uus ühendus on püsti, selle asemel et usaldada käsu connect väljumisstaatust. Vale konfiguratsioon ei tohiks tsüklis läbi iga serveri käia.

Ära uuri VPN-serveri enda avalikku aadressi täistunneli seest. See kontroll sõltub asjast, mida ta testib, ja teatab edust, samal ajal kui tee, mida ta pidi valideerima, on kadunud.

Registreeri, milline sond töötas, mida see tagastas ja milline tegevus järgnes. See kirje muudab salapärase taasühendamise diagnoositavaks sündmuseks.

Seotud artiklid