Tre kushte vendosin nëse një rojtar ndihmon ose dëmton: çfarë mund të dallojë sonda, sa dështime radhazi justifikojnë veprimin dhe nëse veprimi është rilidhje apo kalim. Një rresht cron që bën ping drejt një adrese publike nuk u përgjigjet mirë asnjërës prej tyre. Ai rilidh tunele që janë në rregull dhe i lë tunelet e prishur siç janë, dhe të dyja i bën pa asnjë regjistrim. Dizajni që ia vlen të mbahet i bën këto tri zgjedhje të qarta.

Sonda është pjesa që vendos gjithçka tjetër.

Çfarë provon në të vërtetë një ping drejt internetit

Të bësh ping drejt një zgjidhësi publik tregon se rruga lokale e internetit është e gjallë. Nuk provon se tuneli mbart trafik, dhe në një profil me tunel të plotë vetë ping-u kalon nëpër tunel, kështu që një përgjigje e shëndoshë dhe një tunel i prishur mund të bashkëjetojnë ndërsa klienti vazhdon të përcjellë paketa. Nëse profili i dërgon kërkimet e emrave nëpër tunel, një dështim DNS lexohet si lidhje e vdekur dhe nis një rilidhje që nuk mund të rregullojë asgjë.

Asnjëra nga dy drejtimet e gabimit nuk shfaqet në kodin e daljes. Një rojtar i ndërtuar mbi atë sinjal është hedhje monedhe me një plan cron.

Sondojeni diçka që jeton prapa tunelit

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

Sondojeni nga brenda, kontrolli më i lirë i pari. Nëse ndërfaqja ekziston, tuneli është lart; një kërkim rruge drejt një adrese të brendshme të njohur tregon se trafiku do të hynte në të; një sondë TCP drejt një hosti në anën tjetër tregon se diçka vërtet përgjigjet. Vetëm kërkesat echo mashtrojnë: shumë hoste të brendshëm përgjigjen me kënaqësi ndaj TCP por hedhin ICMP, prandaj një rojtar i bazuar në ping rilidh vazhdimisht një tunel që nuk ka pushuar kurrë së punuari.

Mbajeni sondën të kufizuar në kohë dhe jepini një status daljeje të veçantë. Një sondë që rri varur tridhjetë sekonda e kthen një rojtar në një zbulues ndërprerjesh me vonesë të brendshme.

Zgjidhni midis një rreshti dhe një cikli

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

Një zë cron është një rresht i vetëm pa kujtesë, çka i shkon një laptopi ku një rilidhje shtesë nuk kushton asgjë. Një cikël i mbikëqyrur mban një numërues dhe vepron vetëm pas disa humbjeve, gjë që e pengon një lidhje të paqëndrueshme të shkaktojë një stuhi rilidhjesh. Në çdo rast, ekzekutojeni nën një mbikëqyrës që t’i mbijetojë një rrëzimi dhe të shkruajë në ditar. Zgjidhni sipas faktit nëse një rilidhje e kotë ka rëndësi, jo sipas asaj se cila version është më i shkurtër.

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

Ai cikël numëron dështime radhazi, jo një pjesë mbi një dritare. Një dritare kërkon një orë dhe një kujtesë mostrash, dhe shumica e gabimeve në rojtarët e ndërtuar me dorë jetojnë pikërisht në atë aritmetikë.

Kalimi është një vendim tjetër

Ndërrimi i serverit ndryshon nga rilidhja. Së pari shkëputni lidhjen e vjetër, sepse një klient i dytë që nis ndërsa i pari ende mban adresën do të përplaset. Numëroni dështimet radhazi përpara ndërrimit, kufizoni përpjekjet dhe sondojeni përsëri kur lidhja e re të jetë lart, në vend që t’i besoni kodit të daljes së komandës connect. Një konfigurim i gabuar nuk duhet të rrotullohet nëpër çdo server në një cikël.

Mos e sondoni adresën publike të vetë serverit VPN nga brenda një tuneli të plotë. Ai kontroll varet nga gjëja që po teston dhe raporton sukses ndërsa rruga që duhej të vërtetonte ka humbur.

Shënoni cila sondë u ekzekutua, çfarë ktheu dhe cili veprim pasoi. Ai regjistrim e kthen një rilidhje misterioze në një ngjarje që mund të diagnostikohet.

Artikuj të ngjashëm