რატომ კვდება traceroute ერთი მიმართულებით VPN გვირაბში
კვალი, რომელიც ერთი მიმართულებით სრულდება და მეორეში ვარსკვლავებს ბეჭდავს, ჩვეულებრივ დიაგნოსტიკის პრობლემაა. შეადარეთ ზონდის მეთოდები, დაბრუნების გზები და რეალური მოთხოვნა.
traceroute-ის ის გამოსავალი, რომელიც ერთი მიმართულებით სრულდება და მეორეში ვარსკვლავების რიგებს ბეჭდავს, ასიმეტრიულ გადაცემას ჰგავს და ჩვეულებრივ ასე არ არის. ყოველი ნაჩვენები ნახტომი მოითხოვს ზონდის ჩასვლას, როუტერის გადაწყვეტილებას პასუხის გაცემაზე და პასუხის დაბრუნებასა და ზონდთან შედარებას. გატეხეთ ამ რგოლებიდან რომელიმე და რიგი ვარსკვლავად იქცევა, სანამ გვირაბი მონაცემების ტარებას განაგრძობს.
კვალი ტრანსპორტის შესახებ მტკიცებულებამდე დიაგნოსტიკის შესახებ მტკიცებულებაა. კითხვა, რომლის დასმაც ღირს, არის რომელი სამი რგოლიდან ვერ მოხდა, და პასუხი პაკეტებიდან მოდის, არა გამოსავლის ფორმიდან.
ვარსკვლავი დაკარგული პასუხია, არა დაკარგული ნახტომი
traceroute გარეთ მიემართება ზონდების გაგზავნით, რომელთა TTL ყოველ რაუნდში ერთი როუტერით უფრო შორს იწურება. როუტერი, რომელიც ვადაგასულ ზონდს ყრის, უნდა დააბრუნოს საკუთარი თავის დამამტკიცებელი ICMP Time Exceeded შეტყობინება, და ხელსაწყო ამ სახელს ბეჭდავს. რასაც ხელსაწყო რეალურად ელოდება, არის ამ შეტყობინების ჩასვლა დროის ლიმიტში. თუ როუტერი სხვა წყაროს მისამართიდან პასუხობს, შეცდომების წარმოქმნის სიხშირეს ზღუდავს ან ზონდს სიტყვის გარეშე ყრის, რაუნდი ბეჭდვადს არაფერს იძლევა.
ამ შედეგებიდან არც ერთი არ ამბობს, რომ წინა გზა გატეხილია. ვარსკვლავი უპასუხო ფოსტის შესახებ მოხსენებაა, არა ცარიელი გზის.
ზონდის მეთოდი განსაზღვრავს, რომელ ფილტრს შეხვდებით
Linux-ზე ნაგულისხმევი მეთოდი ჩვეულებრივ მაღალი ნომრის UDP დანიშნულების პორტია, Windows-ის tracert ICMP ექოს აგზავნის, და Linux-ს შეიძლება ვუთხრათ, რომ ნაცვლად ICMP ან TCP გამოიყენოს. თითოეული მათგანი მდგომარეობის მქონე ფაიერვოლისთვის ან ღრუბლოვანი უსაფრთხოების ჯგუფისთვის განსხვავებულ ტრაფიკის ტიპად გამოიყურება. ერთი მხრიდან UDP კვალის მეორე მხრიდან ICMP კვალთან შედარება ორ განსხვავებულ ექსპერიმენტს ადარებს. სანამ შედეგებს განსხვავებას უწოდებთ, დააფიქსირეთ მეთოდი, მისამართების ოჯახი, წყაროს მისამართი და დროის ლიმიტი.
სამართლიანი შედარებისთვის კვალი გაუშვით იმ ჰოსტებიდან, რომლებიც ტრაფიკს რეალურად ატარებენ და არა მათ ნაცვლად გადამცემი კარიბჭიდან. როუტერის მიერ გენერირებული კვალი იყენებს როუტერის საკუთარ წყაროს მისამართს და გამოსვლის პოლიტიკას, რომლებიც შეიძლება უფრო მკაცრი იყოს, ვიდრე ნებისმიერი რამ, რასაც კლიენტი ხედავს. ჩაწერეთ ზუსტი ბრძანება, რომ შემდეგმა ადამიანმა შეძლოს მისი გამეორება.
დროის ლიმიტის მნიშვნელობა ექსპერიმენტის მეორე ნახევარია და ადვილად რჩება შენიშვნებს გარეთ. ორწამიანი ლოდინი გადატვირთულ გზაზე ვარსკვლავებს იუწყება, სადაც ხუთწამიანი ლოდინი ნახტომებს იუწყება. შეინარჩუნეთ მნიშვნელობა იდენტური ყველა გაშვებაში, რომ შედარება ქსელზე დარჩეს.
დაბრუნების გზა საკუთარი მარშრუტია
ICMP შეცდომა ჩვეულებრივი პაკეტია საკუთარი წყაროთი და დანიშნულებით, და მას უკან დაბრუნების მარშრუტი სჭირდება ტრასირებისკენ. თუ გვირაბის პოლიტიკა LAN პრეფიქსებს ატარებს, მაგრამ არ ატარებს იმ როუტერის მისამართს, რომელმაც შეცდომა წარმოქმნა, შეტყობინება გადის გზაზე, რომელიც ვერ მოგაღწევთ. პასუხების ფილტრაციამ შეიძლება ის გადააგდოს მაშინაც კი, როცა მარშრუტი არსებობს, რადგან პაკეტი მოულოდნელ მისამართზე მოულოდნელი ინტერფეისიდან მოდის. ეს დიაგნოსტიკის სიბრტყეში შეუთანხმებლობაა და არა აპლიკაციის ჩავარდნა.
ყოველი სელექტორის გაფართოება მანამ, სანამ კვალი დასრულდება, სურათს ლამაზს და პოლიტიკას უარესს ხდის. შეაკეთეთ კონკრეტული დიაგნოსტიკური მისამართი, ან მიიღეთ ვარსკვლავი და გამოსცადეთ აპლიკაცია სხვა გზით.
დაადასტურეთ გვირაბი რეალური მოთხოვნით
TCP ხელის ჩამორთმევა სერვისის საკუთარ პორტზე ამოწმებს გადაცემას, დაბრუნების მარშრუტიზაციას და ფილტრაციას იმ მიმართულებით, რომელსაც მნიშვნელობა აქვს. ქვემოთ მოცემული ბრძანებები ორივე ბოლოში მუშაობს და ადარებს, თუ რისი გახსნა შეუძლია თითოეულ მხარეს. ჩაანაცვლეთ სერვისის პორტი და გვირაბის ინტერფეისის სახელი თქვენი კონფიგურაციიდან.
traceroute -I -n -w 2 203.0.113.40
traceroute -T -p 443 -n -w 2 203.0.113.40
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' --max-time 5 http://203.0.113.40:8080/health
ss -tan state established
ჯერ წაიკითხეთ traceroute-ის ორი გაშვება: თუ ICMP გაშვება ნახტომებს აჩვენებს და TCP გაშვება არა, განსხვავება მეთოდშია, არა გზაზე. შემდეგ curl-ის შედეგი აიღეთ აპლიკაციის დონის პასუხად, რადგან გონივრული სტატუსის კოდით დასრულებული გაცვლა ნიშნავს, რომ წინა და დაბრუნების გზები ორივე მუშაობს რეალური ტრაფიკისთვის. სოკეტების სია აჩვენებს, საერთოდ დამყარდა თუ არა კავშირი, რასაც ვერც ერთი კვალი ვერ გეტყვით.
გვირაბი, რომელიც ინტერაქტიულ სესიას ორივე მიმართულებით ატარებს, სანამ ერთი traceroute ვარსკვლავებს ბეჭდავს, ჯანსაღია და უბრალოდ არაფოტოგენური. შეინახეთ თითოეული მხარის ბრძანებების გამოსავალი ჩანაწერად და დაკარგულ ნახტომებს მოეპყარით როგორც ღია კითხვას დიაგნოსტიკაზე და არა განაჩენს VPN-ზე.