Valheim-ის გამოყოფილ სერვერს ორი UDP პორტი სჭირდება: თამაშის პორტი, ნაგულისხმევად 2456, და მის ზემოთ მდგომი პორტი, 2457, რომელიც Steam-ის სერვერულ მოთხოვნებს პასუხობს. თამაშის პორტი -port-ით შეცვალე და ორივე ერთად გადაინაცვლებს - -port 2500 ნიშნავს 2500-ს და 2501-ს. დიაპაზონი 2456-2458 ძველ სახელმძღვანელოებსა და Iron Gate-ის თავდაპირველ ინსტრუქციებში უსაფრთხო მარაგია და არა მესამე მოთხოვნა; მისი გადამისამართება არაფერს აზიანებს, მაგრამ სერვერი 2458-ზე არ არის დამოკიდებული. ყველაფერი UDP-ია. TCP-ის წესი, რაც არ უნდა ფრთხილად იყოს დაწერილი, Valheim-ისთვის არაფერს აკეთებს. პოსტის დანარჩენი ნაწილი აღწერს, რისთვისაა თითოეული პორტი, როგორ გახსნა ისინი სახლში და Linux-ის ან Windows-ის მანქანაზე, რას ცვლის crossplay და როგორ მოათავსო რამდენიმე სერვერი ერთ მისამართზე.
რას აკეთებს თითოეული პორტი#
| პორტი | პროტოკოლი | დანიშნულება | რისთვის სჭირდება |
|---|---|---|---|
2456 (-port-ის მნიშვნელობა) | UDP | თამაშის ტრაფიკი | IP-ით შეერთება, თამაში |
2457 (-port + 1) | UDP | Steam-ის query | საზოგადოების სია, Steam-ის სერვერების ბრაუზერი |
2458 (-port + 2) | UDP | ახალი build-ები არ იყენებენ | არაფრისთვის - გადაამისამართე, თუ სახელმძღვანელო დაჟინებით მოითხოვს |
თამაშის პორტი თავად სესიას ატარებს: პოზიციებს, ზონების მონაცემებს, მშენებლობას, ჩატს. როცა Steam-ის მოთამაშე Join Game-ში მისამართს წერს, სწორედ ამ პორტს უერთდება.
Query პორტი არის გზა, რომლითაც სერვერი გარე სამყაროს თავის შესახებ უყვება ისე, რომ ვინმეს შეერთება არ სჭირდება: სახელს, მოთამაშეების რაოდენობას, აქვს თუ არა პაროლი, ვერსიას. მას კითხულობს საზოგადოების სია და Steam-ის საკუთარი სერვერების ბრაუზერი. თუ მხოლოდ query პორტია დაბლოკილი, სერვერი შესანიშნავად მუშაობს მათთვის, ვინც IP-ით უერთდება, და სიაში არასოდეს ჩანს - Valheim-ის მხარდაჭერის ერთ-ერთი ყველაზე ხშირი კითხვა, რომელსაც საკუთარი პოსტი აქვს: Valheim სერვერი სიაში არ ჩანს.
2458 ადრეული build-ებიდან და Iron Gate-ის თავდაპირველი ინსტრუქციებიდან მოდის, სადაც ხალხს 2456-2458-ის გადამისამართებას ურჩევდნენ. ახალი გამოყოფილი სერვერები თამაშის პორტს და მის ზემოთ მდგომს იკავებენ. თუ დიაპაზონს მაინც გადაამისამართებ, სამი პორტი არაფერი ღირს; თუ პორტებს ცალ-ცალკე გამოყოფ, ორი საკმარისია.
თამაშისა და query პორტების ზოგადი იდეა სხვადასხვა თამაშში აღწერილია პოსტში თამაშის სერვერის პორტები ახსნილი, თავად query პროტოკოლი კი - query პორტები და A2S.
როგორ ანაცვლებს -port წყვილს#
სერვერი ერთ პორტის არგუმენტს იღებს და query პორტს მისგან იღებს:
$ ./valheim_server.x86_64 -nographics -batchmode \ -name "Longship Crew" -world "Midgard" \ -password "herring-barrel-42" -port 2466ეს სერვერი თამაშისთვის UDP 2466-ს იყენებს, მოთხოვნებისთვის კი 2467-ს. ცალკე query პორტის არგუმენტი არ არსებობს; კავშირი ფიქსირებულია. აქედან სამი წესი გამომდინარეობს:
- ორივე პორტი თავისუფალი და მისაწვდომი უნდა იყოს. ჰოსტი ან firewall, რომელიც მხოლოდ
-port-ში ჩაწერილ რიცხვს ხსნის, მოგცემს სერვერს, რომელიც სიაში ვერ მოხვდება. - თამაშის პორტები ერთმანეთს სულ მცირე ორით დააშორე, როცა ერთ მანქანაზე რამდენიმე სერვერია.
2456და2457ორ თამაშის პორტად მეორე სერვერის თამაშის პორტს პირველის query პორტად აქცევს და ერთ-ერთი ვერ დაიკავებს მას. - IP-ით შემოსული მოთამაშეები თამაშის პორტს იყენებენ, არა query პორტს:
203.0.113.10:2466.
მესამე წესიდან ერთადერთი გამონაკლისი Steam-ის საკუთარი სერვერების ბრაუზერია (View, მერე Game Servers, მერე Favourites, თამაშის გარეთ). იქ სერვერის დამატება იყენებს მისამართს, რომელსაც Steam ამოწმებს, ანუ query პორტს: 203.0.113.10:2467. Valheim-ის შიგნით ყოველთვის თამაშის პორტი.
გაშვების ყველა სხვა არგუმენტი, ნაგულისხმევი მნიშვნელობებით და ტიპური შეცდომებით, მოცემულია Valheim-ის გაშვების არგუმენტების ცნობარში.
Crossplay და relay#
-crossplay-ით სურათი ზოგი მოთამაშისთვის იცვლება. Crossplay სერვერებთან PlayFab-ის relay-ით, ექვსნიშნა კოდით უერთდებიან, ასე რომ, Xbox-ის ან Game Pass-ის მოთამაშე კოდით relay-ს უკავშირდება, relay კი სერვერს ელაპარაკება. ამ ტრაფიკს შენს როუტერზე შემომავალი გადამისამართება ისე არ სჭირდება, როგორც პირდაპირ შეერთებებს, ამიტომაც სახლში მდგარ crossplay სერვერთან ზოგჯერ კოდით შეერთება შეიძლება, IP-ით კი ვერავინ აღწევს.
ამას ნუ დაეყრდნობი. Steam-ის მოთამაშეები IP-ით კვლავ პირდაპირ თამაშის პორტს უერთდებიან, საზოგადოების სიას კვლავ query პორტი სჭირდება, relay კი ყოველ პაკეტს დამატებით ნახტომს უმატებს. პორტები სწორად გახსენი და კოდი მოხერხებულობად ჩათვალე და არა გამოსავლად. რას ცვლის crossplay კიდევ, აღწერილია პოსტში Valheim crossplay და Xbox-ის მოთამაშეები.
პორტების გახსნა მანქანაზე#
სერვერს შენს საკუთარ Linux-ის ან Windows-ის მანქანაზე სჭირდება, რომ ოპერაციული სისტემის firewall-მა ტრაფიკი შემოუშვას, სანამ როუტერი საერთოდ ჩაერთვება.
Ubuntu-ზე ან Debian-ზე ufw-ით:
$ sudo ufw allow 2456:2457/udp comment "Valheim"$ sudo ufw status numbered/udp არჩევითი არ არის. sudo ufw allow 2456 მის გარეშე TCP-საც და UDP-საც მხოლოდ ერთ პორტზე ხსნის და query პორტს დახურულს ტოვებს. წესებს, მათ თანმიმდევრობას და წაშლას აღწერს ufw firewall-ის სახელმძღვანელო.
სუფთა iptables-ით, თუ მანქანა მას იყენებს:
$ sudo iptables -A INPUT -p udp --dport 2456:2457 -j ACCEPTეს წესი თავისით გადატვირთვას ვერ გადაურჩება; შეინახე ისე, როგორც შენი დისტრიბუცია აკეთებს (netfilter-persistent save Debian-ზე დაფუძნებულ სისტემებზე, სადაც ეს პაკეტი დაყენებულია).
Windows-ზე valheim_server.exe-ის პირველი გაშვება ჩვეულებრივ Windows Defender Firewall-ის ფანჯარას აჩენს. დაუშვი სულ მცირე კერძო ქსელებში. თუ ფანჯარა დახურე ან აშკარა წესი გინდა, ადმინისტრატორის PowerShell-ში გაუშვი ეს:
New-NetFirewallRule -DisplayName "Valheim server" -Direction Inbound ` -Protocol UDP -LocalPort 2456-2457 -Action Allowპროგრამაზე და არა პორტებზე მიბმული წესიც მუშაობს და -port-ის შეცვლასაც უძლებს, მაგრამ ტყდება, როცა SteamCMD სერვერს სხვა საქაღალდეში დააყენებს. პორტების წესებზე ფიქრი უფრო მარტივია.
გადამისამართება სახლში#
სახლის კავშირზე მდგარ სერვერს კიდევ ერთი ნაბიჯი სჭირდება: როუტერმა ამ პორტებზე შემომავალი UDP სერვერის PC-ს უნდა გაუგზავნოს.
- სერვერის PC-ს ფიქსირებული LAN მისამართი მიეცი. ან DHCP-ის რეზერვაცია როუტერში, ან სტატიკური მისამართი PC-ზე.
192.168.1.50-ზე გადამისამართება იმ დღეს წყვეტს მუშაობას, როცა PC192.168.1.51-ით დაბრუნდება. - შექმენი გადამისამართება. გარე პორტები
2456-2457, პროტოკოლი UDP, შიდა მისამართი - სერვერის PC, შიდა პორტები2456-2457. როუტერები ამას "port forwarding"-ს, "virtual server"-ს ან "NAT rules"-ს უწოდებენ. თუ როუტერი "TCP/UDP"-ს ან "Both"-ს გთავაზობს, ესეც კარგია; მარტო "TCP" - არა. - გაიგე შენი საჯარო მისამართი. როუტერის სტატუსის გვერდი მის WAN მისამართს აჩვენებს; თუ ის იწყება
100.64-დან100.127-მდე,10.-ით,172.16-დან172.31-მდე ან192.168-ით, შენი პროვაიდერი carrier-grade NAT-ს იყენებს და შენს როუტერზე ვერც ერთი გადამისამართება ვერ იმუშავებს. - შეამოწმე გარედან. სთხოვე მეგობარს IP-ით შეერთება, ან გამოიყენე ტელეფონი მობილური ინტერნეტით. საკუთარი ქსელის შიგნიდან შემოწმება არაფერს ამტკიცებს - იხილე ქვემოთ.
მესამე ნაბიჯის CGNAT შემთხვევა ხშირია მობილურ, ოპტიკურ და საკაბელო კავშირებზე, ხოლო ვარიანტები, რომლებსაც ის გიტოვებს - პროვაიდერისთვის საჯარო მისამართის თხოვნა, VPN პორტების გადამისამართებით ან სხვაგან ჰოსტინგი - შედარებულია პოსტში NAT და CGNAT თამაშის ჰოსტებისთვის. Port forwarding თუ ჰოსტინგის სერვერი აღწერს როუტერის იმ ფუნქციებს, რომლებიც ხელს გიშლის: UPnP, რომელიც ხელით დაწერილ წესებს ებრძვის, ორმაგი NAT პროვაიდერის მოდემის უკან და მისამართები, რომლებიც ღამით იცვლება.
საკუთარ სერვერთან შეერთება იმავე ქსელიდან
ხალხი პორტებს გადაამისამართებს, სერვერის გვერდით მდგარი PC-დან ცდილობს თავის საჯარო მისამართს შეუერთდეს და ასკვნის, რომ გადამისამართება გაფუჭებულია. შეიძლება სულაც წესრიგშია. ქსელის შიგნიდან საკუთარ საჯარო მისამართთან შეერთებას როუტერის ფუნქცია სჭირდება, რომელსაც NAT loopback ან hairpinning ჰქვია, და ის ბევრ სახლის როუტერს არ აქვს.
იმავე ქსელში მყოფი მოთამაშეები სერვერს მის LAN მისამართზე უნდა შეუერთდნენ, მაგალითად 192.168.1.50:2456. გარეთ მყოფები საჯარო მისამართს იყენებენ. თუ გარეთ მყოფი მოთამაშეები შედიან, გადამისამართება მუშაობს, რაც არ უნდა ხდებოდეს შიგნიდან.
რამდენიმე სერვერი ერთ IP-ზე#
ორი ან სამი Valheim სერვერის გაშვება ერთ მანქანაზე ან ერთ მისამართზე ჩვეულებრივი ამბავია - ვანილური სამყარო და მოდებიანი, ან მთავარი სამყარო და სატესტო ასლი. თითოეულს საკუთარი წყვილი პორტი სჭირდება და თითოეულს საკუთარი შენახვის საქაღალდე უნდა ჰქონდეს.
# Server A - the main world$ ./valheim_server.x86_64 -nographics -batchmode -name "Midgard Main" \ -world "Midgard" -password "herring-barrel-42" -port 2456 \ -savedir "/srv/valheim/main"# Server B - a modded test world$ ./valheim_server.x86_64 -nographics -batchmode -name "Midgard Test" \ -world "MidgardTest" -password "herring-barrel-42" -port 2466 \ -savedir "/srv/valheim/test"თამაშის პორტების ათით დაშორება (2456, 2466, 2476) ჩვევაა და არა წესი - ტექნიკური მინიმუმი ორია - მაგრამ ადგილს ტოვებს და firewall-ის წესებში პორტების ერთმანეთისგან გარჩევას ამარტივებს. გადაამისამართე ან დაუშვი თითოეული წყვილი: აქ 2456-2457 და 2466-2467.
ცალკე -savedir ისევე მნიშვნელოვანია, როგორც პორტი. ორ სერვერს, რომლებსაც საერთო შენახვის საქაღალდე აქვთ, საერთო აქვთ adminlist.txt, bannedlist.txt და permittedlist.txt, და თუ მათი სამყაროების სახელები ოდესმე დაემთხვევა, ერთმანეთის შენახვებს გადაწერენ. სტრუქტურას აღწერს Valheim-ის ფაილების მდებარეობა. თუ სერვერები სხვადასხვა სისტემური მომხმარებლით მუშაობენ, თითოეულს ისედაც საკუთარი ნაგულისხმევი შენახვის საქაღალდე აქვს, მაგრამ -savedir-ის დაყენება ამას აშკარას ხდის.
მოთამაშეები სერვერებს სიაში სახელით არჩევენ, IP-ით შეერთებისას კი პორტით. Crossplay სერვერებზე შეერთების კოდები თითოეულ სერვერს ცალკე აქვს, ასე რომ, ამ გზაზე დამატებით ფიქრი არ გჭირდება.
პორტები ჰოსტინგის სერვერზე#
ჰოსტინგის სერვერზე მისამართს შენ არ ირჩევ და როუტერს არ არედაქტირებ. ჰოსტი პორტებს საკუთარი დიაპაზონიდან გამოყოფს, შენი საქმე კი ისაა, რომ სერვერმა სწორედ გამოყოფილი პორტები გამოიყენოს.
სამი რამ შესამოწმებელი:
- გაშვების ხაზში თამაშის პორტი გამოყოფილს ემთხვევა. პანელიან ჰოსტინგზე
-port-ის მნიშვნელობა ჩვეულებრივ მთავარი ალოკაციიდან ავტომატურად ივსება. თუ გაშვების ბრძანებას ხელით არედაქტირებ, ის შეინარჩუნე. - Query პორტიც გამოყოფილია. რადგან Valheim მას თამაშის პორტს პლუს ერთად ითვლის, ჰოსტმა სწორედ ეს მომდევნო პორტი უნდა მოგცეს და არა ნებისმიერი მეორე. Query პორტი, რომელიც რაღაც სხვა რიცხვადაა გამოყოფილი, Valheim-ისთვის არაფერს აკეთებს.
- შეუერთდი პანელში ნაჩვენებ მისამართს და პორტს. ის შეიძლება
2456არ იყოს. სერვერს203.0.113.10:27015-ზე ზუსტად ამ მისამართით უერთდებიან.
RE:NODE-ზე Valheim-ის ყოველ გეგმას ორი გამოყოფილი პორტი მოყვება, თამაშის პორტი და მისი query პორტი, ხოლო Network ჩანართზე ალოკაციები ჩანს, ემატება და იშლება. ჰოსტინგის სერვერი წინა განყოფილებაში აღწერილ სახლის პრობლემებსაც გვერდს უვლის - არც CGNAT, არც როუტერი და არც loopback, მხოლოდ ორი UDP პორტი.
როგორ შეამოწმო, რომ პორტები ღიაა#
UDP-ის შემოწმება მოუხერხებელია. დასამყარებელი კავშირი არ არსებობს, ამიტომ "port checker" საიტი, რომელიც შეერთებას ცდილობს, UDP პორტს ჩვეულებრივ დახურულად ან უცნობად აჩვენებს მაშინაც, როცა ის მუშაობს. Valheim უკეთეს ტესტებს გაძლევს:
- შეუერთდი IP-ით ქსელის გარედან. თუ მუშაობს, თამაშის პორტი ღიაა. სხვა არაფერი ამტკიცებს ამას ასე პირდაპირ.
- მოძებნე სერვერი სიაში, ან დაამატე Steam-ის favourites-ში მისი query პორტით. თუ Steam სახელს და მოთამაშეების რაოდენობას აჩვენებს, query პორტი პასუხობს.
- შეამოწმე ხელსაწყოთი. ნებისმიერ რამეს, რაც Steam-ის A2S პროტოკოლზე ლაპარაკობს, შეუძლია query პორტს სერვერის ინფორმაცია სთხოვოს. პასუხი ნიშნავს, რომ პორტი მისაწვდომია და სერვერი მუშაობს.
- უყურე სერვერის ლოგს, როცა ვინმე უერთდება. შეერთების მცდელობა, რომელიც სერვერამდე მიდის, ხაზს ტოვებს. თუ ლოგში საერთოდ არაფერია, პაკეტები ვერ მივიდა - firewall, გადამისამართება ან არასწორი მისამართი და არა თამაში.
თუ IP-ით შეერთება ვერ ხერხდება და ლოგში არაფერია, პრობლემა ქსელის გზაშია. თუ ლოგი მცდელობას აჩვენებს და მოთამაშე მერე უარყოფილია, პორტები წესრიგშია და მიზეზი შეტყობინებაშია - ვერსია, პაროლი, ბანი ან სავსე სერვერი, თითოეული აღწერილია პოსტში Valheim-ის შეცდომა Failed to connect.
FAQ#
Valheim TCP-ს იყენებს თუ UDP-ს?
UDP-ს, თამაშის პორტისთვისაც და query პორტისთვისაც. TCP-ის წესი 2456-ისთვის ყველაზე ხშირი მიზეზია, რის გამოც ფრთხილად გადამისამართებულ სერვერთან ვერავინ აღწევს.
უნდა გადავამისამართო 2458?
არა, ახალი build-ებისთვის - არა. ძველ სახელმძღვანელოებში 2456-2458 წერია და სამივეს გადამისამართება არაფერს აზიანებს, მაგრამ სერვერი თამაშის პორტს და მის ზემოთ მდგომს იყენებს.
რომელი პორტი ჩავწერო IP-ით შეერთებისას?
თამაშის პორტი - 2456, თუ სერვერი სხვა -port-ით არ არის გაშვებული. Query პორტი მხოლოდ Steam-ის საკუთარი სერვერების ბრაუზერის favourites-ისთვისაა, თამაშის გარეთ.
შემიძლია Valheim 27015-ზე ან ნებისმიერ სხვა პორტზე გავუშვა?
კი. ნებისმიერი თავისუფალი UDP პორტი მუშაობს -port-ით, თუ მომდევნო პორტიც თავისუფალი და ღიაა. მოთამაშეები მაშინ ამ პორტს უერთდებიან, სია კი სერვერს მის ზემოთ მდგომი პორტით პოულობს.
რატომ შედიან ჩემი მეგობრები, მე კი საკუთარი ქსელიდან ვერ ვერთდები?
შენს როუტერს, სავარაუდოდ, NAT loopback არ აქვს, ამიტომ შენს საჯარო მისამართს შიგნით ვერ აბრუნებს. შეუერთდი სერვერის LAN მისამართს; გარეთ მყოფი მოთამაშეები საჯაროს იყენებენ.
Crossplay სერვერებს ღია პორტები მაინც სჭირდებათ?
Steam-ის მოთამაშეებისთვის, რომლებიც IP-ით უერთდებიან, და საზოგადოების სიისთვის - კი. კოდით შემოსული მოთამაშეები relay-ზე გადიან, მაგრამ სერვერი, რომელიც მხოლოდ კოდით მუშაობს, ნახევრად მორგებულია და საჭიროზე ნელია.


