Mae tair amod yn penderfynu a yw gwyliwr yn helpu neu’n niweidio: beth all y prawf ei wahaniaethu, faint o fethiannau olynol sy’n cyfiawnhau gweithredu, ac ai ailgysylltu neu newid i weinydd arall yw’r weithred. Nid yw llinell cron sy’n pingio cyfeiriad cyhoeddus yn ateb yr un ohonynt yn dda. Mae’n ailgysylltu twneli sy’n hollol iawn ac yn gadael twneli sydd wedi torri, ac mae’n gwneud y ddau heb unrhyw gofnod. Mae’r dyluniad sy’n werth ei gadw yn gwneud y tri dewis hynny’n eglur.

Y prawf yw’r rhan sy’n penderfynu popeth arall.

Beth mae ping i’r rhyngrwyd yn ei brofi mewn gwirionedd

Mae pingio datryswr cyhoeddus yn dangos bod y llwybr rhyngrwyd lleol yn fyw. Nid yw’n profi bod y twnnel yn cario traffig, ac mewn proffil twnnel llawn mae’r ping ei hun yn teithio drwy’r twnnel, felly gall ateb iach a thwnnel toredig fodoli gyda’i gilydd tra bo’r cleient yn dal i anfon pecynnau. Os yw’r proffil yn anfon chwiliadau enwau drwy’r twnnel, mae methiant DNS yn cael ei ddarllen fel cyswllt marw ac yn cychwyn ailgysylltiad na all drwsio dim.

Nid yw’r naill gyfeiriad na’r llall o’r gwall yn ymddangos yn y cod allanfa. Mae gwyliwr wedi’i adeiladu ar y signal hwnnw yn dafliad ceiniog gydag amserlen cron.

Archwiliwch rywbeth sy’n byw y tu ôl i’r twnnel

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

Archwiliwch o’r tu mewn, y gwiriad rhataf yn gyntaf. Mae bodolaeth y rhyngwyneb yn dweud bod y twnnel i fyny; mae chwiliad llwybr i gyfeiriad mewnol hysbys yn dweud y byddai traffig yn mynd i mewn iddo; mae prawf TCP i westeiwr ar yr ochr arall yn dweud bod rhywbeth yn ateb mewn gwirionedd. Mae ceisiadau atsain yn unig yn twyllo: mae llawer o westeiwyr mewnol yn ateb TCP yn fodlon tra’n gollwng ICMP, felly mae gwyliwr wedi’i adeiladu ar ping yn dal i ailgysylltu twnnel na stopiodd weithio erioed.

Cadwch y prawf yn gyfyngedig o ran amser a rhowch statws allanfa ar wahân iddo. Mae prawf sy’n hongian am ddeg ar hugain o eiliadau yn troi gwyliwr yn synhwyrydd methiant gydag oedi cynhenid.

Dewiswch rhwng un llinell a dolen

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

Mae cofnod cron yn un llinell heb gof, sy’n addas i liniadur lle nad yw ailgysylltiad ychwanegol yn costio dim. Mae dolen dan oruchwyliaeth yn cadw cyfrifiwr ac yn gweithredu dim ond ar ôl sawl methiant, sy’n atal cyswllt simsan rhag achosi storm o ailgysylltiadau. Beth bynnag, rhedwch hi o dan oruchwyliwr fel ei bod yn goroesi damwain ac yn ysgrifennu i’r cylchgrawn. Dewiswch yn ôl a yw ailgysylltiad ffug yn bwysig, nid yn ôl pa fersiwn sy’n fyrrach.

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

Mae’r ddolen honno’n cyfrif methiannau olynol yn hytrach na chyfran dros ffenestr. Mae ffenestr angen cloc a chof o samplau, ac mae’r rhan fwyaf o’r bygiau mewn gwylwyr wedi’u hysgrifennu â llaw yn byw yn y rhifyddeg honno.

Mae newid i weinydd arall yn benderfyniad gwahanol

Mae newid gweinyddwyr yn wahanol i ailgysylltu. Rhwygwch yr hen gyswllt yn gyntaf, oherwydd bydd ail gleient sy’n cychwyn tra bo’r cyntaf yn dal y cyfeiriad yn gwrthdaro. Cyfrifwch fethiannau olynol cyn newid, capiwch yr ymdrechion, a phrofwch eto ar ôl i’r cyswllt newydd fod i fyny yn hytrach nag ymddiried yng nghod allanfa’r gorchymyn connect. Ni ddylai cyfluniad anghywir gylchdroi drwy bob gweinydd mewn dolen.

Peidiwch â phrofi cyfeiriad cyhoeddus y gweinydd VPN ei hun o du mewn twnnel llawn. Mae’r gwiriad hwnnw’n dibynnu ar y peth y mae’n ei brofi, ac mae’n adrodd llwyddiant tra bo’r llwybr y dylai fod wedi’i ddilysu wedi mynd.

Cofnodwch pa brawf a redodd, beth a ddychwelodd a pha weithred a ddilynodd. Mae’r cofnod hwnnw’n troi ailgysylltiad dirgel yn ddigwyddiad y gellir ei ddiagnosio.

Erthyglau cysylltiedig