Kill switch tests: mēriet starpību, ne tikai atkārtoto savienojumu
Ātrs atkārtots savienojums pierāda, ka klients ir ātrs. Pierakstiet, kas starpības laikā izgāja no mašīnas, kopā ar izmantoto trigeri, citādi tests ir izmērījis tikai pusi.
Atkārtots savienojums, kas beidzas sekundē, pasaka, ka klients ir ātrs. Tas nepaskaidro, vai kaut kas izbēga, kamēr tunelis bija izslēgts. Atkārtots savienojums, kas ilgst minūti, pasaka, ka klients ir lēns, un joprojām nepaskaidro, vai starpībā bija atļauts tiešais trafiks. Tie ir divi mērījumi, un kill switch tests, kas ziņo tikai par pirmo, nav pārbaudījis slēdzi.
Divi novērojumi, divi atsevišķi spriedumi
Pieejamības jautājums ir vienkāršs: kad tunelis atkal kļuva lietojams, un vai aizsargātajai lietotnei vajadzēja jaunu savienojumu, lai tur nokļūtu. Izpildes jautājums ir cits: kuras paketes atstāja mašīnu no aizsardzības kritiena līdz tās atgriešanās brīdim.
Atbildiet uz tiem ar atsevišķiem ierakstiem. Viena rinda saka, ka starpība ilga noteiktu sekunžu skaitu. Cita rinda saka, vai šajā starpībā izdevās neaizsargāts pieprasījums. To sapludināšana vienā izturēts vai neizdevās paslēpj svarīgāko gadījumu: ātru atkārtotu savienojumu ar noplūdi.
Uzbūvējiet zondi, kuru var izmērīt laikā
Izmantojiet pieprasījumu, kas ir nekaitīgs, lēts un neatkarīgs no paša tuneļa vadības kanāla. Zemāk esošā cilpa reizi sekundē izdrukā laika zīmogu, HTTP statusu un pagājušo laiku, un tā skaļi neizdodas, nevis uzkaras:
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
Lasiet curl izejas kodus, ne tikai statusu. 28 nozīmē, ka pieprasījuma laiks beidzās, tā izskatās bloķēts ceļš. 6 nozīmē, ka vārdu atrisināšana neizdevās, kas ir cits atradums un bieži vien interesantākais. 200 ar īsu pagājušo laiku starpībā nozīmē, ka trafikam tika ļauts iziet.
Ierakstiet izvadi failā un saglabājiet to. Termināļa vēsture nav pierādījums, un interesantā daļa parasti ir trīs rindas vidū.
Izraisiet īstu kļūmi, nevis sakārtotu
Atvienošanās no paša klienta izvēlnes pārbauda kooperatīvo ceļu, kur klientam ir laiks instalēt savus bloķēšanas noteikumus. Tā vietā nogaliniet procesu vai pārtrauciet apakšējo saiti, un jūs pārbaudīsiet ceļu, pa kuru iet īsta kļūme.
Katrs trigeris trenē citu koda ceļu. Servera puses traucējums, vietējās saites zudums un klienta avārija katrs var atstāt citu stāvokli, un viens no tiem, visticamāk, būs gadījums, ar ko beigu beigās saskarsities. Palaidiet zondi vismaz ar diviem trigeriem un atzīmējiet rezultātus pēc trigera.
Lasiet žurnālu, lai redzētu, kā izskatās atļautais trafiks
200 vai ātra savienojuma kļūme starpībā ir noplūde, uz kuru pusi tā arī rādītu. Laika izbeigšanās visā starpībā ir gaidītā bloķēšanas politikas forma. Vārdu atrisināšanas veiksme, kamēr savienojumi neizdodas, liek domāt, ka atrisinātājs joprojām ir sasniedzams, kas ir cita veida noplūde.
Esošajām ligzdām nepieciešama piesardzība. Programma var turpināt izmantot savienojumu, ko tā atvēra pirms atvienošanās, tāpēc šķietami dzīvs trafiks var nepierādīt, ka jauns ceļš tika atļauts. Ligzdu saraksts parāda, vai savienojums ir vecāks par notikumu:
ss -tunp | grep -E 'ESTAB|SYN-SENT' ip route get 198.51.100.7 resolvectl status | sed -n '1,20p'
Salīdziniet ligzdas sākuma laiku ar atvienošanās laika zīmogu. Savienojums, kas vecāks par kļūmi, ir ligzdas atkalizmantošanas pierādījums, nevis noplūdes, un ziņošana par to kā kļūmi aizsūta nākamo cilvēku meklēt kļūdu, kuras nav.
Pierakstiet rezultātu formā, kas pārdzīvo atjauninājumu
Pierakstiet trigeri, starpību sekundēs, vai kāds nebloķēts pieprasījums izdevās, vai vārdu atrisināšana izdevās, un klienta un operētājsistēmas versijas. Šo piecu faktu kopumu var salīdzināt starp laidieniem, ko prozas rindkopa nevar.
Palaidiet to pašu testu vēlreiz pēc klienta atjauninājuma vai profila maiņas, jo bloķēšanas uzvedība ir ieviešanas detaļa un tā pārvietojas. Ieraksta mērķis ir pamanīt pārvietošanos pirms tā kļūst par incidentu, nevis vienreiz sertificēt klientu.