მიუთითე A ჩანაწერი მისამართზე, რომელსაც პანელი სერვერისთვის აჩვენებს, დაელოდე, სანამ გადაწყდება, და მოთამაშეებს მიეცი play.example.com პორტთან ერთად. თითქმის ყველა თამაშისთვის ესაა მთელი საქმე და ორ წუთს იღებს. საინტერესო ნაწილი პორტია, რადგან დომენის სახელი მხოლოდ მისამართს ატარებს და სხვა არაფერს, და მხოლოდ მცირე რაოდენობა თამაშებისა წავა და პორტს თავად მოძებნის.
არსებობს ზუსტად სამი გზა, რომ პორტი გაქრეს, და ერთი გზა, რომ მასთან იცხოვრო. ეს პოსტი ოთხივეს გადის, რომელი თამაში რომელს ეკუთვნის და როგორ შეამოწმო შედეგი, სანამ Discord-ში გამოაქვეყნებ.
ხარვეზი: სახელი მისამართს ატარებს, თამაშს პორტი სჭირდება#
A ჩანაწერი სახელს IPv4 მისამართზე ასახავს. AAAA ჩანაწერი იგივეს IPv6-სთვის აკეთებს. არცერთს არ აქვს ველი პორტის ნომრისთვის, პროტოკოლისთვის ან გზისთვის, და შენს DNS პროვაიდერთან კონფიგურაციის არანაირი რაოდენობა ამას ვერ შეცვლის. ამიტომ play.example.com გადაწყდება 203.0.113.10-ზე და კლიენტი მაინც მანქანის წინ დგას სამოცი ათასი კარით და უნდა უთხრან, რომელი.
შენი ოთხი ვარიანტი:
- უთხარი ხალხს პორტი.
play.example.com:27015. მახინჯია, უნივერსალურია, ყველგან მუშაობს და მაინც გაცილებით უკეთესია, ვიდრე მისამართი, რომელიც არავის ახსოვს და ვერ გადაიცემა. - გამოაქვეყნე `SRV` ჩანაწერი. კლიენტი მას ეძებს და პორტს თავად გებულობს. მუშაობს მხოლოდ იმ თამაშებისთვის, რომელთა კლიენტიც ამ ძიებას რეალურად ასრულებს, რაც პრაქტიკაში ნიშნავს Minecraft Java-ს და რამდენიმე არათამაშის სერვისს.
- იმუშავე პორტზე, რომელსაც კლიენტი ვარაუდობს. თუ თამაშის ნაგულისხმევი 27015-ია და შენც 27015-ზე ხარ, არავინ აკრეფს პორტს. ეს ყველაზე სუფთა პასუხია, როცა ხელმისაწვდომია.
- დააყენე proxy წინ. proxy ელოდებულ პორტზე უსმენს და შიგნიდან რეალურზე გადაგზავნის. სტანდარტულია HTTP-სთვის და ხელმისაწვდომია Minecraft-ისთვის proxy-ით, როგორიცაა Velocity. უმეტესი UDP თამაშისთვის ხელმისაწვდომი არ არის.
რა მისამართზე უნდა მიუთითო#
ამ ყველაფრამდე სწორი მისამართი აიღე. პანელზე დაფუძნებულ ჰოსტინგზე სერვერის საკუთარი გვერდი აჩვენებს მისამართსა და პორტს, რომელზეც ის რეალურად არის მიბმული, და სწორედ ეს წყვილი მიდის ჩანაწერში და დაკავშირების სტრიქონში. გადმოაკოპირე და ნუ აკრეფ ხსოვნიდან, რადგან პორტი, რომელიც გახსოვს, ხშირად გასული თვისაა.
სამი ხაფანგი ამ ნაბიჯზე:
- პანელის მისამართი სერვერის მისამართი არ არის.
panel.renode.spaceვებსაიტია. ის არ არის ადგილი, სადაც შენი გეიმ სერვერი უსმენს, და მასზე ჩანაწერის მითითება არაფერს გვაძლევს. - გაზიარებული მისამართი ნორმალურია. რამდენიმე სერვერი შეიძლება ერთ მისამართს უკან იჯდეს სხვადასხვა პორტზე. სწორედ ამიტომ არის პორტი მნიშვნელოვანი და ამიტომაც ვერ ივარაუდებ, რომ ნაგულისხმევი პორტი თავისუფალია. სტატიკური მისამართები და გჭირდება თუ არა ერთი განიხილავს ორ შემთხვევას, როცა გამოყოფილი მისამართი არჩევითობას წყვეტს - როცა სხვა გიშვებს allow-list-ში და როცა გჭირდება ნაგულისხმევი პორტი, რომლის გაზიარებაც არ შეიძლება.
- Query პორტი თამაშის პორტი არ არის. უმეტესი თამაში ორს მაინც ანაწილებს. მოთამაშეები თამაშის პორტს უერთდებიან; სერვერების browser-ები query პორტს ელაპარაკებიან. query პორტის ჩაწერა ჩანაწერში იძლევა სახელს, რომელიც გადაწყდება, და კავშირს, რომელიც არასოდეს სრულდება. გეიმ სერვერის პორტები ახსნილი სრულ კლასიფიკაციას შეიცავს.
RE:NODE დომენებს არ ყიდის და DNS-ს არ უშვებს, ამიტომ თავად ჩანაწერი იქ იდება, სადაც შენი ზონა ცხოვრობს - შენს რეგისტრატორთან, Cloudflare-ში ან ვისთანაც შენი nameserver-ები მიუთითებს. dig +short NS example.com ამ კითხვას საბოლოოდ პასუხობს, ხოლო ჩანაწერების რედაქტირება პანელში, რომელიც ავტორიტეტული არ არის, ერთი საღამოს დაკარგვის პოპულარული გზაა.
A ჩანაწერი, რომელიც ყოველთვის მუშაობს#
ეს ის ვერსიაა, რომელსაც უნდა მიმართო, თუ კონკრეტული მიზეზი არ გაქვს.
- შენი DNS პროვაიდერის რედაქტორში შექმენი
Aჩანაწერი. - სახელი:
play, თუ ფორმა label-ს იღებს,play.example.com, თუ სრულ სახელს ითხოვს. შეამოწმე არსებული ჩანაწერი, რომ ნახო, რომელ ფორმას იყენებს. - მნიშვნელობა: IPv4 მისამართი სერვერის გვერდიდან.
- TTL:
300, სანამ აწყობ,3600, როცა დასტაბილურდება. - შეინახე და შემდეგ გადაწყვიტე გარე ქსელიდან, სანამ ვინმეს ეტყვი.
play 300 IN A 203.0.113.10node 300 IN AAAA 2001:db8::10თუ შენს პროვაიდერს აქვს HTTP proxy ფუნქცია - Cloudflare-ის ნარინჯისფერი ღრუბელი არის ის, რასაც ხალხი ხვდება - ის ამ ჩანაწერისთვის უნდა გამორთო. ეს proxy წყვეტს HTTP-სა და HTTPS-ს. თამაშის პროტოკოლი არცერთია, ამიტომ პროქსირებული ჩანაწერი მოთამაშეებს proxy ქსელის კუთვნილ მისამართს გადასცემს, რომელიც თამაშის კავშირს არასოდეს მიიღებს. ჩანაწერი უნდა იყოს DNS-only, ნაცრისფერი ღრუბელი. Cloudflare ვებსაიტებისთვის და გეიმ სერვერებისთვის ზუსტად ადგენს, რას ატარებს და რას არ ატარებს ნარინჯისფერი ღრუბელი.
როცა სერვერი ერთზე მეტია, სერვისის სახელები პირდაპირ მისამართებზე აღარ მიუთითო. მისამართი ჩადე მანქანის სახელში და სერვისის სახელები CNAME-ით მასზე მიუთითე, რომ გადატანა ცხრის ნაცვლად ერთი რედაქტირება იყოს - ქვედომენები სერვერებისთვის ამ შაბლონს სრულად აჩვენებს.
SRV ჩანაწერები და თამაშები, რომლებიც მათ კითხულობენ#
SRV ჩანაწერი ჰოსტსა და პორტს ერთად ატარებს, ამიტომ კლიენტს, რომელიც მას ეძებს, მოთამაშისგან პორტი არ სჭირდება. საქმე ისაა, რომ კლიენტმა უნდა იკითხოს, და თითქმის არცერთი არ კითხულობს.
Minecraft Java კითხულობს. როცა მოთამაშე ჰოსტის სახელს პორტის გარეშე აკრეფს, კლიენტი ჯერ _minecraft._tcp.<hostname>-ს ეძებს და თუ ჩანაწერი დაბრუნდება, იყენებს მისგან სამიზნესა და პორტს. თუ არაფერი დაბრუნდება, უბრალო A ძიებაზე ბრუნდება და 25565-ს ვარაუდობს.
_minecraft._tcp.play 300 IN SRV 0 5 25571 node.example.com.node 300 IN A 203.0.113.10მეორე ჩანაწერია ის, რასაც ხალხი ივიწყებს. SRV ჩანაწერში არაფერია მისამართი: სამიზნე hostname-ია და ამ hostname-ს საკუთარი A ჩანაწერი სჭირდება. სამიზნის ველში აკრეფილი IP მისამართი არასწორია და ჩუმად ჩავარდება. SRV ჩანაწერები Minecraft-ისთვის ყოველ ველს გადის, სამ ფორმას, რომლებშიც რეგისტრატორების ფორმები მოდის, და dig ბრძანებებს, რომლებიც ამტკიცებს, რომ მუშაობს.
Minecraft Java-ს გარეთ SRV მიუწვდომლად ჩათვალე, სანამ არ გატესტავ. Minecraft Bedrock ძიებას არ ასრულებს. Source და GoldSrc engine-ის თამაშები - არა. Valheim, Palworld, Rust, Terraria და გადარჩენის კატალოგის დანარჩენი - არა. ხმოვანი სერვერები აღსანიშნავი გამონაკლისია - TeamSpeak 3 იყენებს _ts3._udp-ს და Mumble _mumble._tcp-ს - რაც ღირს ცოდნად, რადგან ხშირად ესაა community-ის DNS-ის მეორე ნახევარი.
ნაგულისხმევი პორტები და proxy-ები, რომლებიც პორტს აშორებენ#
თუ პორტი ნაგულისხმევი შეიძლება იყოს, გახადე ნაგულისხმევი და შეწყვიტე კითხვა. მოთამაშე, რომელიც play.example.com-ს აკრეფს და სხვა არაფერს, ხელმისაწვდომი საუკეთესო შედეგია, და თამაშისთვის მის სტანდარტულ პორტზე მარტო A ჩანაწერი ამას აღწევს.
| თამაში | ნაგულისხმევი თამაშის პორტი | პროტოკოლი |
|---|---|---|
| Minecraft Java | 25565 | TCP |
| Minecraft Bedrock | 19132 | UDP |
| Source და GoldSrc თამაშები | 27015 | UDP |
| Valheim | 2456 | UDP |
| Palworld | 8211 | UDP |
| FiveM | 30120 | TCP და UDP |
| Project Zomboid | 16261 | UDP |
| 7 Days to Die | 26900 | TCP და UDP |
| Terraria | 7777 | TCP |
| Factorio | 34197 | UDP |
| Arma 3 და DayZ | 2302 | UDP |
| Don't Starve Together | 10999 | UDP |
ზოგიერთი მათგანის პორტები ვერსიებს შორის იცვლება, ამიტომ დაადასტურე იმ პორტთან, რომელზეც შენი სერვერი რეალურად მიება, რასაც კონსოლი გაშვებისას ბეჭდავს.
proxy-ს გზა უფრო ვიწროა, ვიდრე ხალხი ელოდება. Reverse proxy იმით მუშაობს, რომ პროტოკოლს საკმარისად კარგად ესმის, რომ მოთხოვნილი hostname წაიკითხოს და მის მიხედვით მარშრუტი გაატაროს, სწორედ ამიტომ არის ის სტანდარტული HTTP-სთვის და იშვიათი სხვაგან - რას აკეთებს reverse proxy თანმიმდევრობას ხსნის. Minecraft-ს აქვს ეკვივალენტი Velocity-სა და BungeeCord-ში, რომლებიც 25565-ზე უსმენენ და მოთამაშეებს backend-ებზე შიდა პორტებზე გადაგზავნიან და შეუძლიათ მარშრუტიზაცია იმ hostname-ითაც, რომელიც მოთამაშემ აკრიფა, რომ creative.example.com და play.example.com სხვადასხვა სერვერზე მოხვდნენ ერთი საჯარო პორტის უკან. Minecraft Velocity proxy ქსელები ამ აგებას აღწერს. UDP shooter-ის ან გადარჩენის თამაშისთვის ეკვივალენტი, რომელსაც დაეყრდნობოდი, არ არსებობს, ხოლო ზოგადი TCP ან UDP გადამგზავნი ამატებს ერთ ნახტომს და მარცხის ერთ წერტილს, რომ ორწერტილი დაზოგოს.
RE:NODE-ის გეიმ გეგმები proxy სლოტს არ შეიცავს, რაც განზრახაა: არაფერია, რისი გაკეთებაც HTTP proxy-ს თამაშის ნაკადთან შეუძლია. აპლიკაციებისა და ვებ გეგმები მას შეიცავს, რადგან HTTP ზუსტად ის ადგილია, სადაც ის თავის ადგილს იმსახურებს.
რას იღებს თითოეული თამაშის კლიენტი#
ჩანაწერი მხოლოდ მაშინაა სასარგებლო, თუ კლიენტი სახელს ველში მიიღებს. უმეტესი მიიღებს, ხოლო ისინი, რომლებიც უარს ამბობენ, ბრძანებას გვთავაზობენ კონსოლში, რომელიც არ ამბობს.
| კლიენტი | სად იწერება სახელი | შენიშვნები |
|---|---|---|
| Minecraft Java | Add Server, მისამართის ველი | პორტი გამოტოვე, რომ SRV ჩანაწერი გამოიყენოს |
| Minecraft Bedrock | მისამართი და პორტი ორ ველად | SRV ძიება არ არის. მიეცი ორივე მნიშვნელობა |
| Source და GoldSrc | connect play.example.com:27015 | კონსოლი, developer კონსოლის ჩართვით |
| Steam server browser | Favourites, Add a Server | უმეტესი თამაში სახელს იღებს; თუ ერთი უარს ამბობს, გამოიყენე კონსოლი |
| Valheim | Join Game, Add Server | play.example.com:2456, თამაშის პორტი და არა query პორტი |
| FiveM | connect play.example.com:30120 | F8 კონსოლი |
| გადარჩენის თამაშები საერთოდ | Direct Connect დიალოგი | სცადე სახელი; პრობლემის იზოლირებისთვის დაუბრუნდი მისამართს |
თუ კლიენტი უარყოფს სახელს, რომელიც ყველგან სხვაგან სწორად წყდება, ეს კლიენტია და არა შენი DNS. ამ მოთამაშეებს მისამართი და პორტი მიეცი და გააგრძელე - სახელი მაინც იმსახურებს თავის ადგილს ყველასთვის სხვისთვის და იმ დღისთვის, როცა გადაიტან.
Crossplay ამას უფრო ართულებს. Bedrock-ის მოთამაშე, რომელიც Java სერვერს Geyser-ით უკავშირდება, სხვა პორტს UDP-ით უერთდება, ამიტომ მას საკუთარი მისამართისა და პორტის წყვილი სჭირდება, Java მხარე როგორიც არ უნდა იყოს - Geyser და Bedrock crossplay ორ შესასვლელ კარს აღწერს.
დამტკიცება, სანამ გამოაცხადებ#
წარუმატებელ შესვლას ძალიან ბევრი შესაძლო მიზეზი აქვს, რომ ტესტი იყოს. გაანსხვავე DNS ქსელისგან და ქსელი თამაშისგან, ამ თანმიმდევრობით.
$ dig +short A play.example.com @1.1.1.1203.0.113.10$ dig +short SRV _minecraft._tcp.play.example.com @1.1.1.10 5 25571 node.example.com.$ nc -vz play.example.com 25571Connection to play.example.com 25571 port [tcp/*] succeeded!resolver-ის დასახელებას მნიშვნელობა აქვს. 1.1.1.1-ის ან 8.8.8.8-ის პირდაპირ კითხვა გვერდს უვლის ყველაფერს, რაც შენმა როუტერმა და პროვაიდერმა დაიმახსოვრა, ასე განასხვავებ "არ არის გამოქვეყნებული" და "არ გავრცელებულა". Windows-ზე nslookup play.example.com 1.1.1.1 და Test-NetConnection play.example.com -Port 25571 იმავე ორ საქმეს აკეთებს.
UDP თამაშისთვის nc-ს დასასრულებელი handshake არ აქვს, ამიტომ პორტის ტესტი სასარგებლო ფორმით არ არსებობს. დარწმუნდი, რომ სერვერი იქ მიება, სადაც ფიქრობ, მისი კონსოლის გაშვებისას წაკითხვით - ის იტყვის - და შემდეგ გააკეთე ერთადერთი ტესტი, რომელიც ითვლება: შედი სახელით, მანქანიდან, რომელიც შენს ქსელში არ არის. მობილურ ინტერნეტზე ტელეფონი ყველაზე სწრაფი გზაა იმის დასამტკიცებლად, რომ გზა მუშაობს ვინმესთვის, ვინც შენ არ ხარ.
რას არ გააკეთებს დომენი შენთვის#
ის შენს მისამართს არ მალავს. ნებისმიერს შეუძლია სახელის ორ წამში გადაწყვეტა. დომენი კომფორტის შრეა და არა დაცვა. ის, რაც ნაკადსა და შენს სერვერს შორის დგას, upstream ფილტრაციაა, და ისიც მხოლოდ აშკარა მოცულობით ტრაფიკს აგდებს - რას ვაკეთებთ თავდასხმების წინააღმდეგ პატიოსანი ვერსიაა.
ის latency-ს არ ამცირებს. პაკეტები იმავე გზას გადიან, რასაც ადრე. ერთადერთი ქსელური რიცხვი, რომელსაც სახელი ცვლის, არის ერთჯერადი ძიება დაკავშირებისას.
ის კლიენტს, რომელმაც მისამართი დაიმახსოვრა, არ გადაურჩება. ზოგი კლიენტი დაკავშირებისას ერთხელ წყვეტს და შედეგს სესიის განმავლობაში ინახავს, და Steam-ის favourites სია განსაკუთრებით იმახსოვრებს იმას, რაც იპოვა. გადატანის შემდეგ სთხოვე ხალხს ჩანაწერის წაშლა და ხელახლა დამატება იმის ნაცვლად, რომ გაარკვიო, რატომ ეშვება ერთი ადამიანი ძველ მანქანაზე.
ის დახურულ პორტს არ ასწორებს. სრულყოფილი ჩანაწერი პორტზე, რომელსაც არაფერი უსმენს, კლიენტის მხრიდან ზუსტად გატეხილ ჩანაწერს ჰგავს. თუ სახელი წყდება და შესვლა ვერ ხერხდება, პრობლემა DNS-ს გაცდა.
სერვერის გადატანა და რა ფუჭდება ამ დროს#
სახელის გამოყენების მთელი მიზეზი გადატანაა, ამიტომ გააკეთე სათანადოდ.
- ერთი დღით ადრე ჩამოწიე ჩანაწერის TTL - და
SRV-ის სამიზნისაც, თუ გაქვს -300-მდე. - მთლიანად დაელოდე წინა TTL-ის ამოწურვას, რომ ყველა ქეშმა მოკლე მნიშვნელობა აიღოს.
- გადაიტანე world ან მონაცემები, გაუშვი ახალი სერვერი და დაადასტურე, რომ მისამართით მუშაობს.
- შეცვალე ჩანაწერი. ერთი ხაზი.
- ძველი სერვერი რამდენიმე საათი ჩართული დატოვე. სესიაში მყოფი მოთამაშეები არაფერს თავიდან არ წყვეტენ და მოძველებული ქეშები აგრძელებენ მოსვლას.
- უყურე ძველი სერვერის კონსოლს. როცა ერთი საათი არავინ დაკავშირებულა, დასრულდა.
- TTL უკან ასწიე.
სერვერის გადატანა მოთამაშეების დაკარგვის გარეშე დანარჩენს განიხილავს, იმ ნაწილის ჩათვლით, სადაც მონაცემები DNS-მდე გადადის და არა შემდეგ.
სამი რამ ხშირად ფუჭდება გადართვისას. ძველი ჩანაწერი მოთამაშის როუტერს კვლავ ახსოვს და ის ამტკიცებს, რომ სერვერი გათიშულია - სთხოვე, სცადოს მისამართით პირდაპირ, რომ დაადასტუროს. ახალი სერვერის firewall-ს თამაშის პორტი გახსნილი აქვს და query პორტი - არა, ამიტომ მუშაობს და არასოდეს ჩნდება სიაში. და ვინმეს shortcut-ში IP ჩაშენებულია იმ დროიდან, როცა დომენი არ გქონდა, ეს კი პრობლემაა, რომლის დასასრულებლადაც დომენი იყიდეს.
FAQ#
შემიძლია პორტი მოვაშორო, რომ მოთამაშეებმა მხოლოდ ჩემი დომენი აკრიფონ?
მხოლოდ სამ სიტუაციაში: თამაში Minecraft Java-ა და SRV ჩანაწერს აქვეყნებ, სერვერი თამაშის ნაგულისხმევ პორტზე მუშაობს, ან პროტოკოლის გამგები proxy ნაგულისხმევ პორტზე გისმენს შენ მაგივრად. სხვა შემთხვევაში play.example.com:27015 სწორი პასუხია და მაინც გაუმჯობესებაა ნედლ მისამართთან შედარებით.
უნდა ვიყიდო დომენი ჩემი ჰოსტისგან?
არა, და ზოგადად ვერც შეძლებ. დომენი რეგისტრატორისგან ისყიდება და მისი ჩანაწერები იქ ცხოვრობს, სადაც მისი nameserver-ები მიუთითებს. ჰოსტინგი და DNS ცალკე სერვისებია, რომლებიც მხოლოდ ერთი ჩანაწერის მნიშვნელობაზე ხვდებიან. RE:NODE არც დომენს ყიდის და არც DNS-ს უშვებს.
რატომ მუშაობს სახელი ჩემთვის და ჩემი მეგობრებისთვის - არა?
თითქმის ყოველთვის ქეშირებაა. შენს resolver-ს ახალი პასუხი აქვს, მათას - ძველი, წინა TTL-ის დარჩენილი დროის განმავლობაში. გატესტე სახელი 1.1.1.1-თან, რომ გამოქვეყნებული სიმართლე ნახო, და შეამოწმე, ვინმეს ხომ არ აქვს მისამართი შენახული ძველ პორტთან ერთად.
A გამოვიყენო თუ CNAME გეიმ სერვერისთვის?
A ჩანაწერი კარგია და ერთი ძიებით მოკლეა. CNAME, რომელიც მანქანის სახელზე მიუთითებს, უკეთესია, როცა ერთზე მეტ სერვერს უშვებ, რადგან მანქანის გადატანა ერთი რედაქტირება ხდება. CNAME დომენის apex-ზე ნუ დააყენებ - ეს დაუშვებელია.
აძლევს თუ არა დომენის მიბმა სერვერს სერტიფიკატს?
გეიმ სერვერისთვის - არა, და არც სჭირდება: თამაშის პროტოკოლები HTTPS-ს არ იყენებენ. სერტიფიკატები მნიშვნელოვანია ვებ და აპლიკაციის სერვერებისთვის, რომლებსაც HTTPS-ით უკავშირდებიან, სადაც proxy სლოტი სერტიფიკატს გასცემს და განაახლებს შენთვის, როგორც კი სახელი გადაწყდება.




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