Проверувачот на порти вели отворено? Зошто играчите на Minecraft уште не можат да се приклучат
Успешна TCP врска докажува само дека еден сокет бил прифатен од едно место. Најавувањето, приемот во светот и патеката од внатре кон надвор се одделни тестови.
Некој пушта проверка на порта, го гледа зборот отворено и го смета серверот за решен. Што всушност значи тој резултат е тесно: од локацијата на проверувачот, во тој момент, била прифатена TCP врска кон таа адреса и таа порта. Тоа не кажува ништо за ракувањето на Minecraft протоколот, за автентикацијата на сметката или за тоа дали серверот го пуштил играчот во свет.
Тоа се четири различни слоја, и неуспех во кој било од нив му го дава на играчот истото изречение: не работеше.
Сондата тестира само тоа што може да го види
TCP врската се комплетира кога двете страни ќе го завршат тринасочниот ракување, кое лежи под сето она што играта знае. Сондата известува дека постоел слушател и дека одговорил од својата мрежна локација. Таа не може да ти каже дека слушателот е играта, бидејќи секој процес може да заземе порта и да прифаќа врски.
Локацијата е исто толку важна како резултатот. Проверувач на јавниот интернет тестира една патека од една мрежа. Проверувач што операторот го пушта од внатрешноста на истата мрежа тестира сосема друга патека, и позитивен резултат таму не кажува речиси ништо за тоа што го доживува далечен играч. Два различни проверувачи кај два различни провајдери можат дури и да не се согласат од причини што немаат никаква врска со твојот сервер.
И времето е важно. Резултатот од сондата го опишува моментот кога била извршена, а домашна врска со динамична адреса или изменето правило за проследување може да го помести вистинскиот одговор неколку минути подоцна. Запиши ја јавната адреса, портата, фамилијата адреси и времето заедно со пресудата, инаку набљудувањето не е повторливо. Повтори ја проверката од навистина друга мрежа, а не од телефон на истата врска.
Четири слоја помеѓу сокет и играч
Замисли ја низата што ја извршува клиент што се приклучува. Прво ја решава адресата, потоа отвора TCP врска кон објавената порта, потоа зборува со сопствениот протокол на играта за да преговара и да се автентицира, и на крајот серверот одлучува дали тој идентитет е дозволен во светот. Секој слој има свој потпис на неуспех, и само првиот е видлив за проверувач на порти.
Стандардната порта за Java Edition е 25565, но операторот може да објави друга надворешна порта и да ја проследи навнатре, така што бројот што играчот го внесува не е нужно бројот што го гледа серверот. Проверувач насочен кон погрешната надворешна порта известува затворено додека серверот е сосема здрав, и тоа е најчестата лажна тревога во целото ова поле.
Имињата додаваат уште еден чекор над портата. Ако играчот внесе име на домаќин, решавањето мора да ја врати објавената адреса, а на машина во внатрешноста на мрежата може да врати приватна наместо неа. Тоа не е дефект на огнениот ѕид и никаква количина на проследување порти нема да го промени.
Зошто играчот од внатре зема друга патека
Играч на истиот LAN, или на VPN што стигнува до тој LAN, се обидува да ја достигне јавната адреса од внатре. Барањето оди кон надворешната адреса на рутерот и рутерот мора да го преведе назад навнатре, што е поставеноста обично наречена hairpinning или NAT одраз. И преводот напред и повратната патека мора да се поклопат за тоа да работи, а многу домашни рутери воопшто не го имплементираат.
Затоа гостинот од надвор се приклучува, а личноста што седи до серверот не може. Надворешната патека е навистина во ред; она што паѓа е внатрешниот заобиколен пат, и тој паѓа така што од екранот на играчот изгледа како проблем на серверот. Самиот дневник на серверот одлучува што се случило, бидејќи врска што никогаш не била преведена никогаш не стигнува до него.
Има две чесни поправки и една лоша навика. Добрите опции се да им се дозволи на внатрешните играчи да ја користат приватната адреса или име на split-DNS што внатрешно се решава на приватната адреса, или да се овозможи одраз на рутерот ако функцијата постои и работи правилно. Лошата навика е отворање повеќе порти или исклучување на огнениот ѕид на домаќинот, што не може да влијае на превод што рутерот никогаш не го извршил.
Документацијата на Netgate за NAT одразот подетално ја опишува разликата меѓу надворешно и внатрешно и алтернативата split-DNS. Читај ја како опис на механизмот, а не како ветување дека кој било конкретен VPN провајдер или рутер поддржува секоја loopback варијанта.
Собирај докази од секое гледиште
За секој тест запиши кој го извршил, од каде, во кое време, против која адреса и порта, и што забележал серверот. Одбивање на играта со јасна причина во конзолата на серверот е различен наод од врска што никогаш не пристигнала, и двете водат во спротивни насоки.
Ако дозволените далечни играчи се приклучуваат, а еден локален играч не може, локалната патека е останатото прашање и заслужува сопствена истрага: која адреса ја користел клиентот, што направил рутерот со преводот и дали серверот воопшто забележал каков било обид за поврзување. Предај ги тие три факти на тој што ја поседува мрежата, наместо да отвораш порти по случаен избор.