ერთ წამში დასრულებული ხელახალი დაკავშირება გეუბნებათ, რომ კლიენტი სწრაფია. ის არ გეუბნებათ, გაჟონა თუ არა რამე, სანამ გვირაბი გამორთული იყო. ერთი წუთი რომ სჭირდება ხელახალ დაკავშირებას, გეუბნებათ, რომ კლიენტი ნელია, და კვლავ არ გეუბნებათ, დაშვებული იყო თუ არა პირდაპირი ტრაფიკი უფსკრულში. ეს ორი გაზომვაა, და 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'

შეადარეთ სოკეტის დაწყების დრო გათიშვის დროის ნიშანს. ჩავარდნაზე ძველი კავშირი სოკეტის ხელახალი გამოყენების მტკიცებულებაა და არა გაჟონვის, და მისი ჩავარდნად მოხსენება შემდეგ ადამიანს არარსებული ხარვეზის საძებნელად აგზავნის.

ჩაწერეთ შედეგი განახლებას გადარჩენილ ფორმაში

ჩაწერეთ ტრიგერი, უფსკრული წამებში, წარმატებით დასრულდა თუ არა რომელიმე დაუბლოკავი მოთხოვნა, წარმატებით დასრულდა თუ არა სახელების გარჩევა, და კლიენტისა და ოპერაციული სისტემის ვერსიები. ხუთი ფაქტის ეს ნაკრები შედარებადია გამოშვებებს შორის, რასაც პროზის ერთი აბზაცი ვერ შეძლებს.

ხელახლა გაუშვით იგივე ტესტი კლიენტის განახლების ან პროფილის ცვლილების შემდეგ, რადგან ბლოკირების ქცევა იმპლემენტაციის დეტალია და ის მოძრაობს. ჩანაწერის მიზანია შეამჩნიოთ მოძრაობა სანამ ის ინციდენტი გახდება, და არა კლიენტის ერთხელ დაფიქსირება.

დაკავშირებული სტატიები