Ошибка

Сетевая ошибка 10054: "Connection reset by peer"

 

Описание ошибки

Ошибка возникает, когда сервер (либо промежуточное звено между клиентом и сервером) принудительно разрывает соединение с клиентом по какой-то причине. Иногда причина разрыва соединения пишется в логе клиента, иногда (по соображениям безопасности) — нет.


Основные причины проблемы:


  • IP адрес, MAC адрес или HardwareID компьютера клиента входит в список заблокированных, MyChat Server будет блокировать любые попытки подключения клиента, без объяснения причин; 
  • если качество соединения между клиентом и сервером очень низкое и сервер длительное время не получает ответов от клиента, после чего принудительно разрывает соединение. Например, канал связи "забит" торрентами на максимальной скорости. Или качество линии связи плохое, соединение часто разрывается. Это характерно для мобильных сетей в условиях плохого интернет-соединения или большой нагрузки на канал, например, в бесплатных Wi-Fi в интернет-кафе;
  • NAT/Firewall посчитал соединение "мертвым" и сбросил его;
  • протокол нарушен, кто-то вмешался в процесс передачи данных и программа отправила неожиданные данные, не соответствующие ожидаемому протоколу;
  • сетевое соединение внезапно оборвалось, например, роутер/свич был перезагружен или ноутбук переключили в режим fly mode;
  • ноутбук автоматически переключился между сетями, например, Wi-Fi и мобильной точкой доступа, когда пропало соединение;
  • на сервере включена защита от слишком частых подключений клиентов (anti-ddos) и клиентское приложение временно отключается из-за большой нагрузки;
  • на сервере запрещены мультилогины (когда можно подключаться несколькими устройствами под одной и той же учётной записью одновременно);
  • вы используете неправильный пароль безопасности для подключения к серверу (или администратор включил его, пока вы были офлайн).
  • на сервере закончились доступные лицензии.

 

Стоит заметить, что иногда такое сообщение в протоколе — норма, если отключение произошло штатно. Например, сервер был перезагружен, клиентское приложение было отключено администратором в админке либо скриптом. Или сервер принудительно отключил клиента из-за слишком долгого ответа или отсутствия ответов в течение длительного времени (так называемый keep-alive ping). Главное, чтобы это не происходило постоянно.


Решение проблемы

Если причина проблемы — чисто сетевая, сначала стоит диагностировать её с помощью консольной команды Windows ping <server_address> -t -l 1024. Если связь стабильная и потерь пакетов нет, проверьте, не заблокирован ли ваш IP на сервере в фильтрах IP адресов, фильтрах HardwareID и фильтрах MAC-адресов.


Также стоит включить шифрование, чтобы антивирусы и файрволы не могли вмешиваться в процесс передачи данных между клиентом и сервером (MyChat Client, "Настройки чата", "Сеть", "Сетевые настройки", "Использовать шифрование трафика").


Как правило, чтобы выяснить причину, почему сервер разрывает соединение с клиентом, следует зайти в WEB-консоль администрирования сервера MyChat и посмотреть системный лог.

 

Как зайти в WEB-консоль администрирования MyChat?

 

Раздел "Инструменты" — "Просмотр протоколов". Тип протоколов: "Системные протоколы".

 

По системному протоколу можно сделать выводы о причине отключения клиентского приложения (по IP адресу и UIN, если пользователь успел авторизоваться). Используйте поиск по тексту (Ctrl+F).