In werferbining dy’t yn in sekonde klear is, fertelt jo dat de klient fluch is. It fertelt net oft der wat ûntsnapt is wylst de tunnel del wie. In werferbining dy’t in minút duorret, fertelt jo dat de klient stadich is, en noch hieltyd net oft direkte ferkear yn it gat tastien wie. Dat binne twa mjittings, en in killswitch-test dy’t allinnich de earste rapportearret, hat de skeakel net test.

Twa observaasjes, twa aparte oardielen

De fraach nei beskikberens is ienfâldich: wannear wie de tunnel wer brûkber, en hie de beskerme applikaasje in nije ferbining nedich om dêr te kommen. De fraach nei hanthavening is oars: hokker pakketten ferlieten de masine tusken it momint dat de beskerming foel en it momint dat dy weromkaam.

Beäntwurdzje se mei aparte registraasjes. Ien rigel seit dat it gat in bepaald oantal sekonden duorre. In oare rigel seit oft in ûnbeskerme fersyk yn dat gat slagge. Se gearfoegje ta ien slagge of mislearre ferberget it gefal dat it meast ta docht: in snelle werferbining mei in lek.

Bou in probe dy’t jo timje kinne

Brûk in fersyk dat ûnskeadlik, goedkeap en ûnôfhinklik fan it eigen kontrôlekanaal fan de tunnel is. De lus hjirûnder printsje in tiidstimpel, in HTTP-status en de ferstrutsen tiid ien kear yn ’e sekonde, en it mislearret lûd ynstee fan te hingjen:

while true; do
  printf '%s ' "$(date +%H:%M:%S)"
  curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' --max-time 2 https://example.com || echo "curl-exit-$?"
  sleep 1
done

Lês de útgongskoaden fan curl, net allinnich de status. 28 betsjut dat it fersyk ferfallen is, sa sjoch in blokkearre paad der út. 6 betsjut dat nammeoplossing mislearre, wat in oare befinings is en faak de nijsgjirrigere. In 200 mei in koarte ferstrutsen tiid yn it gat betsjut dat ferkear derút mocht.

Skriuw de útfier nei in bestân en bewarje it. Terminalskiednis is gjin bewiis, en it nijsgjirrige part binne meast trije rigels yn it midden.

Feroarsaakje in echte flater, net in kreaze

Loskeppelje fan it menu fan de klient sels testet it koöperative paad, wêrby’t de klient tiid hat om syn blokkearringsregels te ynstallearjen. Deadzje ynstee it proses, of lûk de ûnderlizzende keppeling los, dan testet jo it paad dat in echte flater nimt.

Elke trigger oefenet in oar kodepaad. In útfal oan serverkant, ferlies fan in lokale keppeling en in klientcrash kinne elk in oare steat efterlitte, en ien fan har is wierskynlik it gefal dat jo úteinlik treffe. Rin de probe oer teminsten twa triggers en labelje de resultaten per trigger.

Lês it log om te sjen hoe tastien ferkear derút sjocht

In 200 of in snelle ferbiningsflater yn it gat is in lek, hokker rjochting it ek wiist. Time-outs troch it hiele gat binne de ferwachte foarm fan in blokkearringsbelied. Nammeoplossing dy’t slagget wylst ferbiningen mislearje, suggerearret dat de resolvert noch berikber is, wat in lek fan in oar soarte is.

Besteande sockets freegje soarch. In programma kin in ferbining bliuwe brûken dy’t it foar de loskeppeling iepene, dat skynber libbendich ferkear bewiist miskien net dat in nij paad tastien wie. De socketlist lit sjen oft in ferbining âlder is as de barren:

ss -tunp | grep -E 'ESTAB|SYN-SENT'
ip route get 198.51.100.7
resolvectl status | sed -n '1,20p'

Fergelykje de begjintiid fan de socket mei de tiidstimpel fan de loskeppeling. In ferbining âlder as de útfal is bewiis fan socketwergebrûk, net fan in lek, en it as flater rapportearje stjoert de folgjende persoan op syk nei in bug dy’t net bestiet.

Registrearje it resultaat yn in foarm dy’t in update oerlibbet

Skriuw de trigger, it gat yn sekonden, oft in net-blokkearre fersyk slagge, oft nammeoplossing slagge, en de ferzjes fan de klient en it bestjoeringssysteem. Dy set fan fiif feiten kin oer releases hinne fergelike wurde, wat in paragraaf proaza net kin.

Rin deselde test opnij nei in klientupdate of in profylwiziging, om’t blokkearringsgedrach in ymplemintaasjedetail is en it beweecht. It punt fan de registraasje is de beweging opmerke foardat it in ynsidint wurdt, net de klient ien kear sertifisearje.

Relatearre artikelen