Ник | Пост | Дата |
---|---|---|
Angry_Agent(Angry Agent) | Предыстория С сентября 2023 года, игроки массово (не по всей стране сразу) с разных регионов и с разных провайдеров стали жаловаться на невозможность зайти на любой игровой сервер в игре SCP Secret Laboratory, это происходило практически в одно и тоже время, но точно в один день, это различные волны блокировок, которые касаются не всех и не сразу, у некоторых блокировка пропадает спустя несколько дней, а у кого-то она и вовсе не пропадает: Видео: Владельцам серверов буквально пришлось рекомендовать использовать VPN игрокам, которые не могли зайти на сервера, и это помогало, сами же разработчики игры стали советовать тоже самое. Техническая часть Игра сделана на Unity, используется сетевой движок Mirror, транспорт LiteNetLib. В игре есть список серверов, он работает по HTTPS, с этим никаких проблем нет, проблемы начинаются только непосредственно при попытке подключится на сервер по UDP, сервер успевает отправить клиенту команду на загрузку сцены Дампы с блокировкой соединения: Дамп, где соединение проходит нормально используя VPN: Сетевой движок игры может переотправлять UDP пакеты, если они не дошли до сервера, в дампах же видно большое количество переотправленных пакетов: Диагностика Некоторые владельцы серверов стали почему-то считать, что это баг игры или какая-нибудь ddos атака на сервер, но это не так. Мне удалось договорится с одним игроком(у которого соответственно имеется эта проблема в виде блокировки), чтобы он у себя развернул виртуальную машину на базе VirtualBox, где уже был заготовлен OpenVPN сервер, потому что этой блокировки не было на ТСПУ в моём регионе. Далее я подключился к этому OpenVPN серверу и сделал трассировки для выявления хопа с ТСПУ: (Трассировка по ICMP до заблокированного IP-адреса на ТСПУ) (Трассировка по UDP до любого не заблокированного IP-адреса на ТСПУ) ТСПУ идёт после хопа 10.210.116.18, виден как при трассировке по ICMP, так виден и при трассировке по UDP, какой-либо балансировки с IP-адресами по трассировке в сети провайдера я не увидел. Я решил с помощью iptables модифицировать TTL прямо в моменте соединения к серверу, и в дампах видно отсутствие ICMP TTL Exceeded пакетов от IP-адресов, которые находятся за пределами ТСПУ, пакеты не выходили за пределы сети провайдера: Воспроизведение блокировки искусственным путём В поисках паттерна, обнаружил, что самым главным условием является то, чтобы ответ от сервера был именно путь до загружаемой сцены
Со стороны клиента отправляем 5 пакетов с определённым содержимым с помощью nping:
Содержимое в Решение проблемы Владельцы серверов могут легко решить проблему, установив nfqws от zapret на сервер:
Со стороны клиента так же помогает:
Серверу уже всё равно на стандартный payload в виде нулей, он от этого не крашается. | 2024-04-11T14:27:33.857Z |
wigeance(Wigeance) | Исследование интересное, но: Не замечал ни в одной игре никаких проблем при отправке стандартных фейков (нулей) запретом со стороны клиента (именно SCP не проверял, но в других сетевых играх такой проблемы нет). 20 фейковых пакетов это по-моему перебор, для обхода любых блокировок udp на данный момент хватает 6 фейков. Хотя конечно все зависит от провадера, но чтобы больше 6 фейков надо было пока не встречал. | 2024-04-11T14:46:44.504Z |
Angry_Agent(Angry Agent) |
Нули нельзя отправлять лишь только со стороны сервера клиенту, иначе на клиенте сетевой движок выпадет в exception и все игроки зависнут на месте лишь только визуально на клиенте, сетевой обмен перестанет работать. От клиента к серверу отправлять нули можно. Да, согласен, но я перестраховался на всякий случай. | 2024-04-11T14:49:35.276Z |
haste | Чтобы такого не происходило впредь - посоветуйте разработчикам игры шифровать трафик | 2024-04-11T16:50:30.184Z |
Angry_Agent(Angry Agent) | Не думаю, что в этом есть какой-то смысл, к тому же ничего не исключает вероятность случайной блокировки и зашифрованного трафика. Шифрование трафика может сломать готовые правила для защиты от DDoS-атак на эту игру, особенно у Stormwall. Когда-то обсуждал с разработчиком про шифрование голосового чата в игре, он написал что смысла от этого нет. | 2024-04-11T17:12:44.612Z |
Angry_Agent(Angry Agent) |
Заметил новое: если сервер будет возвращать просто набор букв Сервер:
Клиент:
А если сервер например будет возвращать | 2024-04-11T17:15:36.579Z |
Angry_Agent(Angry Agent) |
Соединение на ТСПУ может заблокироваться даже вот с таким отправленным пакетом со стороны клиента лол:
Главное чтобы при этом ответ от сервера был схожим на | 2024-04-11T17:40:12.072Z |
Angry_Agent(Angry Agent) |
Ещё схожее обнаружил, точно так же блокируется на ТСПУ:
| 2024-04-11T17:45:48.636Z |
haste | Имелось в виду - если не будет сигнатур - по сигнатурам, случайно, уже не заблокируют. | 2024-04-11T18:22:46.064Z |
Angry_Agent(Angry Agent) | Ну судя по тому, что я обнаружил выше, как-то сложно соотнести блокировку к какой-то сигнатуре в виде кучи нулей и рандомных английских букв. | 2024-04-11T18:25:05.693Z |
haste | Посмотрите последние сообщения в теме Блокировка шифра в сторону Cloudflare на ТСПУ - #32 by 0ka | 2024-04-12T11:30:13.337Z |
Angry_Agent(Angry Agent) | В той теме блокировка происходила хотя бы на основе каких-то полезных данных в пакете, а тут соединение блокируется даже без какой либо смысловой и полезной нагрузки.
На клиенте:
2-3 пакета и ТСПУ блокирует соединение. | 2024-04-16T08:13:37.596Z |
haste | Я не настоящий сварщик, но уверен, что ТСПУ “все равно”, есть в пакете полезная нагрузка или нет. Оно срабатыает либо по спискам адресов, либо по сигнатурам. В вашем случае, видимо, срабатывает сигнатура. Делать сложный анализ пакетов в массовом пордке - дорого, в терминах нагрузки на процессор, поэтому делают анализ максимально простым. В вашем слуае - сделали правило типа “если в запросе первые байты 0x0a0d, а в ответе 7 и 17 байты - буквы ‘а’ - заблокировать”. И в 99.9% случаев это срабатывает - блокируется только вредный, преступый, террористический трафик. Выходов два - писать в Спортлото, чтобы поправили сигнатуру, или поправить протокол. (Пишу это в основном для того, чтобы, если неправ, меня поправили настоящие сварщики.) | 2024-04-16T12:42:02.895Z |
Angry_Agent(Angry Agent) |
Там срабатывает на любые буквы вообще, возможно используется регулярка, не дорого ли для процессора делать регулярку в этом случае? Ну зная, как “работают” разработчики этой игры, не думаю что они возьмут и на “ура” сделают это самое шифрование. | 2024-04-16T12:52:15.886Z |
anonymous136(anonymous136) | Возможно, содержимое не учитывают совсем или всё чуть сложнее. Блокировка воспроизводится для небольших датаграмм с рандомной нагрузкой. Исходящие размером 55-74 байт, входящие 20-100 байт. Схема: запрос-ответ. После 2-3 ответов следует блокировка. | 2024-04-17T11:59:41.343Z |
Angry_Agent(Angry Agent) | Если отправлять только нули с размерами 55-74 байт со стороны клиента, 20-100 байт со стороны сервера, то блокировка не происходит. Тут скорее всего всё в разы сложнее. | 2024-04-17T12:32:03.357Z |
Angry_Agent(Angry Agent) |
Блокировка воспроизводится даже вот так, без рандомных данных:
Клиент:
| 2024-04-17T12:36:07.105Z |
anonymous136(anonymous136) | Наблюдение: Множество ТСПУ где сейчас блокируют (блокировали) XMPP пересекается с множеством ТСПУ блокирующих UDP пакеты из этой темы. Притом обе блокировки встречаются достаточно редко, примерно как ТСПУ в байпасе. | 2024-04-17T17:23:11.865Z |
Angry_Agent(Angry Agent) |
Из этого сообщения у меня команда | 2024-04-18T09:36:02.842Z |
Anyuta1166 | EDIT: Прошу прощения, допустила ошибку при тестировании. Подтверждаю - у меня наблюдается и блокировка VPN, и блокировка XMPP, и блокировка по примерам из данной темы. Еще, мне кажется что дело не в каком-то “множество ТСПУ”. У меня есть наблюдения, позволяющие полагать, что дело не в конкретных ТСПУ, а в неких черных списках. Предполагаю, что есть некие черные списки, в которые заносятся IP-адреса как источника (пользователей интернета), так и назначения (серверов в интернете). Заносятся они туда видимо по выявлении некой запрещенной активности, и по факту занесения туда коннекты от/к ним подвергаются более глубокому анализу. Например, у меня сейчас наблюдается блокировка XMPP в сторону вышеупомянутого quicksy.im. Но в сторону моего личного сервера, коннекты к которому я некоторое время назад завернула в VPN и ТСПУ их не видит, блокировки сейчас нет, даже если выключить VPN. При этом quicksy.im блочится с моего проводного провайдера, но работает через мобильную связь. Тут важно, что у меня статический IP у провайдера уже несколько лет. Еще пример, я несколько лет активно пользуюсь OpenVPN, и с прошлой осени постоянно попадаю на блокировки. Сейчас наблюдаю блокировку перманентно уже на протяжении месяца. В то время как условно мои соседи с тем же провайдером - у них все работает, и они удивляются и утверждают, что никаких блокировок нет. Тут тоже важно, что у меня статический IP у провайдера уже несколько лет. Мой коллега по работе попал под блокировку корпоративного (!) OpenVPN внутри (!) РФ , долго мучался, но стоило ему сменить IP у провайдера - все стало ок. | 2024-04-18T12:02:27.525Z |
Angry_Agent(Angry Agent) |
У меня не блокируется OpenVPN и WireGuard. Я взял абсолютно случайную VDS в аренду из рандомной локации, на ней так же воспроизводятся блокировки по UDP из данной темы. | 2024-04-18T12:29:17.357Z |
anon57137390 | Смена BRAS или адреса может изменить маршрут и как следствие ТСПУ, зависит от топологии сети оператора. Обойти черные списки сменой адреса, не меняя сетевого поведения, можно было бы лишь кратковременно. В противном случае это лишает их смысла, там же не ручная работа. Существование кратковременных списков адресов-источников для отдельных правил задокументировано. | 2024-04-18T12:43:00.859Z |
Anyuta1166 | Ну я просто не знаю, как еще объяснить то, что у меня наблюдаются ВСЕ возможные блокировки, кроме того, что мой IP “взяли на карандаш”. Причем, у меня два разных проводных провайдера в Dual WAN конфигурации, на обоих статический IP, и на обоих идентичное поведение в плане блокировок | 2024-04-18T12:56:23.255Z |
Anyuta1166 | Да, еще хочу отметить, про тестирование блокировки игры. Есть некий временной лаг до начала блокировки. Сначала я сделала 2 теста отправкой по 25 пакетов - и все успешно прошло, никаких блокировок (из чего я первоначально сделала неверный вывод что у меня этой блокировки нет). Через некоторое время я повторила тесты, и тут уже все последующие соединения начали блокироваться после 2-3 пакета. | 2024-04-18T13:41:01.837Z |
Angry_Agent(Angry Agent) | Такого не замечал, я замечал лишь только другой лаг, что соединение может заблокироваться после 3-4 пакетов на первый раз, а последующие разы будут 2-3 пакета. | 2024-04-18T13:50:37.091Z |
CIA_agent | По описанию прям похоже на “липкие блокировки” из Китая начиная с 2018 эдак года. Там на примере SS и мимикрии под HTTPS решили, что блекхолить трафик глупо и опасно(сервер меняется за пару минут при готовых скриптах автоматизации, а сетевая связанность остаётся поломанной) начав привязывать блок к источнику трафика и экспоненциально увеличивать время блока. Тот же SS при обнаружении для юзера блокировался сначала на пару минут, потом десятков, потом часов и тд. При этом другой юзер того же провайдера с тем же маршрутом трафика мог спокойно подключаться(первое время конечно, потом та же схема с детектом и баном на время) | 2024-04-18T14:56:15.553Z |
Angry_Agent(Angry Agent) | Если кому-то будет интересно проверить работу блокировки непосредственно прямо в игре:
Остальные сервера Runic Library идут с применением nfqws, для Enigm’ы я сделал исключение. P.S. Некоторые крупные проекты уже применили nfqws. | 2024-04-18T15:45:30.852Z |
ValdikSS | Чуть поисследовал фильтр. Он, прежде всего, заточен на обнаружение пакетов определённых размеров. От клиента ожидается от 51 до 90 байт (цифры не точные), а от сервера — от 20 до 30 (тоже не точные). Также во внимание принимается pacing пакетов. Первые два байта, судя по всему, должны быть без первого бита у двух первых байт, чтобы блокировка срабатывала. | 2024-04-26T22:53:31.447Z |
Angry_Agent(Angry Agent) | У себя в регионе заметил, что фильтр будто бы смягчили, перестало блокироваться бессмысленное содержимое, теперь блокировка воспроизводится только вот этим: На сервера в игре теперь нормально впускает. | 2024-04-28T11:57:21.464Z |