После последних новостей вокруг RAGE MP многие владельцы проектов столкнулись с вопросом: что делать дальше?
Последние недели мы внимательно следили за ситуацией, изучали существующие решения и общались с представителями других проектов.
Многие команды делились с нами своими наработками, идеями и взглядом на текущую ситуацию. За это мы хотим отдельно поблагодарить коллег по сообществу.
Проанализировав доступные варианты, их преимущества и недостатки, мы решили предложить собственное решение.
Команда InteRPlay разработала систему, позволяющую осуществлять прямое подключение к любому серверу на платформе RAGE MP.
Почему мы решили опубликовать её открыто?
Потому что считаем, что сейчас важно не только думать о собственном проекте, но и помогать всему сообществу пережить этот непростой период. Многие команды вложили годы работы в свои проекты, и мы хотим внести свой вклад в сохранение экосистемы RAGE MP.
Что важно понимать:
• Решение работает в рамках текущих возможностей платформы.
• Пока со стороны RAGE MP сохраняется белый список и возможность подключения, решение будет функционировать.
• Если в будущем доступ будет полностью отключён на уровне самой платформы, это затронет абсолютно все существующие решения и все проекты без исключения.
Надеемся, что наша работа окажется полезной для сообщества и поможет многим проектам продолжить свой путь.
С уважением,
Команда InteRPlay
______________________________________________
Copyright (c) 2026 InteRPlay Team. Author: DoKyanon.
Rage DNS Resolver - это Windows x64 C++ DLL, которая локально подменяет DNS A-record ответы для заданного target_host на заданный IPv4-адрес. Также библиотека патчит исходящие HTTP-заголовки Host: в TCP payload, чтобы запросы уходили с перенаправленным IP-адресом.
target_host должен быть хостом, который разрешен Rage MP для прямых подключений. Информацию о таких хостах можно получить из открытых источников.
Библиотека использует open-source проект WinDivert: https://github.com/basil00/WinDivert. Пакеты перехватываются на уровне Windows Network Layer.
Как Это Работает
Когда Windows отправляет DNS-запрос по заданному target_host, библиотека не пропускает этот запрос наружу и сама формирует локальный DNS-ответ с A-record на redirect_ip.
Пример:
target_host: interplay.example.com
redirect_ip: 127.0.0.1
После запуска Rage MP launcher может продолжать отправлять HTTP-запросы, например по портам 22006 и 80, используя исходный target_host.
Пример HTTP-заголовка:
Host: interplay.example.com
Поэтому библиотека также патчит исходящий TCP payload и заменяет значение заголовка Host: с target_host на redirect_ip. Остальная часть payload не изменяется. Если замена короче оригинального значения, оставшиеся байты заполняются пробелами, чтобы сохранить исходную длину payload.
Важно: redirect_ip необходимо указывать в формате IPv4. Значение target_host должно быть достаточно длинным, чтобы его можно было заменить на redirect_ip без увеличения длины payload.
Test Executable
Проект собирает небольшой test.exe, который является command-line wrapper вокруг DLL API:
build\Release\test.exe <target_host> <redirect_ip> <resource_port>
Аргументы:
- target_host - хост для маскировки/прямого подключения, например interplay.example.com.
- redirect_ip - IPv4-адрес сервера, который будет возвращен как DNS A-record, например 127.0.0.1.
- resource_port - порт для загрузки ресурсов сервера. Обычно это основной порт сервера + 1; например, если порт сервера 22005, нужно указать 22006.
После запуска любым подходящим способом задайте в реестре следующие параметры Rage MP (HKEY_CURRENT_USER\Software\RAGE-MP):
launch2.ip = target_host
launch2.port = server_port
Далее запустите updater.exe или ragemp_v.exe в папке Rage MP. После этого Rage MP должен провалидировать ресурсы и подключиться к серверу.
Требования
- Windows x64.
- CMake 3.20 или новее.
- Visual Studio 2022 C++ toolchain или другой совместимый C++20 компилятор.
- Права администратора при запуске перехватчика пакетов.
- Runtime-файлы WinDivert в third_party/WinDivert/x64:
- WinDivert.dll
- WinDivert64.sys
Сборка
cmake -S . -B build
cmake --build build --config Release
Сборка только x64.
DLL API
Публичные объявления находятся в include/rage_dns_resolver.h.
extern "C" int DnsResolverStart(
const char* target_domain,
const char* redirect_ipv4,
uint16_t resource_port
);
extern "C" void DnsResolverStop(void);
extern "C" int DnsResolverIsRunning(void);
extern "C" const char* DnsResolverGetLastError(void);
DnsResolverStart запускает worker thread в фоне. Перед выгрузкой DLL или завершением приложения нужно вызвать DnsResolverStop.
Использование DLL из C++
#include "rage_dns_resolver.h"
int result = DnsResolverStart("interplay.example.com", "127.0.0.1", 22006);
if (result != DNS_RESOLVER_OK) {
const char* error = DnsResolverGetLastError();
// Обработка ошибки.
}
// Держите приложение запущенным, пока нужен redirect.
DnsResolverStop();
Ссылка на исходники: https://github.com/dokyanon/rage-dns-resolver
Ссылка на бинарные файлы: https://github.com/dokyanon/rage-dns-resolver/releases/tag/0.1.0