Pagsusuri ng kill switch: sukatin ang agwat, hindi lang ang muling pagkonekta
Ang mabilis na muling pagkonekta ay nagpapatunay na mabilis ang client. Itala kung ano ang lumabas sa makina sa agwat, kasama ang trigger na ginamit mo, kung hindi, kalahati lang ang sinukat ng pagsusuri.
Ang muling pagkonektang natapos sa isang segundo ay nagsasabi na mabilis ang client. Hindi nito sinasabi kung may tumakas habang patay ang tunnel. Ang muling pagkonektang tumatagal ng isang minuto ay nagsasabi na mabagal ang client, at hindi pa rin sinasabi kung pinayagan ang direktang trapiko sa agwat. Dalawang sukat ito, at ang pagsusuri ng kill switch na nag-uulat lamang ng una ay hindi sinubukan ang switch.
Dalawang obserbasyon, dalawang hiwalay na hatol
Ang tanong sa pagiging magagamit ay simple: kailan muling naging magagamit ang tunnel, at kailangan ba ng protektadong aplikasyon ng bagong koneksyon para makarating doon. Ang tanong sa pagpapatupad ay iba: aling mga packet ang umalis sa makina mula nang bumagsak ang proteksyon hanggang sa pagbabalik nito.
Sagutin ang mga ito gamit ang hiwalay na tala. Isang linya ang nagsasabi na tumagal ang agwat ng tiyak na bilang ng segundo. Isa pang linya ang nagsasabi kung nagtagumpay ang isang walang proteksyong kahilingan sa agwat na iyon. Ang pagsasanib ng mga ito sa isang pasado o bagsak ay nagtatago ng pinakamahalagang kaso: mabilis na muling pagkonekta na may tagas.
Bumuo ng probe na masusukat ang oras
Gumamit ng kahilingang walang pinsala, mura at malaya sa sariling control channel ng tunnel. Ang loop sa ibaba ay nagpi-print ng timestamp, HTTP status at lumipas na oras isang beses kada segundo, at bigla itong nabigo sa halip na mag-hang:
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
Basahin ang mga exit code ng curl, hindi lang ang status. Ang 28 ay nangangahulugang naubos ang oras ng kahilingan, ganyan ang hitsura ng naharang na landas. Ang 6 ay nangangahulugang nabigo ang resolusyon ng pangalan, na ibang natuklasan at kadalasan ang mas kawili-wili. Ang 200 na may maikling lumipas na oras sa agwat ay nangangahulugang pinayagang lumabas ang trapiko.
Isulat ang output sa isang file at itago ito. Ang scrollback ng terminal ay hindi ebidensya, at ang kawili-wiling bahagi ay karaniwang tatlong linya sa gitna.
Magdulot ng tunay na pagkasira, hindi maayos
Ang pagdisconnect mula sa sariling menu ng client ay sumusubok sa kooperatibong landas, kung saan may oras ang client na i-install ang mga panuntunan nito sa pagharang. Patayin ang proseso sa halip, o putulin ang pinagbabatayan na link, at masusubok mo ang landas na tinatahak ng tunay na pagkasira.
Bawat trigger ay nagsasanay ng ibang landas ng code. Ang pagpalya sa panig ng server, pagkawala ng lokal na link at pag-crash ng client ay bawat isa ay maaaring mag-iwan ng ibang estado, at isa sa mga ito ang malamang na kaso na makakaharap mo sa huli. Patakbuhin ang probe sa hindi bababa sa dalawang trigger at lagyan ng label ang mga resulta ayon sa trigger.
Basahin ang log para makita kung ano ang hitsura ng pinapayagang trapiko
Ang 200 o mabilis na pagpalya ng koneksyon sa agwat ay tagas, saanman ito nakaturo. Ang pag-expire ng oras sa buong agwat ay ang inaasahang hugis ng patakaran sa pagharang. Ang pagtatagumpay ng resolusyon ng pangalan habang nabigo ang mga koneksyon ay nagmumungkahi na naaabot pa rin ang resolver, na isang tagas ng ibang uri.
Ang mga existing socket ay nangangailangan ng pag-iingat. Maaaring patuloy na gamitin ng isang programa ang koneksyong binuksan nito bago ang pagdisconnect, kaya ang tila buhay na trapiko ay maaaring hindi magpatunay na pinayagan ang bagong landas. Ipinapakita ng listahan ng socket kung ang koneksyon ay mas matanda kaysa sa pangyayari:
ss -tunp | grep -E 'ESTAB|SYN-SENT' ip route get 198.51.100.7 resolvectl status | sed -n '1,20p'
Ihambing ang oras ng pagsisimula ng socket sa timestamp ng pagdisconnect. Ang koneksyong mas matanda kaysa sa pagpalya ay ebidensya ng muling paggamit ng socket, hindi ng tagas, at ang iulat ito bilang pagpalya ay nagpapadala sa susunod na tao na mangaso ng bug na wala naman.
Itala ang resulta sa anyong nakakaligtas sa isang update
Itala ang trigger, ang agwat sa segundo, kung may pinapayagang kahilingang nagtagumpay, kung nagtagumpay ang resolusyon ng pangalan, at ang mga bersyon ng client at operating system. Ang set na iyon ng limang katotohanan ay maihahambing sa mga release, na hindi kayang gawin ng isang talata ng prosa.
Patakbuhin muli ang parehong pagsusuri pagkatapos ng update ng client o pagbabago ng profile, dahil ang pag-uugali sa pagharang ay detalye ng implementasyon at gumagalaw ito. Ang layunin ng tala ay mapansin ang paggalaw bago ito maging insidente, hindi ang sertipikahin ang client nang isang beses.