როცა მოთამაშეები ვერ უკავშირდებიან, მიზეზი თითქმის ყოველთვის ექვსიდან ერთ-ერთია, და მათი შემოწმება თანმიმდევრობით შეიძლება: სერვერს გაშვება ჯერ არ დაუმთავრებია; ის სხვა პორტზე ან მისამართზე უსმენს, ვიდრე გგონია; მოთამაშე არასწორ მისამართს ან პორტს იყენებს; მათ შორის ქსელი ტრაფიკს აგდებს; თავად თამაში მოთამაშეს უარს ეუბნება (ვერსია, პაროლი, whitelist, მოდები, ban-ები, სლოტები); ან პრობლემა მთლიანად მოთამაშის მხარესაა. თითოეულ ნაბიჯს ერთი წუთი სჭირდება და მთელ ფენას გამორიცხავს. წინ გადახტომა - firewall-ის წესების გადაწერა კონსოლის შემოწმებამდე - არის ის, რითაც ხუთწუთიანი გასწორება მთელ საღამოდ იქცევა.
ეს სტატია თანმიმდევრობაა და თითოეული ნაბიჯის მტკიცებულება. თავად პორტების ნომრებისთვის ცხრილი თამაშის სერვერის პორტების ახსნაშია; სერვერებისთვის, რომლებზეც ხალხი შედის, მაგრამ სიაში ვერ პოულობს, სწორი გვერდია რატომ არ ჩანს სერვერი სერვერების სიაში.
ჯერ: ერთი მოთამაშე თუ ყველა?#
ყველაზე სასარგებლო კითხვა, რადგან პრობლემას შუაზე ყოფს, სანამ რამეს შეეხები.
| ვინ ვერ უკავშირდება | ჯერ სად ჩაიხედო |
|---|---|
| არავინ, შენი ჩათვლით | სერვერი: ჩართულია, უსმენს, სწორ პორტზეა |
| არავინ, შენს სახლში მყოფების გარდა | სახლის სერვერის როუტერი: forward, პროტოკოლი, CGNAT |
| ყველა, ერთი-ორი მოთამაშის გარდა | ეს მოთამაშეები: ვერსია, მოდები, მათი ქსელი, ban |
| ერთი პლატფორმის მოთამაშეები | Crossplay-ის პარამეტრები, კლიენტის მოდები, პლატფორმის სპეციფიკური პორტები |
| ყველა, მაგრამ მხოლოდ ზოგჯერ | Crash loop-ები, მეხსიერების ლიმიტი, სავსე სლოტები, პაკეტების დაკარგვა |
თუ ათკაციან ჯგუფში ერთი ადამიანი ვერ შედის, სერვერს ნუ შეცვლი. ცხრა წარმატებული შესვლა ამტკიცებს, რომ სერვერი და ქსელი რიგზეა.
ნაბიჯი 1: სერვერი მართლა ჩართულია?#
"Running" პანელში ან Task Manager-ში ნიშნავს, რომ პროცესი არსებობს. ეს არ ნიშნავს, რომ თამაშმა ჩატვირთვა დაასრულა. დიდ სამყაროებს, მოდიფიცირებულ სერვერებს და განახლების შემდეგ პირველ გაშვებებს შეიძლება წუთები დასჭირდეს, და პორტი ხშირად მხოლოდ ბოლოს იხსნება.
წაიკითხე კონსოლი და მოძებნე ხაზი, რომელსაც თამაში მზადყოფნისას ბეჭდავს. რამდენიმე მაგალითი:
[Server thread/INFO]: Done (14.208s)! For help, type "help" <- MinecraftConnection to Steam servers successful. <- Source gamesSession "Longship Crew" with join code 483920 ... is active <- Valheimთუ ბოლო ხაზები შეცდომაა, stack trace ან სერვერი, რომელიც გაჩერდა და ხელახლა ჩაირთო, კავშირის პრობლემა კი არა, სერვერის პრობლემა გაქვს. კონსოლის კითხვა ხსნის, რას უნდა მიაქციო ყურადღება, ხოლო რატომ გადაიტვირთება შენი თამაშის სერვერი გამუდმებით crash loop-ებს განიხილავს. RE:NODE-ზე კონსოლი ცოცხალ, გაუფილტრავ output-ს აჩვენებს მეხსიერების, CPU-სა და დისკის გრაფიკებთან ერთად, ასე რომ სერვერი, რომელმაც მეხსიერების ლიმიტს მიაღწია და გადაიტვირთა, ერთი შეხედვით ჩანს.
ნაბიჯი 2: უსმენს იქ, სადაც გგონია?#
თამაში მისამართსა და პორტზე იბმება. ორივე შეიძლება განსხვავდებოდეს მოსალოდნელისგან: კონფიგის ფაილი, რომელიც არ შეინახა, თამაში, რომელმაც გამორთვისას საკუთარი კონფიგი გადაწერა, პორტის ცვლადი, რომელიც ორ ადგილას სხვადასხვანაირადაა დაყენებული. სერვერი output-ის პირველ ხაზებში გეუბნება, რაზე მიება სინამდვილეში. მანქანაზე, რომელსაც აკონტროლებ, ოპერაციულ სისტემას პირდაპირ შეგიძლია ჰკითხო:
# Linux: every listening TCP and UDP socket, with the process$ ss -lntup | grep -E '25565|2456|27015'udp UNCONN 0 0 0.0.0.0:2456 0.0.0.0:* users:(("valheim_server",pid=812))udp UNCONN 0 0 0.0.0.0:2457 0.0.0.0:* users:(("valheim_server",pid=812))Windows-ზე იგივეს Get-NetUDPEndpoint -LocalPort 2456 ან netstat -ano | findstr 2456 აკეთებს. მისამართის სვეტი ყურადღებით წაიკითხე:
0.0.0.0ან*- უსმენს ყველა ინტერფეისზე. კარგია.127.0.0.1- უსმენს მხოლოდ loopback-ზე. გარედან მას ვერავინ ვერასოდეს მიაღწევს. გაასწორე bind მისამართი თამაშის კონფიგში; Minecraft-ისთვის ეს არისserver-ip=server.properties-ში, რომელიც თითქმის ყოველთვის ცარიელი უნდა დარჩეს.- კერძო LAN მისამართი მანქანაზე, რომელსაც რამდენიმე აქვს - სახლში ნორმალურია, არასწორია, თუ მანქანა სხვა ქსელში გადავიდა.
თუ პორტზე საერთოდ არაფერი უსმენს, პრობლემა თამაშის კონფიგურაციაა და არა ქსელი.
ნაბიჯი 3: სწორი მისამართი, სწორი პორტი#
შემდეგი ყველაზე გავრცელებული მიზეზი ისაა, რომ მოთამაშე არასწორ რამეს წერს. შეამოწმე, რა შეიყვანა სინამდვილეში, და არა ის, რაც ჰგონია, რომ შეიყვანა.
- თამაშის პორტი, არა query პორტი. ორპორტიან თამაშებში მოთამაშეები თამაშის პორტით შედიან. Valheim-ში შედიან
2456-ით და არა2457-ით. მოთამაშე, რომელმაც სიიდან მეორე ნომერი დააკოპირა, timeout-ს იღებს. - პორტი საერთოდ. თუ სერვერი თამაშის ნაგულისხმევ პორტზე არ არის, მოთამაშემ ის უნდა აკრიფოს:
203.0.113.10:25570. მის გარეშე კლიენტი ნაგულისხმევს ცდის და ვერაფერს აღწევს - ან სხვის სერვერს აღწევს. - დომენი სხვაგან მიუთითებს. თუ მოთამაშეები სახელს იყენებენ, შეამოწმე, სად იხსნება ის დღეს:
nslookup play.example.com. ბოლოდროინდელი ცვლილება შეიძლება ჩანაწერის TTL-ის ხანგრძლივობით ჯერ კიდევ cache-ში იყოს. Windows-ზეipconfig /flushdnsმოთამაშის საკუთარ cache-ს ასუფთავებს; ზემოთ მდგომი resolver-ები თავისით დაეწევიან. დომენის მიბმა თამაშის სერვერზე ჩანაწერებს განიხილავს, ხოლო Minecraft-ისთვის SRV ჩანაწერები ხსნის, როგორ შეიძლება სახელმა პორტიც ატაროს. - მისამართი შეიცვალა. სახლის სერვერის საჯარო მისამართი ნებისმიერი ხელახალი დაკავშირებისას შეიძლება შეიცვალოს. ჰოსტინგზე მყოფი სერვერის მისამართი არ იცვლება, მაგრამ სხვა ჰოსტზე გადატანილი სერვერისა იცვლება.
ნაბიჯი 4: ქსელი ატარებს?#
მხოლოდ ახლა ღირს პორტებსა და firewall-ებში ჩახედვა. შეამოწმე გარედან - ტელეფონით მობილურ ინტერნეტზე, გამორთული wifi-ით, ან მეგობრის დახმარებით - რადგან ტესტი თავად სერვერიდან ან იმავე ქსელიდან არაფერს ამტკიცებს.
TCP თამაშისთვის (Minecraft Java, Terraria):
$ nc -vz 203.0.113.10 25565Connection to 203.0.113.10 25565 port [tcp/*] succeeded!"Succeeded" ნიშნავს, რომ გზა და პორტი რიგზეა. "Connection refused" ნიშნავს, რომ მანქანამ უპასუხა, მაგრამ არაფერი უსმენს - დაბრუნდი მე-2 ნაბიჯზე. ხანგრძლივი ლოდინი და შემდეგ timeout ნიშნავს, რომ რაღაცამ პაკეტი გადააგდო: firewall-მა, ნაკლულმა forward-მა ან არასწორმა პროტოკოლმა. Minecraft კლიენტში ეს შესაბამისად ჩანს როგორც Connection refused: no further information და Connection timed out: no further information, და მათ შორის სხვაობა ყველაზე სასარგებლო მინიშნებაა, რასაც თამაში გაძლევს.
UDP თამაშისთვის nc ღია პორტს გაფილტრულისგან ვერ არჩევს, რადგან UDP არაფერს აბრუნებს, თუ აპლიკაცია არ უპასუხებს. ამის ნაცვლად გამოიყენე თამაშის საკუთარი query - query პორტები და A2S Steam თამაშებისთვის ერთხაზიან შემოწმებას გთავაზობს - ან უბრალოდ სცადე შესვლა.
ტიპური ქსელური მიზეზები, სიხშირის მიხედვით:
- არასწორი პროტოკოლი. TCP წესი UDP თამაშისთვის არაფერს ემთხვევა. Valheim, Source თამაშები, Palworld, Project Zomboid და survival თამაშების უმეტესობა UDP-ია; Minecraft Java და Terraria TCP-ია; ზოგს ორივე სჭირდება.
- პორტი არ არის გამოყოფილი ან გადამისამართებული. ჰოსტინგის პანელზე თამაშის პორტის პარამეტრი უნდა ემთხვეოდეს პორტს, რომელიც სერვერს რეალურად აქვს გამოყოფილი. სახლში forward სერვერის მიმდინარე LAN მისამართზე უნდა მიუთითებდეს.
- Firewall მანქანაზე. Windows Defender Firewall შემომავალს ნაგულისხმევად ბლოკავს. თუ შენს LAN-ზე მყოფი მოთამაშეებიც ვერ შედიან, ეს არის.
- CGNAT ან double NAT სახლში. შენს როუტერზე ვერცერთი forward ვერასოდეს იმუშავებს, თუ შენს როუტერს საჯარო მისამართი არ აქვს. NAT და CGNAT თამაშის ჰოსტებისთვის ხსნის, როგორ გაიგო.
RE:NODE-ზე გამოყოფილი პორტები სერვერის Network ჩანართზეა ჩამოთვლილი, ხოლო თამაშის პორტის პარამეტრები Startup ჩანართზეა. თუ ეს ორი ერთმანეთს არ ემთხვევა, სერვერი ისეთ პორტზე უსმენს, რომლისკენაც არაფერი მიდის. გაასწორე ისე, რომ თამაში გამოყოფილ პორტს იყენებდეს, გადატვირთე და დასადასტურებლად კონსოლის პირველი ხაზები წაიკითხე.
ნაბიჯი 5: თამაში მოთამაშეს უარს ეუბნება#
თუ კავშირი თამაშს აღწევს და თამაში უარს ამბობს, ჩვეულებრივ შეტყობინებაა, და ის ჩვეულებრივ ზუსტია. პრობლემა ისაა, რომ მოთამაშეები მას "არ მუშაობს"-ად გადმოსცემენ. ზუსტი ტექსტი ან screenshot ითხოვე.
| რას ხედავს მოთამაშე | მიზეზი | გამოსავალი |
|---|---|---|
| Outdated client ან outdated server (Minecraft, ფორმულირება განსხვავდება) | ვერსიების შეუსაბამობა | დაამთხვიე სერვერის ვერსია, ან დაამატე ვერსიების ხიდის plugin |
| Incompatible version (Valheim) | სერვერი ან კლიენტი განახლდა, მეორე არა | განაახლე ორივე; მოდიფიცირებული სერვერებისთვის დაელოდე მოდებს |
| Server is full | სლოტების ლიმიტი მიღწეულია, ან crash-ის შემდეგ მოჩვენება მოთამაშეები | გაზარდე max players ან გადატვირთე ძველი სესიების გასასუფთავებლად |
| Bad password, incorrect password | არასწორი პაროლი, ან კლიენტში შენახული ძველი | ხელახლა აკრიფე; შეამოწმე სერვერის მიმდინარე პარამეტრი |
| Not whitelisted, not on the allow list | Allow list აქტიურია | დაამატე მოთამაშე იმ იდენტიფიკატორით, რომელსაც თამაში ელის |
| Banned | მოთამაშე ან მისი მისამართი დაბანილია | შეამოწმე ban-ების სიები, მათ შორის IP ban-ები, რომლებიც საერთო მისამართებს ეხება |
| Failed to verify username (Minecraft) | მოთამაშის სესია ან Mojang-ის ავთენტიფიკაციის სერვისი | გადატვირთე launcher და ხელახლა შედი; შეამოწმე სერვისის სტატუსი |
| Kick შესვლისთანავე, მოდთან დაკავშირებული შეტყობინება | ნაკლული ან შეუსაბამო მოდები | ერთი და იგივე მოდები, ვერსიები და კონფიგი ორივე მხარეს |
ორი მათგანი გაფრთხილებას იმსახურებს. სახელებზე მიბმული allow list-ები ფუჭდება, როცა მოთამაშე სახელს იცვლის; გამოიყენე ID-ები, სადაც თამაში მათ უჭერს მხარს. ხოლო IP ban-ები ეხება ყველას, ვინც ერთი და იმავე ოპერატორის NAT-ის ან უნივერსიტეტის ქსელის უკანაა, ასე რომ ერთი ადამიანისთვის განკუთვნილმა ban-მა შეიძლება უცნობი ჩაკეტოს - cheater-ებთან გამკლავება და ban-ების სიები უკეთეს გზებს განიხილავს.
მოდების შეუსაბამობა ყველაზე დამაბნეველ შეცდომებს იწვევს, რადგან შეტყობინება თამაშიდან კი არა, მოდების loader-იდან მოდის და ხშირად პრობლემის ნაცვლად მოდს ასახელებს. თუ მხოლოდ მოდიანი მოთამაშეები ვერ შედიან, ყველაფრამდე მოდების სიები და ვერსიები შეადარე. რა ქნა, როცა მოდის განახლება რაღაცას აფუჭებს რუტინას გთავაზობს.
პლატფორმისა და crossplay-ის ჩავარდნები
როცა ერთ პლატფორმაზე ყველა ვერ შედის, მეორეზე კი ყველა შედის, მიზეზი თითქმის არასოდესაა ქსელი. ეს არის ის, თუ როგორ შედის ეს პლატფორმა.
- Valheim-ის მოთამაშეებს Xbox-ზე ან Microsoft Store-ზე მხოლოდ
-crossplay-ით გაშვებულ სერვერზე შეუძლიათ შესვლა, და ისინი log-ში დაბეჭდილი ექვსნიშნა კოდით შედიან და არა IP-ით. კოდი ყოველ გადატვირთვაზე იცვლება, ასე რომ გუშინდელი კოდი ჩიხია. სერვერი კლიენტის მოდებით ფაქტობრივად მხოლოდ კომპიუტერისთვისაა, რადგან კონსოლის მოთამაშეები მათ ვერ აყენებენ. Valheim-ის crossplay და Xbox-ის მოთამაშეები ამას დეტალურად განიხილავს. - Minecraft Bedrock-ის მოთამაშეები Java სერვერზე საერთოდ ვერ შედიან თარგმნის ფენის გარეშე, როგორიცაა Geyser, ხოლო Bedrock-ის კონსოლის ვერსიები ნებისმიერი სერვერის მისამართს გვერდის ავლის გარეშე ვერ ამატებენ. Minecraft Geyser და Bedrock crossplay განიხილავს დაყენებას და მისთვის საჭირო პორტებს - Bedrock UDP-ია, Java-სგან განსხვავებით.
- Steam-ისა და არა-Steam ასლები ერთი და იმავე თამაშის ზოგჯერ სხვადასხვა ქსელურ ფენას იყენებენ და ერთმანეთის სერვერებს ვერ ხედავენ. სანამ გაუმართაობას ჩათვლი, თამაშის საკუთარი შენიშვნები ნახე.
განახლების მეორე დღე
"ვერავინ უკავშირდება" ტიკეტების დიდი ნაწილი თამაშის patch-იდან ერთ დღეში მოდის. კლიენტი ავტომატურად განახლდა; სერვერი არა, ან განახლდა და მოდებმა ჯერ ვერ დაეწიეს. სიმპტომი ვერსიის შეცდომაა ყველასთვის ერთდროულად, რასაც მოთამაშეები ხშირად "სერვერი გათიშულია"-ს სახით გადმოსცემენ.
შეადარე ვერსია, რომელსაც სერვერი გაშვების output-ში აცხადებს, მოთამაშეების ვერსიას. თუ განსხვავდება, განაახლე სერვერი - პანელზე ჩვეულებრივ ეს გადატვირთვაა ჩართული განახლებებით - ხოლო მოდიფიცირებული სერვერისთვის მანამდე შეამოწმე, რომ ყოველ მოდს ახალი ვერსიისთვის გამოშვება აქვს. თუ მოთამაშე Steam-ის თვისებებით beta branch-ზეა, ის ყველა დანარჩენისგან განსხვავებულ ვერსიაზე იქნება, სანამ უარს არ იტყვის. თამაშის სერვერის განახლებების ავტომატიზაცია განიხილავს, როგორ შეინარჩუნო სერვერი სინქრონში patch-ის დღეს მოდების გაფუჭების გარეშე.
ნაბიჯი 6: ეს მოთამაშის ქსელია#
როცა ყველა დანარჩენი უკავშირდება და ერთი მოთამაშე ვერა, სერვერი უდანაშაულოა. მოთამაშის მხარეს საკუთარი სია აქვს:
- VPN, რომლის ჩართულობაც დაავიწყდა, ან ისეთი, რომელიც მის anti-cheat-ს არ მოსწონს.
- შემზღუდველი ქსელი. სკოლები, სამსახურები, სასტუმროები და ზოგიერთი საჯარო wifi არა-ვებ UDP-ს მთლიანად ბლოკავს. სცადე მობილური ინტერნეტი.
- უსაფრთხოების პროგრამა, რომელიც თამაშის გამავალ კავშირებს ბლოკავს, ან ახალი ინსტალაცია, რომელმაც ნებართვა ვერასოდეს მიიღო.
- მოძველებული DNS cache მას შემდეგ, რაც სერვერი გადაიტანე ან სახელი გადაარქვი.
- მისი პროვაიდერის მარშრუტიზაცია. იშვიათია, მაგრამ რეალური: ერთი პროვაიდერი გაფუჭებული გზით შენი სერვერის ქსელამდე.
mtrმოთამაშიდან სერვერამდე, წაკითხული traceroute-ისა და MTR-ის კითხვის დახმარებით, აჩვენებს, სად წყდება.
როცა ზოგჯერ მუშაობს#
წყვეტილი ჩავარდნები პრობლემის სხვა ფორმაა. მოთამაშეები შედიან, მერე ვერ შედიან, მერე ისევ შედიან.
- სერვერი გადაიტვირთება. Crash loop ან მეხსიერების ლიმიტი ჰგავს "სერვერი გამუდმებით ითიშება"-ს. შეამოწმე კონსოლი და uptime.
- სერვერი პიკის საათებში სავსეა. აშკარაა, როცა დაფიქრდები; არააშკარაა ფრაზიდან "21:00-ზე ვერ ვუკავშირდები".
- პაკეტების დაკარგვა. დანაკარგიან გზაზე შესვლები უფრო ხშირად გადის timeout-ში, რადგან handshake რამდენიმე ორმხრივ მიმოცვლას მოითხოვს. Latency, jitter და პაკეტების დაკარგვა ხსნის, როგორ დაინახო ის.
- შეტევა. Flood სერვერზე ან მის query პორტზე შესვლებს აფუჭებს, მაშინ როცა დაკავშირებული მოთამაშეები აგრძელებენ ან rubber-band-ს განიცდიან. რას ვაკეთებთ შეტევებთან აღწერს, როგორ გამოიყურება ეს შიგნიდან.
FAQ#
რატომ შემიძლია ჩემს სერვერზე შესვლა, ჩემს მეგობრებს კი არა?
თუ სერვერთან ერთ ქსელში ხარ, LAN გზას იყენებ, რომელიც როუტერს, forward-ს და ინტერნეტს მთლიანად გვერდს უვლის. შენი მეგობრები საჯარო გზას იყენებენ. შეამოწმე შენი ქსელის გარედან, და შეამოწმე forward, პროტოკოლი და არის თუ არა შენი კავშირი CGNAT-ის უკან.
რა განსხვავებაა "connection refused"-სა და "connection timed out"-ს შორის?
Refused ნიშნავს, რომ პაკეტმა მანქანას მიაღწია და ამ პორტზე არაფერი უსმენდა, ამიტომ მანქანამ უარყოფით უპასუხა. Timed out ნიშნავს, რომ საერთოდ არაფერმა უპასუხა, ჩვეულებრივ იმიტომ, რომ firewall-მა, ნაკლულმა forward-მა ან არასწორმა პროტოკოლმა პაკეტი გზაში გადააგდო.
მოთამაშეები "server is full"-ს იღებენ, მაგრამ ონლაინ არავინაა. რატომ?
ჩვეულებრივ ძველი სესიების გამო: მოთამაშეები, რომლებსაც crash მოუვიდათ ან კავშირი დაკარგეს, მანამ ითვლებიან, სანამ სერვერი ვერ შეამჩნევს, რომ წავიდნენ. გადატვირთვა მათ ასუფთავებს. თუ განმეორდება, შეამოწმე max players პარამეტრი და ხომ არ აჯავშნის რომელიმე plugin სლოტებს.
მოთამაშეებს ჩემს სერვერზე შესასვლელად პორტების გახსნა სჭირდებათ?
არა. მოთამაშეები გარეთკენ უკავშირდებიან, რასაც ყოველი სახლის როუტერი უშვებს. ღია ან გამოყოფილი პორტები მხოლოდ სერვერის მხარეს სჭირდება. თუ მოთამაშეს გამოყოფილ სერვერზე შესასვლელად პორტების გახსნას ურჩევენ, რჩევა არასწორია.
შეუძლია ჩემს ჰოსტს დაინახოს, რატომ ვერ უკავშირდება ვინმე?
ჰოსტს შეუძლია დაადასტუროს, რომ სერვერი მუშაობს, რომელი პორტებია გამოყოფილი და აღწევს თუ არა ტრაფიკი node-ს. მას არ შეუძლია მოთამაშის შეცდომის შეტყობინების ან მისი ქსელის დანახვა. მიეცი შენს ჰოსტს ზუსტი შეცდომა და მოთამაშის მიახლოებითი ადგილმდებარეობა კონსოლის output-თან ერთად.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.