• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Бесконечная авторизация. WorldSocket::ReadHeaderHandler()
Autotunage
Скаут
Ставлю чистое ядро, чистую базу тринити 3.3.5а
Запускаю сервер и при подключении висит бесконечная авторизация, а в консоли worldserver'а выпадает вот что:

Код
WorldSocket::ReadHeaderHandler(): client MyIP sent malformed packet (size: 8, cmd: 1867972646)
Гуглил знатно, но должной инфы не нашел.
Ах, да.
Запускаю серв на Windows Server 2012 r2. Компилил и на win7 (свой комп) и на удаленном серваке. Изменений не было.
Что еще делал?
1) Компилил с разными версиями OpenSSL, boost (где-то за бугром вычитал, что могут быть проблемы с библиотеками).
2) Добавил правила для портов 3724 и 8085 - на 2ip.ru и тут показывает, что порты открыты.
2.1) Пробовал вырубать брандмауэр, добавлять возможность подключения через любой порт и т.д.
3) Добавлял правила для authservera и worldservera
4) Указывал другие порты
5) Узнавал у хостинг-провайдера - порты с их стороны не блокированы. Ограничений нет.
6) Даже менял хостинг в надежде, что провайдер шалит
7) Такая же проблема с подключением другого человека
8) Смена клиента не решает проблему
9) На локалке запускается и коннектится без проблем, следовательно проблема только при удаленном подключении - либо бьются пакеты данных, либо другая неведомая хрень.
10) Предположил, что может быть кто-то как-то накосячил в ядре - ставил ГОТОВУЮ сборку. Без изменений.
11) Пытался проверить подключение через telnet - подключение через порт 3724 без проблем. Однако же при подключении через 8085 выдает что-то с чем-то (явно проблема с кодировкой), но что именно выдает - не знаю. Скрин

12) netstat -a при запущенных authserver и worldserver показывает, что соединение через порт 8085 ESTABLISHED, т.е. все норм. Но 3724 порта не вижу, только разве что 0.0.0.0:3724 LISTENING
13) Вычитал, что якобы кто-то или что-то может юзать порт 8085 и при запуске сервера получается такая вот беда. Проверил через netstat и ни одно приложение не юзает 8085.

Бьюсь уже пару дней. Внятной инфы нигде вообще нет. Подскажите мне, пожалуйста) или я дебил, или лыжи не едут?
Сообщение # 1 отредактировано Autotunage - Четверг, 27.12.2018, 21:45
r0m1ntik
Центурион
Autotunage, это из за проблемы в world базе. Из за чего именно так сказать не могу, решал проблему такую одному человеку (замена world базы и проблема пропала).
Сообщение # 2 написано 28.12.2018 в 03:51
Autotunage
Скаут
r0m1ntik, разве? Чистое ядро, чистая база тринити, еще раз по новой скачал, скомпилил. И все равно. Допустим, если это так, то почему ГОТОВАЯ сборка, опубликованная несколько лет назад, скачанная с этого же портала, работает у кучи людей без проблем, а у меня такая же ошибка, как и с чистой свежей триней? Как-то все странно...

Добавлено (28.12.2018, 09:05)
---------------------------------------------
Вот что еще заметил: снова пробил netstat -a и заметил, что порта 8085 нет. Во время подключения клиента и в момент зависания авторизации в netstat по адресу и порту 8085 висит FIN_WAIT_2, что означает "ожидание запроса на закрытие соединения со стороны чужой программы TCP". Установленного соединения нет. В чем все-таки проблема??

Сообщение # 3 отредактировано Autotunage - Пятница, 28.12.2018, 07:57
kvipka
Сержант
есть подозрение, что вы вынесли свой репак с локальной машины куда-то еще, и не внесли данные в бд auth в таблицу realmlist, а именно локальные и общий ip адреса.
Ну и в конфигах где bindIP так же не выставили нули, а какой-то другой адрес, например тот же 127.0.0.1
Сообщение # 4 написано 28.12.2018 в 12:48
r0m1ntik
Центурион
Autotunage, напишите мне в вк
Сообщение # 5 написано 28.12.2018 в 14:11
Autotunage
Скаут
kvipka, все по дефолту делал, как и раньше. Конфиги чистые, там кроме логина и пароля от базы ничего не менял. BindIP как и положено 4 нуля. И, конечно же, в базе auth в таблице realmlist все как и положено - в address указан внешний айпи, localAddress - 127.0.0.1, никаких левых ненужных флагов не указано, версия игры указана верно - 12340, как и в клиенте.
Сообщение # 6 написано 28.12.2018 в 19:06
p620
Маршал
Цитата Autotunage ()
Код
WorldSocket::ReadHeaderHandler(): client MyIP sent malformed packet (size: 8, cmd: 1867972646)

исключает
Цитата Autotunage ()
2) Добавил правила для портов 3724 и 8085 - на 2ip.ru и тут показывает, что порты открыты.
2.1) Пробовал вырубать брандмауэр, добавлять возможность подключения через любой порт и т.д.
3) Добавлял правила для authservera и worldservera
4) Указывал другие порты
5) Узнавал у хостинг-провайдера - порты с их стороны не блокированы. Ограничений нет.

Цитата Autotunage ()
9) На локалке запускается и коннектится без проблем, следовательно проблема только при удаленном подключении - либо бьются пакеты данных, либо другая неведомая хрень.

Скорее всего так.
Цитата Autotunage ()
12) netstat -a при запущенных authserver и worldserver показывает, что соединение через порт 8085 ESTABLISHED, т.е. все норм. Но 3724 порта не вижу, только разве что 0.0.0.0:3724 LISTENING

Насколько я помню, authserver сохраняет соединение только на время аутентификации клиента, так что отсутствие установленного соединения на момент Вашей проверки вероятнее всего норма.
Цитата Autotunage ()
что соединение через порт 8085 ESTABLISHED

Цитата Autotunage ()
Вот что еще заметил: снова пробил netstat -a и заметил, что порта 8085 нет. Во время подключения клиента и в момент зависания авторизации в netstat по адресу и порту 8085 висит FIN_WAIT_2, что означает "ожидание запроса на закрытие соединения со стороны чужой программы TCP". Установленного соединения нет. В чем все-таки проблема??

TCP является протоколом с контролем доставки пакетов. Это означает, что имплементация проверяет целостность и очередность каждого полученного пакета, прежде чем передать его на обработку приложению. Алгоритм вычисления контрольной суммы там слабый, так что ложноотрицательный результат проверки возможен, но едва ли в 100% случаев, соответственно, соединение скорее всего будет рваться на транспортном уровне в случае большой доли повреждений в трафике. Вам нужно однозначно определить, в какой момент и при каких обстоятельствах оно рвется. Рекомендую журналировать весь трафик, проходящий через 3724 и 8085 порты на серверной машине, Wireshark'ом или каким-нибудь другим пакетным сниффером. Вероятнее всего проблема в сети/ее имплементации на серверной системе.
Сообщение # 7 отредактировано p620 - Суббота, 29.12.2018, 16:50
Autotunage
Скаут
p620, Wireshark'ом журналировал трафик через 3724 и 8085, ничего явного не заметил. Возможно, у меня проблема с интерпретации данных smile надо углубиться в эту тему...
Психанув и решив, что проблема может исходить из операционной системы, я установил на VDS другую ОС Debian 9 и сделал все по новой, согласно стандартному гайду trinity. Ничего ЛИШНЕГО я не делал. И все равно та же самая проблема. Как такое возможно? Разные ОС, разные VDS, разные действия и... одно и то же. Написал напрямую на гитхабе у трини, меня заверили, что проблема в конфигурации, а не в самой тринити и закрыли тему, даже не спросив что и как. Но что может быть не так? Куда смотреть? Я в тупике! Я уже не впервые ставлю сервер на VDS, но с такой проблемой сталкиваюсь впервые.
Сообщение # 8 написано 30.12.2018 в 11:00
p620
Маршал
Цитата Autotunage ()
Wireshark'ом журналировал трафик через 3724 и 8085, ничего явного не заметил.

Цитата Autotunage ()
Возможно, у меня проблема с интерпретации данных

Определенно. Если Вы захватывали и входящий, и исходящий трафик - загрузите журнал куда-нибудь на Pastebin, например, и опубликуйте ссылку здесь.
Сообщение # 9 отредактировано p620 - Воскресенье, 30.12.2018, 14:16
Autotunage
Скаут
Вопрос решен, тему можно закрывать. Проблема была на стороне хостинга - то ли что-то с их стороны получало доступ по порту 8085, то ли они частично "валили" пакеты каким-то образом. С их стороны ответ был весьма расплывчатый. Но после очередного моего запроса проблему решили. Спасибо всем, кто откликнулся.
Сообщение # 10 написано 01.01.2019 в 12:59
  • Страница 1 из 1
  • 1
Поиск: