Поновно повезивање које се заврши за секунду каже да је клијент брз. Не каже да ли је нешто побегло док је тунел био искључен. Поновно повезивање које траје минут каже да је клијент спор, и даље не каже да ли је директан саобраћај био дозвољен у празнини. То су два мерења, а тест kill switch-а који извештава само о првом није тестирао прекидач.

Два запажања, две одвојене пресуде

Питање доступности је једноставно: када је тунел поново постао употребљив и да ли је заштићеној апликацији требала нова веза да тамо стигне. Питање примене је другачије: који су пакети напустили машину од тренутка када је заштита пала до тренутка када се вратила.

Одговорите на њих одвојеним записима. Један ред каже да је празнина трајала одређени број секунди. Други ред каже да ли је незаштићени захтев успео током те празнине. Њихово спајање у једно прошло или пало крије случај који је најважнији: брзо поновно повезивање са цурењем.

Направите сонду коју можете измерити

Користите захтев који је безопасан, јефтин и независан од сопственог контролног канала тунела. Петља испод исписује временску ознаку, HTTP статус и протекло време једном у секунди, и гласно пада уместо да виси:

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

Читајте излазне кодове curl-а, не само статус. 28 значи да је захтев истекао, тако изгледа блокиран пут. 6 значи да разрешавање имена није успело, што је други налаз и често занимљивији. 200 са малим протеклим временом током празнине значи да је саобраћају дозвољено да изађе.

Запишите излаз у датотеку и сачувајте је. Историја терминала није доказ, а занимљиви део су обично три реда у средини.

Изазовите стварни квар, а не уредан

Искључивање из сопственог менија клијента тестира кооперативни пут, где клијент има времена да инсталира своја правила блокирања. Уместо тога убијте процес или прекините доњу везу, па ћете тестирати пут којим иде стварни квар.

Сваки окидач вежба другачији пут кроз код. Испад на страни сервера, губитак локалне везе и пад клијента могу оставити различито стање, а један од њих је вероватно случај на који ћете на крају наићи. Покрените сонду кроз најмање два окидача и означите резултате по окидачу.

Читајте дневник да видите како изгледа дозвољени саобраћај

200 или брз неуспех везе током празнине је цурење, у ком год смеру показивало. Истекла времена кроз целу празнину очекивани су облик политике блокирања. Успешно разрешавање имена док везе падају указује да је резолвер још доступан, што је цурење друге врсте.

Постојећи сокети траже пажњу. Програм може наставити да користи везу коју је отворио пре искључења, па наизглед жив саобраћај можда не доказује да је нови пут дозвољен. Листа сокета показује да ли веза претходи догађају:

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

Упоредите време почетка сокета са временском ознаком искључења. Веза старија од испада доказ је поновне употребе сокета, а не цурења, и пријављивање као неуспеха шаље следећу особу у лов на грешку која не постоји.

Запишите резултат у облику који преживљава ажурирање

Запишите окидач, празнину у секундама, да ли је неки неблокиран захтев успео, да ли је разрешавање имена успело, те верзије клијента и оперативног система. Тај скуп од пет чињеница може се поредити између издања, што параграф прозе не може.

Покрените исти тест поново након ажурирања клијента или промене профила, јер је понашање блокирања детаљ имплементације и оно се помера. Смисао записа је да приметите помак пре него што постане инцидент, а не да сертификујете клијент једном.

Повезани чланци