Neko pokrene provjeru porta, vidi riječ otvoren i smatra da je server riješen. Ono što taj rezultat zapravo znači usko je: s lokacije provjeravača, u tom trenutku, prihvaćena je TCP veza na tu adresu i taj port. Ne govori ništa o rukovanju Minecraft protokola, provjeri računa ili o tome je li server pustio igrača u svijet.

To su četiri različita sloja, i neuspjeh na bilo kojem od njih daje istu rečenicu od igrača: nije radilo.

Sonda testira samo ono što vidi

TCP veza se završava kad obje strane dovrše trosmjerno rukovanje, koje leži ispod svega što igra zna. Sonda javlja da je slušalac postojao i odgovorio sa svoje mrežne lokacije. Ne može vam reći da je slušalac igra, jer svaki proces može zauzeti port i prihvatati veze.

Lokacija je jednako važna kao rezultat. Provjeravač na javnom internetu testira jedan put iz jedne mreže. Provjeravač koji operater pokrene iznutra iz iste mreže testira posve drugi put, a pozitivan rezultat tamo ne govori gotovo ništa o tome što doživljava udaljeni igrač. Dva različita provjeravača kod dva različita pružatelja usluga mogu se čak ne slagati iz razloga koji nemaju nikakve veze s vašim serverom.

Vrijeme je također važno. Rezultat sonde opisuje trenutak u kojem je pokrenuta, a kućna veza s dinamičkom adresom ili promijenjenim pravilom prosljeđivanja može pomaknuti pravi odgovor nekoliko minuta kasnije. Zapišite javnu adresu, port, porodicu adresa i vrijeme zajedno s presudom, inače opažanje nije ponovljivo. Ponovite provjeru sa stvarno druge mreže, a ne s telefona na istoj vezi.

Četiri sloja između socketa i igrača

Zamislite slijed koji klijent koji se pridružuje zapravo izvodi. Prvo razrješava adresu, zatim otvara TCP vezu na objavljeni port, zatim govori vlastitim protokolom igre radi pregovaranja i provjere, i na kraju server odlučuje hoće li ta identiteta biti puštena u svijet. Svaki sloj ima svoj potpis neuspjeha, a samo je prvi vidljiv provjeri porta.

Zadani port za Java Edition je 25565, ali operater može objaviti drugi vanjski port i proslijediti ga prema unutra, pa broj koji igrač upiše nije nužno broj koji server vidi. Provjera usmjerena na pogrešan vanjski port javlja zatvoreno dok je server potpuno zdrav, i to je najčešća lažna uzbuna u cijelom ovom području.

Imena dodaju još jedan korak iznad porta. Ako igrač upiše ime hosta, razrješavanje mora vratiti objavljenu adresu, a na računaru unutar mreže može umjesto toga vratiti privatnu. To nije neuspjeh vatrozida i nikakva količina prosljeđivanja portova to neće promijeniti.

Zašto igrač iznutra ide drugim putem

Igrač na istom LAN-u, ili na VPN-u koji doseže taj LAN, pokušava dosegnuti javnu adresu iznutra. Zahtjev ide na vanjsku adresu rutera i ruter ga mora prevesti natrag prema unutra, što je postavka koja se obično naziva hairpinning ili NAT refleksija. I prevedeni put naprijed i povratni put moraju se poklopiti da bi to radilo, a mnogi potrošački ruteri to uopće ne implementiraju.

Zato se vanjski gost pridružuje, a osoba koja sjedi pored servera ne može. Vanjski put je zaista ispravan; unutrašnji obilazak je ono što pada, i pada tako da s igračevog ekrana izgleda kao problem servera. Vlastiti dnevnik servera rješava što se dogodilo, jer veza koja nikad nije prevedena nikad do njega ne stigne.

Postoje dva poštena rješenja i jedna loša navika. Dobre opcije su pustiti unutrašnje igrače da koriste privatnu adresu ili naziv split-DNS koji se iznutra razrješava na privatnu adresu, ili uključiti refleksiju na ruteru ako ta funkcija postoji i radi. Loša navika je otvaranje više portova ili isključivanje vatrozida hosta, što ne može utjecati na prijevod koji ruter nikad nije izvršio.

Netgateova dokumentacija o NAT refleksiji detaljnije opisuje razliku između vanjskog i unutrašnjeg i alternativu split-DNS. Čitajte je kao opis mehanizma, a ne kao obećanje da bilo koji pružatelj VPN-a ili ruter podržava svaku varijantu loopbacka.

Prikupljajte dokaze sa svakog gledišta

Za svaki test zapišite ko ga je pokrenuo, odakle, u koje vrijeme, na koju adresu i port, i što je server zabilježio. Odbijanje igre s jasnim razlogom u konzoli servera nalaz je različit od veze koja nikad nije stigla, i ta dva vode u suprotnim smjerovima.

Ako se dopušteni udaljeni igrači pridružuju, a jedan lokalni igrač ne može, lokalni put je preostalo pitanje i zaslužuje vlastitu istragu: koju je adresu klijent koristio, što je ruter uradio s prijevodom i je li server zabilježio ikakav pokušaj veze. Predajte te tri činjenice onome ko posjeduje mrežu, umjesto da nasumice otvarate portove.

Povezani članci