Всем доброго времени суток! Собственно несколько слов лично от меня (сама статья написана не мной). Прежде всего данную статью читать на завтрак, обед и ужин всей бор тим, ребят вы сами этого хотели и просили
http://forum.x-mu.net/style_emoticons/default/smile.gif . Так же я не беру на себя никаких копирайтов а законный автор текста - DoS.Ninja за что ему отдельный и очень низкий поклон.
Поехали!
http://forum.x-mu.net/style_emoticons/default/smile.gif
Практический каждый администратор МуОнлайн сервера который живет не в тундре знает о такой программе как MCS (Mu Connect Server) от также не мало известной команды BoR. Данная программа являлась "очень хорошим" релизом от команды(Санька в частности) и достаточно быстро распространилась по интернету включая иностранные сервера. Про старый тормазнутый вебзеновский CS можно сказать уже забыли, ведь он действительно был более требовательным к ресурсам и менее быстрый чем аналог MCS. За все время работы с MCS я часто менял версии и бывали случаи сбоя программы, на которые я не обращал особого внимания, но недавно я натолкнулся на явную уязвимость программы, дело в том что разработчик S@NeK не достаточно хорошо продумал поведение программы при высоких нагрузках. Даже складывается такое впечатление что она просто напросто не тестировалась в таких условиях, что очень даже плохо. Ну что же я решил взять инициативу в свои руки и провел тестирование разных версий программы и сравнил их с аналогами от других производителей:
Тестируемые объекты:
- Mu Connect Server 1.0.4.360
- Mu Connect Server 1.0.7.300
- Mu Connect Server 1.0.8.950
- Mu Connect Server 1.0.9.200
- Mu Connect Server 1.0.9.530
- Mu Connect Server 1.0.9.750
- Mu Connect Server 1.0.9.1000
- Connect Server 1.0.6 External Client
- SCF Connect Server 1.0
- [P4F] Connect Server 0.2 (dev)
- Webzen Mu Connect Server 20050502
Инструменты:
- Написан тестовый эмулятор большого числа подключений и DOS атаки
- 2 компьютера, сервер-клиент и клиент
Mu Connect Server 1.0.4.360 - версия не устойчивая к высоким нагрузкам
Результат тестирования:
Выдержала 1954 подкл. после чего самоблокировалась
Mu Connect Server 1.0.7.300 - версия не устойчивая к высоким нагрузкам
Результат тестирования:
Выдержала 1940 подкл. после чего самоблокировалась
Mu Connect Server 1.0.8.950 - эта версия неустойчива даже к низким нагрузкам
Результат тестирования:
30 подкл. - программа сбрасывает подключения после чего можно переподключится
700 подкл. - привели к выводу ошибки в окне логирования, после чего коннект сервер закрыл порт 44405 и не принимал больше подключений до его перезапуска
При небольшой одновременной нагрузке программа самоблокируется до перезапуска, что позволяет с легкостью выводить её из рабочего состояния
Mu Connect Server 1.0.9.200 - такая же неустойчивость как и в 1.0.8.950
Результат тестирования:
20 подкл. - программа сбрасывает подключения после чего можно переподключится
700 подкл. - вызвали самоблокирование программы и закрытием порта 44405
Отличие от предыдущей версии в уменьшении лимита подключений с 30 на 20. То есть MCS самоблокируется еще раньше...
Mu Connect Server 1.0.9.530 - неустойчивая версия, та же проблема с самоблокировкой
Результат тестирования:
50 подкл. - программа сбрасывает подключения после чего можно переподключится
700 подкл. - самоблокирование программы и закрытие порта 44405
Всё тоже лимит повышен уже до 50 подключений
Mu Connect Server 1.0.9.750 - поведение полностью такое же как и в 1.0.9.530
Mu Connect Server 1.0.9.1000 - абсолютно не устойчивая версия
Результат тестирования:
50 подкл. - падение программы через секунду, логи указывают на ошибку:
[TTCPContext->LoadExtensionFunction] ErrorCode: 10038
Connect Server 1.0.6 External Client - абсолютно не устойчивая версия
Результат тестирования:
50 подкл. - программа самоблокировалась на момент создания подключений и вызвала дикую нагрузку на систему. после отключения работоспособность программы сохранилось. (
данная программа является неким продолжением серии MCS, её можно было скачать с репозитория BoR Team. Над её разработкой участвовала вся команда BoR + другие люди - прим. Killbrum)
SCF Connect Server 1.0 - стабильная версия
Результат тестирования:
1000 подкл. - не вызвали никаких сбоев в программе и нагрузки на систему, программа самоблокировалась после 1000 подключений и разблокировалась после окончания теста, причем сохранив возможность подключения к ней
[P4F] Connect Server 0.2 - стабильная версия
Результат тестирования:
1000 подкл. - не вызвали никаких сбоев в программе и нагрузка на систему была минимальная, программа с лёгкостью самоблокировалась и разблокировалась по достижению пика подключений.
Webzen Mu Connect Server 20050502 - стабильная версия
Результат тестирования:
10000 подкл. - мне подручными средствами всё таки удалось эмулировать 10 тысяч подключений, причём как раз таки судя по индикатору допустимо до 10 000 подключений. Несмотря на нагрузку поведении программы было вполне нормальным, в момент достижения 10000 подключений, программа само блокировалась сохранив текущие подключения, замечена небольшая нагрузка на систему во время отключения от коннект сервера, в любом случае после отключения работоспособность CS сохранилась.
Ну что, проведя достаточно тестов, я подведу итоги:
Mu Connect Server [BoR] - нету стабильной версии программы MCS от команды BoR! Данная программа может хороша в быстродействии и по функциональности лучше оригинальной версии от Webzen, но они не устойчивы к большим нагрузкам и DOS атакам. Версии с поддержкой IOCP (1.0.9+) вообще лучше не ставить на свой сервер, так как судя по тестам эти версии абсолютно нестабильные и выводятся из строя небольшими нагрузками, что кстати и не отрицалось разработчиком, так же к явно нестабильным версиям отнесу и продукт Connect Server 1.0.6 External Client который вызывает сильную нагрузку на систему.
SCF Connect Server - данный продукт прошел тест идеально, без влияния на систему программа смогла достойно противостоять во время нагрузки. Но как данный КС будет вести себя на не SCF сервере я затрудняюсь ответить, поскольку таких тестов я еще не делал)
[P4F] Connect Server - учитывая что данная программа находится пока еще на стадии разработки, ей показаны замечательные результаты. Показатели быстродействия и нагрузки на систему даже немного меньше чем у SCF.
Webzen Mu Connect Server - старый добрый оригинальный CS является стабильной версией и несмотря на свою громоздкость справился с тестом.
Нестабильность [BoR] MCS
Но все же почему так происходит? Я начал просматривать логи разработки программы и сразу стало ясно в чем подвох, оказывается S@NeK постоянно мудрил с системой защиты забивания портов, которую он часто дорабатывал в новых версиях, но так и не сумел её нормально реализовать. Как я понимаю данная система не подвергалась нормальной отладке, либо об этом просто напросто умалчивали.
Что теперь делать?
Если вы использовали MCS от BoR и хотите устранить эту уязвимость, то лучше всего заменить ваш Connect Server, либо распределяйте файрволом макс. кол-во подключений и мультиподключений на порт 44405, чтобы не было возможным нагрузить ваш CS.
Благодарю за внимание ...
Автор и тестер: DoS.Ninja