„DNS გატეხილია“ დასკვნაა და არ არის ის დასკვნა, რომელზეც დამხმარე რამეს იზამს. ანგარიშის სასარგებლო ნაწილი ხარვეზის ფორმაა: რომელი სახელი, რომელი resolver-ით, რომელი პასუხით. სამი დეტალი საჩივარს გამრავლებად რამედ აქცევს და სამივე უსაფრთხოა გასაზიარებლად, როცა პირადი ნაწილები გადარქმეულია. შემდეგი არის მინიმუმი, რომელიც VPN DNS ანგარიშს სჭირდება, სანამ ვინმე დაეხმარება.

სახელის კატეგორია, არა განაჩენი

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

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

ჩაწერეთ resolver-ის გზა

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

resolvectl status --no-pager
getent hosts host.internal
dig +short host.internal @10.20.30.53

სტატუსის გამონატანი ასახელებს კავშირზე დამოკიდებულ სერვერებს და მარშრუტიზაციის დომენებს, რაც არის სადაც split DNS წყდება. getent-ის გამოძახება იმავე გზას მიჰყვება, რასაც აპლიკაცია, nsswitch-ის რიგის ჩათვლით. პირდაპირი მოთხოვნა ორივეს გვერდს უვლის და ერთ სერვერს იზოლირებულად ამოწმებს. მიუთითეთ, სამიდან რომელი ვერ იმუშავა და რომელი შედგა, და მკითხველს გზის გამოცნობა აღარ დასჭირდება.

მიუთითეთ კონტროლირებადი შედარება

შეცვალეთ ერთი ცვლადი და თქვით, რა შეიცვალა. საჯარო სახელების გადაჭრა შიდა სახელების ჩავარდნისას არჩევანის პრობლემაა; ყოველი სახელის დროის ამოწურვა გზის პრობლემაა; ხოლო საჯარო მისამართზე გადაჭრილი პირადი სახელი გაჟონვაა არასწორ resolver-ში. ამ სამიდან ორს არაფერი აქვს საერთო იმასთან, აწეულია თუ არა გვირაბი. ანგარიში, რომელიც ამტკიცებს, რომ ყველა მოთხოვნა გატეხილია, ჩვეულებრივ შეიცავს შედარებას, რომელიც არასდროს ჩატარებულა.

გაყავით გადაწყვეტა მიწოდებისგან. როცა სახელი იხსნება და საიტი მაინც ვერ იმუშავებს, DNS ეტაპი შედგა და ანგარიშმა ეს უნდა თქვას, რადგან შემდეგი ნაბიჯი მარშრუტი ან მსმენელია და არა resolver. ეს ერთი განსხვავება უფრო ხშირად ზოგავს კითხვების მთელ რაუნდს, ვიდრე რომელიმე ჟურნალის ნაწყვეტი.

დაფარეთ სახელთა სივრცე, შეინარჩუნეთ კავშირები

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

გაგზავნეთ ჩანაწერი დადასტურებული არხით და გამოტოვეთ ის, რაც დიაგნოზს არასდროს სჭირდება. პაროლები, პირადი გასაღებები და დაუკავშირებელი კომპანიების სახელები DNS კითხვის ნაწილი არ არის. მკითხველს სჭირდება ხარვეზის კატეგორია, resolver-ის გზა, ზუსტი შეცდომა და თქვენ მიერ ჩატარებული ერთი შედარება.

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