Неверный хост и порты игрового сервера S.T.A.L.K.E.R.

Печать

Администраторы игровых серверов очень часто сталкиваются с проблемой, когда при подключении к серверу игра выдает сообщение: «Неверный хост». В этой статье рассмотрены основные причины появления этого сообщения. Кроме того, вы узнаете, что такое порты сервера, зачем они нужны и как их правильно выбирать.
При написании статьи предполагалось, что читатель уже умеет открывать порты. Более подробная информация об открытии портов дана по ссылке.

Адреса и порты
Мы не будем вдаваться во все подробности адресации и передачи данных на микротехническом уровне. Все равно ничего интересного, полезного и нужного мы там не найдем. Рассмотрим данную тему на более человекопонятном уровне.

У каждого компьютера, подключенного к сети Интернет, есть свой уникальный IP-адрес, по которому можно подключаться. А зачем нам нужны порты? Есть порты физические - это разъемы для кабелей. Есть порты программные - это, грубо говоря, номера которыми оперируют программы. Программные порты мы и будем рассматривать далее.

Давайте представим, что компьютер - это многоквартирный дом в большом городе. Если нам нужно попасть по определенному адресу, нам потребуется знать улицу, номер дома и номер квартиры.
Так вот, если ассоциировать компьютер с домом, получается:
  • Улица и номер дома - это IP-адрес. Зная IP, мы находим компьютер (дом).
  • Номер квартиры - это порт игрового сервера.
  • Входим в квартиру - подключаемся к серверу.
Любое сетевое приложение можно представить как квартиру, а порт - как номер квартиры.
В доме много квартир, а на компьютере много сетевых приложений, поэтому, зная только номер дома, мы не сможем попасть в нужную квартиру. Зная только IP-адрес, мы сможем попасть на нужный компьютер, но не сможем попасть на нужный игровой сервер. Игровой сервер ждет входящих подключений так же, как хозяин квартиры ждет гостей. Только хозяин слушает звонок, а сервер слушает свой порт.
Каждый игровой сервер, как и каждая квартира в доме должен иметь свой уникальный номер. Если несколько серверов слушают один и тот же порт, то это будет равносильно тому, что вы, придя по адресу ул. Ленина, д. 54, кв. 45 обнаружите, что в доме несколько квартир с номером 45. Такая ситуация и приводит к ошибке "Неверный хост". 

Часто в жизни бывает так, что вместо полного адреса "ул. Ленина, д. 54, кв. 45" нам могут сказать что-нибудь вроде "на ленинке у кинотеатра большой красный дом квартира 45" (заметьте, что номер квартиры указывается в любом случае, независимо от идентифицирующих признаков дома). В итоге мы все равно попадем в нужный дом и нужную квартиру. Точно так же у сервера может быть несколько разновидностей адресов: локальный, внешний, различные алиасы, но порт, как и номер у квартиры, всегда один.

Итак, чтобы клиент смог подключиться к правильному серверу, он должен при подключении указать:
улица.дом:№квартиры, то есть IP-адрес:порт.

Во всех сетевых клиентских приложениях, требующих явного указания IP-адреса и порта, действует единое правило: IP/домен и порт пишутся через двоеточие. Например: 

10.10.10.10:4554
server.stalkera.net:4045


В некоторых приложениях есть отдельные поля ввода для адреса и порта.
Количество портов, которые могут использоваться программами, ограничено диапазоном 1-65535. Порты меньше 1 и больше 65535 указывать нельзя.

Порты по умолчанию.

Когда мы вводим в браузере адрес сайта, мы не указываем порт. Но почему? Ведь веб-сервер сайта должен слушать определенный порт? А потому, что абсолютно все веб-серверы всех сайтов слушают порт 80. Это стандарт. Все браузеры тоже сделаны таким образом, что если вы вводите адрес без порта, то они отсылают запрос на порт 80. 
Например, http://mpnetworks.ru/ - это то же самое, что http://mpnetworks.ru:80/.
Про порты по умолчанию для серверов S.T.A.L.K.E.R. рассказано ниже.

Порты игровых серверов S.T.A.L.K.E.R.

Если ассоциировать игровой сервер S.T.A.L.K.E.R. с квартирой в доме, то получится коммуналка в общежитии. Но не так страшен чёрт.
Один сервер в этой игре слушает сразу три порта. Если вы запускаете несколько серверов, значит, вам нужно каждому серверу указать по три уникальных порта таким образом, чтобы порты одного сервера не совпадали с портами других серверов.
Порты серверов S.T.A.L.K.E.R.:
1. Порт сервера (portsv, по умолчанию 5445) – порт для подключения клиентов (игроков).
2. Порт GameSpy (portgs, по умолчанию 5447) – нужен для того, чтобы сервер принимал входящие подключения от мастер-сервера. Используется для отображения в мастерлисте.
3. Порт клиента (portcl, по умолчанию 5446) – по этому порту, при запуске сервера, автоматически подключается виртуальный «несуществующий» игрок. Такова специфика архитекуры клиент-сервер: если есть сервер, то нужен как минимум один клиент. Не путайте этото порт с портом для подключения реальных игроков.

Порты для сервера можно выбрать в батнике или в программе xrServerManager. Если в батнике вообще не указывать порты, то сервер будет использовать порты по умолчанию. xrServerManager не дает возможностей запускать сервер без указания портов. В xrServerManager можно указать порты -1 (автоназначение), но это автоназначение работает далеко не идеально. Игровой сервер, получая в портах параметр -1, должен искать незанятые другими приложениями порты и использвать их. Но эта функция оказалась недоработанной, в результате в xrServerManager есть возможность "использовать" неработающую функцию игрового сервера. В связи с этим рекомендуется явно указывать порты из диапазона 1-65535.

Чтобы не было неверных хостов, порты должны быть:
  • у всех серверов уникальными и не повторяться
  • открыты в роутерах, брандмауэрах, фаерволах
  • не заняты другими сетевыми приложениями, в том числе другими игровыми серверами
Если заняты или закрыты порты клиента(portcl) или GameSpy(portgs), то сервер не запустится и выдаст сообщения:
для portcl:
Failed to start client. Check the connection or level existance.
Destroying level

для portgs:
Error while adding this server to master list. Unable to query the server -> You may need to open port *** for incoming traffic

А вот с портом сервера может быть несколько вариантов:
Если portsv занят другим приложением или сервером, закрыт фаерволом, то сервер не запустится и выдаст сообщение:
IPureServer : port *** is BUSY!
Failed to start server.
Failed to start client. Check the connection or level existance.
Destroying level


Если portsv закрыт только роутером, но открыт фаерволом и для подключения виртуального клиента у вас используется:
client(localhost или внутренний IP типа 192.168.*.*)
 
то сервер запустится без ошибок и будет спокойно слушать порт, но игроки при подключении к этому серверу будут получать сообщение "Неверный хост".
Вот и вся суть неверного хоста – сервер запускается без ошибок, а порт сервера для внешних IP закрыт. Больше никаких причин быть не может.

Неисправные роутеры, модемы, сетевые карты тоже могут быть причинами "неверного хоста" при полностью открытых и правильно указанных портах, но их выявить сложнее. Обновление прошивки роутера тоже может стать причиной. Не обновляйте и не откатывайте прошивки роутеров, если это не необходимо. 

Некоторые модели роутеров по неизвестным причинам при полностью открытых портах могут блокировать то или иное сетевое приложение. Если вас постигла участь иметь такое оборудование, значит вам придется от него отказаться. На мой взгляд, самыми лучшими являются модемы и роутеры D-Link, меньше всего жалоб на неработоспособность различных сетевых приложений. На втором месте ASUS и Zyxel, у этих больше всего жалоб на различные торренты и P2P. Неизвестные производители сетевого оборудования нервно курят в сторонке. Стоит также обратить внимание на рекомендуемые вашим интернет-провайдером модели роутеров и модемов.

Как узнать, какие порты уже заняты?

В командной строке Windows выполните команду
netstat –a –b 

Результатом выполнения будет вывод длинного списка, в котором указаны имена процессов и занятые ими порты, например:
[xrEngine.exe]
UDP    192.168.0.100:4559     *:*
[xrEngine.exe]
UDP    192.168.0.100:5353     *:*

В данном случае процесс xrEngine.exe занимает порты 4559 и 5353.


Авторы: Максим "Бармен" Максимов, Павел "Flammable" Коваленко

При копировании статьи прямая активная ссылка на www.mpnetworks.ru с указанием авторов обязательна.



( 33 Голосов )

Последние сообщения с форума


Отправил v2v3v4 - 17/10/2017 20:48
Отправил Бармен - 26/09/2017 19:39
Отправил walera199760 - 24/09/2017 11:12
Отправил Бармен - 21/09/2017 20:16
Отправил walera199760 - 20/09/2017 16:55

Комментарии