In ping-wachter kin gjin stikken tunnel fan in sûne ûnderskiede
In ping nei it ynternet bewiist minder as it liket. Undersykje de tunnel fan binnenút, tel mislearrings foar’t jo hannelje, en behannelje it wikseljen fan tsjinner as in apart beslút.
Trije betingsten bepale oft in wachter helpt of skea docht: wat de probe ûnderskiede kin, hoefolle opienfolgjende mislearrings hanneljen rjochtfeardigje, en oft de hanneling in werferbining of in wiksel is. In cron-rigel dy’t in iepenbier adres pinget, antwurdet net goed op ien fan dy. Hy ferbynt tunnels opnij dy’t goed binne en lit tunnels dy’t stikken binne gewurde, en hy docht beide sûnder ien registraasje. It ûntwerp dat it wurdich is om te hâlden makket dy trije karren eksplisyt.
De probe is it diel dat al it oare bepaalt.
Wat in ping nei it ynternet echt bewiist
It pingjen fan in iepenbiere resolver lit sjen dat it lokale ynternetpaad libbet. It bewiist net dat de tunnel ferkear draacht, en op in profyl fan in folsleine tunnel reizget de ping sels troch de tunnel, sadat in sûn antwurd en in stikken tunnel tagelyk bestean kinne wylst de klant noch pakketten trochstjoert. As it profyl nammesykgings troch de tunnel stjoert, wurdt in DNS-flater as in deade keppeling lêzen en begjint in werferbining dy’t neat reparearje kin.
Net ien fan de beide rjochtingen fan de flater ferskynt yn de útgongskoade. In wachter boud op dat sinjaal is in muntssmyt mei in cron-skema.
Undersykje eat dat efter de tunnel libbet
ip -brief addr show tun0 ip route get 10.100.20.10 nc -z -w3 10.100.20.10 443
Undersykje fan binnenút, de goedkeapste kontrôle earst. Oft de interface bestiet, seit dat de tunnel omheech is; in rûtesyk nei in bekende ynterne adres seit dat ferkear deryn gean soe; in TCP-probe nei in gasthear oan de oare kant seit dat der echt wat antwurdet. Allinnich echo-fersiken misliede: in protte ynterne gasthearen antwurdzje graach op TCP mar smite ICMP fuort, sadat in wachter boud op ping in tunnel altyd wer ferbynt dy’t nea opholden is te wurkjen.
Hâld de probe yn tiid beheind en jou har in aparte útgongstatus. In probe dy’t tritich sekonden hinget, makket fan in wachter in útfalsdetektor mei in ynboude fertraging.
Kies tusken ien rigel en in lus
* * * * * nc -z -w5 10.100.20.10 443 || myvpn reconnect
In cron-ynskriuwing is ien rigel sûnder ûnthâld, wat past by in laptop wêr’t in ekstra werferbining neat kostet. In ûnder tafersjoch draaiende lus hâldt in teller by en hannelet pas nei ferskate mistekken, wat foarkomt dat in wifkjende keppeling in stoarm fan werferbiningen feroarsaket. Yn alle gefallen, rin it ûnder in tafersjochhâlder sadat it in crash oerlibbet en yn it sjoernaal skriuwt. Kies op grûn fan oft in ûnnedige werferbining fan belang is, net op grûn fan hokker ferzje koarter is.
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
Dy lus telt opienfolgjende mislearrings yn stee fan in fraksje oer in finster. In finster hat in klok en in ûnthâld fan samples nedich, en de measte flaters yn hânmjittich boude wachters libje yn dy rekkenkunde.
It wikseljen fan tsjinner is in oar beslút
Tsjinners wikselje ferskilt fan werferbinen. Skuor earst de âlde keppeling ôf, want in twadde klant dy’t begjint wylst de earste it adres noch hat, sil botse. Tel opienfolgjende mislearrings foar’t jo wikselje, behein de besykjen, en ûndersykje op ’e nij as de nije keppeling omheech is, yn stee fan te fertrouwen op de útgongstatus fan it connect-kommando. In ferkearde konfiguraasje soe net yn in lus troch elke tsjinner draaie moatte.
Undersykje net it eigen iepenbiere adres fan de VPN-tsjinner fan binnenút in folsleine tunnel. Dy kontrôle hinget ôf fan it ding dat er test, en meldt sukses wylst it paad dat er befêstigje moast fuort is.
Registrearje hokker probe rûn, wat er weromjoech en hokker hanneling folge. Dy registraasje makket fan in mysterieuze werferbining in diagnoasearber barren.