UDP-ს ISP ბლოკავს თუ გვირაბში მყოფი აპლიკაცია?
ISP-ს შეუძლია გარე UDP ტრანსპორტი გადააგდოს დაშიფრული შიდა სათაურის წაკითხვის გარეშე. გამოყავით გარე მიწოდება, შიდა გადაგზავნა და აპლიკაციის ქცევა.
ვიღაც იტყობინება, რომ VPN „UDP-ს ბლოკავს“, და ეს ფრაზა ორ სრულიად განსხვავებულ მტკიცებას მალავს. ერთი ეხება იმ ტრანსპორტს, რომელსაც წვდომის ქსელი ხედავს, მეორე — აპლიკაციის პაკეტებს მას შემდეგ, რაც ისინი გვირაბში გაიშიფრა. დაშიფრული გვირაბის გაფილტვრა გარედან, ყოველგვარი გასაღების გარეშე შეიძლება, და შიდა UDP აპლიკაცია შეიძლება ჩავარდეს ისეთი მიზეზებით, რომლებსაც ფილტრაციასთან საერთო არაფერი აქვს. სანამ მტკიცებულებებს შეაგროვებთ, გადაწყვიტეთ, რომელ მტკიცებას ამოწმებთ.
ორი სათაური, ერთი სიტყვა
NAT-traversal-ის მქონე IPsec განლაგებაში გარე პაკეტი UDP-ია, მისამართიანი ორ VPN ბოლო წერტილს შორის, ჩვეულებრივ 4500 პორტზე. მის შიგნით დაშიფრული დატვირთვა ატარებს ყველაფერს, რასაც გვირაბი გადასცემს, და ეს თავად შეიძლება იყოს TCP ან UDP. ამიტომ სიტყვა UDP ორჯერ ჩნდება, განსხვავებული მნიშვნელობითა და განსხვავებული ხილვადობით.
შუალედური ქსელი ხედავს გარე სათაურს და შიდასგან არაფერს. მას შეუძლია გარე ნაკადის დაშვება, ფორმირება ან გადაგდება, და ამისთვის არაფრის გაშიფვრა არ სჭირდება. სწორედ ეს ასიმეტრიაა ორი მტკიცების არევის მთელი მიზეზი: ერთი და იგივე სიტყვა აღწერს როგორც იმას, რასაც ქსელი ფილტრავს, ისე იმას, რასაც აპლიკაცია აგზავნის. როცა დაკვირვებას აფიქსირებთ, სიტყვის გვერდით დაწერეთ შრე, და დაბნეულობა ძირითადად ქრება.
შიდა სათაური ხილული ხდება მხოლოდ მიმღებ ბოლო წერტილში, გაშიფვრის შემდეგ. ამ მომენტიდან პაკეტი გადაეცემა როგორც ნებისმიერი სხვა, მარშრუტების, პოლიტიკისა და ბოლო წერტილის საკუთარი ფილტრაციის შესაბამისად. ეს ცალკეული გადაწყვეტილებებია, რომლებსაც სხვადასხვა მოწყობილობა იღებს.
რა შეუძლია ქსელს ჯერ კიდევ დაინახოს
დაშიფვრა მალავს დატვირთვასა და შიდა ტრანსპორტის სათაურს, და არა იმ ფაქტს, რომ ნაკადი არსებობს. ბოლო წერტილების მისამართები, პორტები, პაკეტების ზომები და დრო ხილული რჩება, და ეს საკმარისია ტრაფიკის ევრისტიკულად კლასიფიკაციისთვის ან კონკრეტული დანიშნულების დაბლოკვისთვის.
sudo tcpdump -ni eth0 'udp port 4500' sudo tcpdump -ni tun0 'udp port 5201'
პირველი ჩანაწერი აჩვენებს გარე ნაკადს ფიზიკურ ინტერფეისზე, ხოლო მეორე — შიდა ნაკადს გვირაბის ინტერფეისზე. ორივეს ერთდროულად გაშვება პირდაპირ პასუხობს კითხვას: თუ გარე ნაკადი არსებობს, შიდა კი არა, აპლიკაციას გვირაბში არაფერი გაუგზავნია. თუ ორივე არსებობს და არაფერი ბრუნდება, პრობლემა გვირაბის იქითაა — დანიშნულებაში ან დაბრუნების გზაზე.
RFC 3948 განსაზღვრავს გარე UDP ინკაფსულაციას, ხოლო ESP სპეციფიკაცია განსაზღვრავს მის შიგნით დაცულ განლაგებას. არც ერთი დოკუმენტი არ გვპირდება, რომ წვდომის ქსელი გარე ნაკადს გაატარებს, ამიტომ ღირს გარე ოთხეულზე მისადგომობის ტესტის გაშვება შიდაზე ნებისმიერი თეორიის წინ. დაბლოკილი გარე ოთხეული ქმნის გვირაბს, რომელიც არასდროს ყალიბდება, და არა გვირაბს, რომელიც ყალიბდება და შემდეგ ერთ აპლიკაციას კარგავს.
რატომ ჩავარდება ერთი UDP აპლიკაცია მომუშავე გვირაბში
გვირაბს, რომელიც ვებ აპლიკაციას გადააქვს, UDP აპლიკაციას კი არა, რამდენიმე დამაჯერებელი ახსნა აქვს, და შიდა პროტოკოლის ISP-ის მიერ ფილტრაცია პირველი არ არის. ყველაზე გავრცელებული დაფარვაა: ორივე აპლიკაცია ერთ გვირაბში ერთად არ შედის, რადგან UDP დანიშნულების მარშრუტი აკლია ან კლიენტის გაყოფილი გვირაბის წესები მას გამორიცხავს.
მეორე ბოლო წერტილია. VPN სერვერი, რომელიც პროტოკოლების სიას უშვებს, დანიშნულების ფაირვოლი, ან სერვისი, რომელიც მოსალოდნელ პორტზე არასდროს უსმენს — ყველა წარმოქმნის დროის ამოწურვას, რომელიც ზუსტად ქსელური ბლოკის მსგავსად გამოიყურება.
მესამე პაკეტის ზომაა. UDP აპლიკაციები ხშირად ვებ მოთხოვნაზე დიდ დატაგრამებს აგზავნიან, და ინკაფსულაცია ამცირებს გამოსაყენებელ MTU-ს, ამიტომ წარმატებული ხელის ჩამორთმევის შემდეგ შეიძლება სიჩუმე დადგეს პირველ სრულზომილ დატვირთვაზე. ამ ნიმუშის ბლოკად არასწორად წაკითხვა ადვილია, რადგან პატარა პაკეტები გადის, დიდები კი ქრება. სწრაფი MTU შემოწმება ერთ წუთზე ნაკლებ დროში წყვეტს საკითხს, და პასუხი ჩვეულებრივ უფრო მცირე დატვირთვა ან შესწორებული MSS-ია, და არა ქსელური ფილტრი.
ping -M do -s 1400 -c 2 10.60.0.20 iperf3 -u -c 10.60.0.20 -p 5201 -b 1M -t 5
პირველი ბრძანება ამოწმებს, გადის თუ არა დიდი პაკეტი გზას ფრაგმენტაციის გამორთვით, რაც სწრაფად ამჟღავნებს MTU პრობლემას. მეორე აგზავნის პატარა, შეზღუდულ UDP ნაკადს და იუწყება დანაკარგებსა და ჯიტერზე. ნაკადი, რომელიც იწყება და შემდეგ ჩერდება, ზომაზე მიუთითებს და არა ბლოკზე.
შეატყობინეთ შრე, და არა პროტოკოლი
დაწერეთ დაკვირვება სამი ფორმიდან ერთში: გარე მიწოდება ჩავარდა, შიდა გადაგზავნა ჩავარდა, ან აპლიკაცია ჩავარდა. თითოეულს განსხვავებული პატრონი ჰყავს, და მათი შერევა ბილეთს არასწორ გუნდთან აგზავნის.
ლოკალური პორტის შეცვლა ვერ შექმნის შესაბამის მსმენელს შორეულ ბოლოში, ამიტომ კლიენტის მხარეს ის გვერდის ავლა, რომელიც თითქოს ეხმარება, ჩვეულებრივ იმის მტკიცებულებაა, რომ თავდაპირველი დანიშნულება მცდარი იყო. ანალოგიურად, მოწოდებული ალტერნატიული პროფილი რაღაცას ამტკიცებს მისადგომობაზე და არაფერს იმაზე, სწორად არის თუ არა აპლიკაცია კონფიგურირებული.
დასკვნა დაკვირვებისგან განაცალკევეთ. ტრაფიკის ანალიზს შეუძლია მიუთითოს, რა არის ნაკადი, გაშიფვრის გარეშე, და ეს სასარგებლო დაკვირვებაა, მაგრამ ეს არ არის იგივე მტკიცება, რაც შიდა სათაურის წაკითხვა. მიუთითეთ, რომელი გაქვთ სინამდვილეში.