პორტის შემმოწმებელი ამბობს ღიაა? რატომ ჯერ კიდევ ვერ შედიან Minecraft-ის მოთამაშეები
წარმატებული TCP კავშირი მხოლოდ იმას ამტკიცებს, რომ ერთი სოკეტი ერთი ადგილიდან მიიღეს. შესვლა, სამყაროში დაშვება და გზა შიგნიდან გარეთ ცალკე ტესტებია.
ვიღაც უშვებს პორტის შემოწმებას, ხედავს სიტყვას ღია და სერვერს მოგვარებულად თვლის. რასაც ეს შედეგი რეალურად ნიშნავს, ვიწროა: შემმოწმებლის მდებარეობიდან, იმ მომენტში, TCP კავშირი ამ მისამართსა და პორტზე მიიღეს. ის არაფერს ამბობს Minecraft პროტოკოლის ხელის ჩამორთმევაზე, ანგარიშის ავთენტიფიკაციაზე ან იმაზე, შეუშვა თუ არა სერვერმა მოთამაშე სამყაროში.
ეს ოთხი განსხვავებული შრეა და რომელიმეში მარცხი მოთამაშისგან იმავე წინადადებას იწვევს: არ იმუშავა.
ზონდი მხოლოდ იმას ამოწმებს, რასაც ხედავს
TCP კავშირი სრულდება, როცა ორივე მხარე ამთავრებს სამმხრივ ხელის ჩამორთმევას, რომელიც ყველაფერზე დაბლაა, რაც თამაშმა იცის. ზონდი იტყობინება, რომ მსმენელი არსებობდა და თავისი ქსელური მდებარეობიდან უპასუხა. ის ვერ გეტყვით, რომ მსმენელი თავად თამაშია, რადგან ნებისმიერ პროცესს შეუძლია პორტის დაკავება და კავშირების მიღება.
მდებარეობა ისე მნიშვნელოვანია, როგორც შედეგი. საჯარო ინტერნეტში მყოფი შემმოწმებელი ერთ ქსელიდან ერთ გზას ამოწმებს. შემმოწმებელი, რომელსაც ოპერატორი იმავე ქსელის შიგნიდან უშვებს, სრულიად სხვა გზას ამოწმებს და იქ დადებითი შედეგი თითქმის არაფერს ამბობს იმაზე, რასაც შორეული მოთამაშე განიცდის. ორ სხვადასხვა პროვაიდერთან ორი სხვადასხვა შემმოწმებელი შეიძლება არც დაეთანხმოს ერთმანეთს ისეთი მიზეზების გამო, რომელთა შენს სერვერთან კავშირი არ აქვს.
დროსაც აქვს მნიშვნელობა. ზონდის შედეგი აღწერს იმ მომენტს, როცა ის გაეშვა, და დინამიური მისამართის ან შეცვლილი გადამისამართების წესის მქონე სახლის კავშირმა შეიძლება ნამდვილი პასუხი რამდენიმე წუთით გადაწიოს. ჩაწერეთ საჯარო მისამართი, პორტი, მისამართების ოჯახი და დრო განაჩენთან ერთად, თორემ დაკვირვება განმეორებადი არ არის. გაიმეორეთ შემოწმება ნამდვილად სხვა ქსელიდან და არა იმავე კავშირის ტელეფონიდან.
ოთხი შრე სოკეტსა და მოთამაშეს შორის
წარმოიდგინეთ თანმიმდევრობა, რომელსაც მიერთებული კლიენტი რეალურად ასრულებს. ჯერ ის ხსნის მისამართს, შემდეგ ხსნის TCP კავშირს გამოქვეყნებულ პორტზე, შემდეგ თამაშის საკუთარი პროტოკოლით მოლაპარაკებასა და ავთენტიფიკაციას ახდენს, და ბოლოს სერვერი წყვეტს, დაიშვას თუ არა ეს იდენტობა სამყაროში. თითოეულ შრეს თავისი მარცხის ხელწერა აქვს და მხოლოდ პირველია შესამჩნევი პორტის შემმოწმებლისთვის.
Java Edition-ის ნაგულისხმევი პორტია 25565, მაგრამ ოპერატორს შეუძლია სხვა გარე პორტის გამოქვეყნება და მისი შიგნით გადამისამართება, ამიტომ მოთამაშის მიერ აკრეფილი რიცხვი სულაც არ არის ის რიცხვი, რომელსაც სერვერი ხედავს. არასწორ გარე პორტზე მიმართული შემმოწმებელი იტყობინება დახურულად, მაშინ როცა სერვერი სრულიად ჯანმრთელია, და ეს არის ყველაზე გავრცელებული ცრუ განგაში მთელ ამ სფეროში.
სახელები პორტის ზემოთ კიდევ ერთ საფეხურს ამატებს. თუ მოთამაშე ჰოსტის სახელს აკრეფს, გადაწყვეტამ უნდა დააბრუნოს გამოქვეყნებული მისამართი, და ქსელის შიგნით მყოფ მანქანაზე მან შეიძლება მის ნაცვლად კერძო მისამართი დააბრუნოს. ეს firewall-ის მარცხი არ არის და პორტების გადამისამართების ვერც ერთი რაოდენობა ვერ შეცვლის.
რატომ ირჩევს შიგნით მყოფი მოთამაშე სხვა გზას
მოთამაშე იმავე LAN-ზე ან VPN-ზე, რომელიც ამ LAN-ს აღწევს, ცდილობს შიგნიდან საჯარო მისამართს მიაღწიოს. მოთხოვნა მიდის როუტერის გარე მისამართზე და როუტერმა ის უკან შიგნით უნდა თარგმნას, რასაც ჩვეულებრივ hairpinning ან NAT-ის ანარეკლი ეწოდება. რომ ეს იმუშაოს, წინა თარგმანიც და დაბრუნების გზაც უნდა დაემთხვეს, და ბევრი სახლის როუტერი ამას საერთოდ არ ახორციელებს.
ამიტომ გარედან სტუმარი შემოდის, სერვერის გვერდით მჯდომი კი ვერ შემოდის. გარე გზა ნამდვილად რიგზეა; შიდა შემოვლითი გზაა ის, რაც ფუჭდება, და ფუჭდება ისე, რომ მოთამაშის ეკრანიდან სერვერის პრობლემას ჰგავს. თავად სერვერის ჟურნალი წყვეტს, რომელი მოხდა, რადგან არასდროს თარგმნილი კავშირი არასდროს აღწევს მას.
არსებობს ორი პატიოსანი შესწორება და ერთი ცუდი ჩვევა. კარგი ვარიანტებია: შიდა მოთამაშეებს ნება დართოთ გამოიყენონ კერძო მისამართი ან split-DNS სახელი, რომელიც შიგნით კერძო მისამართზე იხსნება, ან ჩართოთ ანარეკლი როუტერზე, თუ ფუნქცია არსებობს და სწორად იქცევა. ცუდი ჩვევაა მეტი პორტის გახსნა ან ჰოსტის firewall-ის გამორთვა, რაც ვერ იმოქმედებს იმ თარგმანზე, რომელიც როუტერს არასდროს შეუსრულებია.
Netgate-ის NAT-ის ანარეკლის დოკუმენტაცია უფრო დეტალურად აღწერს გარე და შიდა განსხვავებას და split-DNS ალტერნატივას. წაიკითხეთ ის მექანიზმის აღწერად და არა დაპირებად, რომ რომელიმე კონკრეტული VPN პროვაიდერი ან როუტერი ყველა loopback ვარიანტს მხარს უჭერს.
შეაგროვეთ მტკიცებულებები ყოველი თვალსაზრისიდან
ყოველი ტესტისთვის ჩაწერეთ ვინ გაუშვა, საიდან, რომელ საათზე, რომელი მისამართისა და პორტის წინააღმდეგ, და რა ჩაწერა სერვერმა. თამაშის უარი სერვერის კონსოლში მკაფიო მიზეზით სხვა აღმოჩენაა, ვიდრე არასდროს მისული კავშირი, და ორივე საპირისპირო მიმართულებით მიდის.
თუ ნებადართული შორეული მოთამაშეები შემოდიან, ერთი ადგილობრივი კი ვერ შემოდის, დარჩენილი კითხვა ადგილობრივი გზაა და ის ცალკე გამოძიებას იმსახურებს: რომელი მისამართი გამოიყენა კლიენტმა, რა ქნა როუტერმა თარგმანთან და დააფიქსირა თუ არა სერვერმა საერთოდ რაიმე კავშირის მცდელობა. ეს სამი ფაქტი გადაეცით ქსელის მფლობელს და ნუ გახსნით პორტებს შემთხვევით.