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

სამი რიცხვი, რომლებსაც ხალხი MTU-ს უწოდებს

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

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

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

შეამოწმეთ გზა თქვენს კონტროლში არსებული დატვირთვით

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

ping -M do -s 1372 -c 2 203.0.113.20
ping -4 -f -l 1372 vpn.example

პირველი ბრძანება აგზავნის Linux ტესტს ფრაგმენტაციის გამორთვით და 1372 ბაიტიანი დატვირთვით, ხოლო მეორე იგივეს აკეთებს Windows-ში, სადაც დატვირთვა -l-ით იყენება. პასუხი ნიშნავს, რომ ეს ზომა გზას გადაურჩა. შეტყობინება ფრაგმენტაციის საჭიროების შესახებ ინფორმაციულია, დროის ამოწურვა კი ორაზროვანია, რადგან მასპინძელმა ან შუალედურმა მოწყობილობამ შეიძლება უბრალოდ ICMP ჩააგდოს.

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

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

MSS-ის შეკუმშვა მხოლოდ TCP-ს ეხმარება

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

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip link show tun0

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

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

OpenVPN გვთავაზობს პარამეტრებს, როგორიცაა tun-mtu, mssfix და ფრაგმენტაციასთან დაკავშირებული პარამეტრები, და მათი ქცევა დამოკიდებულია ვერსიაზე და იმაზე, AEAD-ია თუ არა მონაცემთა არხი. წაიკითხეთ გამოყენებული ვერსიის სახელმძღვანელო და ერთდროულად მხოლოდ ერთი პარამეტრი შეცვალეთ.

შეცვალეთ ერთი მხარდაჭერილი პარამეტრი და გაიმეორეთ ორივე გაშვება

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

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

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

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