Nekdo zažene preverjanje vrat, vidi besedo odprto in meni, da je strežnik rešen. Kar ta rezultat v resnici pomeni, je ozko: z mesta preverjanja je bila v tistem trenutku sprejeta povezava TCP na ta naslov in ta vrata. Ne pove ničesar o rokovanju protokola Minecraft, preverjanju računa ali o tem, ali je strežnik igralca spustil v svet.

To so štiri različne plasti in napaka v kateri koli od njih pri igralcu povzroči isti stavek: ni delovalo.

Sonda preizkusi le tisto, kar lahko vidi

Povezava TCP se zaključi, ko obe strani dokončata tristransko rokovanje, ki leži pod vsem, kar igra pozna. Sonda poroča, da je obstajal poslušalec in da se je odzval s svoje omrežne lokacije. Ne more vam povedati, da je poslušalec igra, ker lahko vsak proces zasede vrata in sprejema povezave.

Lokacija je enako pomembna kot rezultat. Preverjanje v javnem internetu preizkusi eno pot iz enega omrežja. Preverjanje, ki ga upravljavec zažene od znotraj istega omrežja, preizkusi povsem drugo pot, in pozitiven rezultat tam ne pove skoraj ničesar o tem, kar doživlja oddaljeni igralec. Dve različni preverjanji pri dveh različnih ponudnikih se lahko celo razhajata iz razlogov, ki nimajo nič skupnega z vašim strežnikom.

Pomemben je tudi čas. Rezultat sonde opisuje trenutek, ko je tekla, in domača povezava z dinamičnim naslovom ali spremenjenim pravilom posredovanja lahko pravi odgovor premakne nekaj minut kasneje. Zapišite javni naslov, vrata, družino naslovov in čas skupaj s sodbo, sicer opazovanja ni mogoče ponoviti. Preverjanje ponovite iz resnično drugega omrežja, ne s telefona na isti povezavi.

Štiri plasti med vtičnico in igralcem

Predstavljajte si zaporedje, ki ga klient, ki se pridružuje, dejansko izvede. Najprej razreši naslov, nato odpre povezavo TCP na objavljena vrata, nato govori z lastnim protokolom igre, da se pogaja in preveri, in nazadnje strežnik odloči, ali je ta identiteta spuščena v svet. Vsaka plast ima svoj podpis napake in preverjanju vrat je vidna le prva.

Privzeta vrata Java Edition so 25565, vendar lahko upravljavec objavi druga zunanja vrata in jih posreduje navznoter, zato številka, ki jo igralec vnese, ni nujno številka, ki jo vidi strežnik. Preverjanje, usmerjeno na napačna zunanja vrata, poroča zaprto, medtem ko je strežnik popolnoma zdrav, in to je najpogostejši lažni alarm na celem tem področju.

Imena dodajo še en korak nad vrati. Če igralec vnese ime gostitelja, mora razrešitev vrniti objavljeni naslov, na stroju znotraj omrežja pa lahko namesto njega vrne zasebnega. To ni napaka požarnega zidu in nobena količina posredovanja vrat tega ne bo spremenila.

Zakaj igralec od znotraj izbere drugo pot

Igralec v istem omrežju LAN ali v VPN, ki doseže to omrežje, poskuša doseči javni naslov od znotraj. Zahteva gre na zunanji naslov usmerjevalnika in usmerjevalnik jo mora prevesti nazaj navznoter, kar je ureditev, ki se običajno imenuje hairpinning ali odsev NAT. Da bi to delovalo, se morata ujemati tako prevod naprej kot povratna pot, in mnogi domači usmerjevalniki tega sploh ne izvajajo.

Zato se gost od zunaj pridruži, oseba, ki sedi poleg strežnika, pa se ne more. Zunanja pot je res v redu; neuspešna je notranja obvozna pot in neuspešna je tako, da se z igralčevega zaslona zdi kot težava strežnika. Dnevnik samega strežnika odloči, kaj se je zgodilo, ker povezava, ki nikoli ni bila prevedena, do njega nikoli ne pride.

Obstajata dve pošteni popravki in ena slaba navada. Dobri možnosti sta pustiti notranjim igralcem uporabiti zasebni naslov ali ime split-DNS, ki se znotraj razreši na zasebni naslov, ali vklopiti odsev na usmerjevalniku, če funkcija obstaja in se obnaša pravilno. Slaba navada je odpiranje več vrat ali izklop požarnega zidu gostitelja, kar ne more vplivati na prevod, ki ga usmerjevalnik ni nikoli izvedel.

Dokumentacija Netgate o odsevu NAT podrobneje opisuje razliko med zunanjim in notranjim ter možnost split-DNS. Berite jo kot opis mehanizma in ne kot obljubo, da kateri koli ponudnik VPN ali usmerjevalnik podpira vsako različico loopbacka.

Zbirajte dokaze z vsakega vidika

Pri vsakem testu zapišite, kdo ga je zagnal, od kod, ob kateri uri, proti kateremu naslovu in vratom, in kaj je strežnik zabeležil. Zavrnitev igre z jasnim razlogom v konzoli strežnika je druga ugotovitev kot povezava, ki ni nikoli prispela, in obe vodita v nasprotni smeri.

Če se dovoljeni oddaljeni igralci pridružijo, en lokalni igralec pa se ne more, je preostalo vprašanje lokalna pot in zasluži si lastno preiskavo: kateri naslov je uporabil klient, kaj je usmerjevalnik storil s prevodom in ali je strežnik sploh zabeležil kakršen koli poskus povezave. Te tri dejstva predajte lastniku omrežja, namesto da naključno znova odpirate vrata.

Sorodni članki