Гайд: Настройка UDP-прокси для Серверов Source (Зеркала-Прокси) [ИИ]

Mr_panica

XenForo one 💖
Сообщения
942
Реакции
453

Если вам нужно чтобы игроки заходили не под их IP адресами, а под каким-то одним (например если у них блокаются ваши сервера или ваш провайдер блокает их IP), то этот мини гайд для вас.​

Идеально если у вас уже есть свой VPN сервер, просто используйте туже машину.​

Цель: Создать зеркала серверов для обхода блокировок. Трафик 1:1 перенаправляется через socat (UDP4 для совместимости). Работает для ~11 портов, latency +10–30ms.
Важно: IP машины должно быть доступно из вашей страны и страны ваших игроков, восточная или центральная Европа идеальна для запада России/Украины.
Требования: Ubuntu 24.04+ VPS (1 CPU/1GB RAM), root-доступ, открытый трафик. (делал на Ubuntu)

Важно: Все команды вставляются напрямую в SSH-консоль (без nano/vi или редакторов). Копируйте и вставляйте по одной.

Настройка производится на VPS которая была поднята для обхода блокировок, а не на вашей VPS с игровыми серверами!

1. Установка и обновление​


Bash:
sudo apt update && sudo apt install socat -y
socat -V  # Проверьте версию (1.8.0.0+)

2. Firewall (UFW)​

*Поменяйте порты если необходимо (по дефолту проксируются с 27015 по 27025 порты)

Bash:
sudo ufw allow 27015:27025/udp
sudo ufw enable  # Если не включён (подтвердите y)
sudo ufw status  # Проверьте правила

3. Скрипт запуска (/root/tf2_multi_proxy.sh)​

*Поменяйте порты если необходимо (по дефолту проксируются с 27015 по 27025 порты)
*Поменяйте REAL_IP на ваш IP сервера с игровыми серверами.

C-подобный:
cat > /root/tf2_multi_proxy.sh << 'EOF'
#!/bin/bash
REAL_IP="ВАШ IP"
killall socat 2>/dev/null
sleep 2
for LOCAL_PORT in {27015..27025}; do
    echo "Запуск прокси: VPS:$LOCAL_PORT -> $REAL_IP:$LOCAL_PORT"
    nohup socat UDP4-LISTEN:$LOCAL_PORT,reuseaddr,fork,bind=0.0.0.0 UDP4:$REAL_IP:$LOCAL_PORT > /var/log/tf2_proxy_${LOCAL_PORT}.log 2>&1 &
done
echo "Все прокси запущены! ps aux | grep socat"
EOF
chmod +x /root/tf2_multi_proxy.sh

4. Systemd-сервис (/etc/systemd/system/tf2-multi-proxy.service)​


C-подобный:
cat > /etc/systemd/system/tf2-multi-proxy.service << 'EOF'
[Unit]
Description=TF2 Multi UDP Proxy (27015-27025)
After=network.target

[Service]
Type=oneshot
ExecStartPre=/root/tf2_multi_proxy.sh
ExecStart=/bin/true
RemainAfterExit=yes
ExecReload=/root/tf2_multi_proxy.sh

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now tf2-multi-proxy

5. Запуск и проверка​


Bash:
sudo systemctl restart tf2-multi-proxy
sudo systemctl status tf2-multi-proxy
ps aux | grep socat  # ~11 процессов
tail -f /var/log/tf2_proxy_27015.log  # Без ошибок (Ctrl+C)

6. Тестирование​

В игре зайдите и в консоле введите connect IP вашей машины и PORT сервера, то есть, если IP где вы делали настройку 83.142.30.205, а IP где ваши игровые сервера 213.59.253.7, то вы должны указать именно 83.142.30.205 + Порт сервера (connect 83.142.30.205:27015)
Затем через консоль сервера можно посмотреть IP с которого подключается игрок.

Плюсы:
Обход блокировок провайдеров.

Минусы:
Выше задержка.
У всех один IP, если забанить по IP - всем капут кто подключается через это.
Игроки, которые были забанены по их IP смогут обходить блокировку через подключение по IP прокси.

Проблемы: Если socat падает — обновите до 1.8.0.3:
Bash:
sudo apt install build-essential libssl-dev -y
wget http://www.dest-unreach.org/socat/download/socat-1.8.0.3.tar.gz
tar xzf socat-1.8.0.3.tar.gz && cd socat-1.8.0.3
./configure && make && sudo make install
Затем в скрипте замените socat на /usr/local/bin/socat и перезапустите. Мониторинг: watch "ps aux | grep socat".


Готово! Разошлите ссылки игрокам.
Например steam://connect/183.195.69.249:27015

Гайд написан ИИ, но рабочий, те кто шарят могут накидать правки.

Статья не несёт в себе цели популяризации VPN сервисов или их рекламы или распространения способов обхода блокировок заблокированных Роскомнадзором 💩 ресурсов, а создана для того что бы помочь игрокам из других стран без проблем играть на российских серверах или российским игрокам играть на зарубежных!
 
Последнее редактирование:

InFro

Участник
Сообщения
20
Реакции
43
А если игрок получит бан по айпи с этого прокси?
 

InFro

Участник
Сообщения
20
Реакции
43
вот-вот, я про то же.
это огромный минус таких банальных прокси
 

Mr_panica

XenForo one 💖
Сообщения
942
Реакции
453
Да.
Но с другой стороны часто ли по IP банят? Лично я очень редко таким занимался.

А про проблему, можно как костыль сделать чтобы нельзя было банить по именно этому IP)
 

InFro

Участник
Сообщения
20
Реакции
43
Но с другой стороны часто ли по IP банят
sourcebans по умолчанию банит по айпи
либо читеры могут намеренно получать бан по айпи разными способами от всяких игровых защит/античитов
Сообщения автоматически склеены:

можно как костыль сделать чтобы нельзя было банить по именно этому IP
решить можно, но пока никто не атакует - пофиг
 
Последнее редактирование:

Lappland_Saluzzo

Владелец Sibnet Software
Сообщения
145
Реакции
79
Да.
Но с другой стороны часто ли по IP банят? Лично я очень редко таким занимался.

А про проблему, можно как костыль сделать чтобы нельзя было банить по именно этому IP)
А я бы рекомендовал таких игроков помечать для админки, или в чате как минимум, поскольку администраторы могут случайно, по незнанию или etc. причинам заблокировать такого игрока. Понятное дело что по IP мало где банят, хотя Sourcebans++ например имеет встроенный... "чекер" (Source Sleugh) - IP адреса. Если ты сменил аккаунт и зашел например с того-же IP - тебя перебанит повторно. С прокси - проблема усугубляется значительно.
Это либо надо связывать сервер VPN/Game сервер как-либо через brain.sys, либо использовать IP/IP капсуляцию (что кстати куда эффективнее) и пробрасывать с порта на порт (интерфейсы серверов). Всё. Финита ля комедия - недостатка нет, потому что игровой сервер де-факто видит нормальный коннект, и реальный IP. А VPN-сервер становится банальным маршрутизатором. Создаешь пару виртуальных устройств и настраиваешь Firewall и всё.

Схема такая:
- Игрок => VPN-сервер => IP/IP Туннель => Game Сервер.
- Game Сервер => IP/IP Туннель => VPN-сервер (Masquerade) => Игрок

Подключение как бы идёт с IP адреса VPN, но внутри него - настоящий IP адрес. Всё.
По сути изобрели велосипед, который давно используется при зеркалировании SRCDS. У UGC - Там нечто подобное реализовано, просто сервер слушает все интерфейсы - -ip 0.0.0.0, и светится на разных интерфейсах куда проброшен туннель с кэш-софтом, и тот в свою очередь просто тупо NAT-ит трафик на основной сервер через IP-IP. Усё.
А тут - ну не будешь ты блокировать IP своего VPN сервера, окей - а фильтровать то как будешь негативных игроков? SteamID? Да поменять можно. Твинки - уязвимость + сложность фильтрации. Если как выше написал - стоит чекер IP - пул игроков сходит покурить до разбана IP. Ещё и баны с БД чистить придется - работа ради работы. Ибо почему-то никто не учитывает человеческий фактор...
Если локальный прикол с прокси - как ты будешь не допускать утечку команды?

Много вопросов короч.
Сообщения автоматически склеены:

С другой стороны, если VPN-сервер по IP-IP туннелю с провайдерским Native Anti-DDoS, то можно уже сделать чуть более красивее - если атакуют реальный сервер - все соединения пустить в обход на защищенный VPN-сервер, часть игроков пропускать через разрешающее правило SRC-порта игры 27005 (пример TF2/не будут разрываться соединения около 30-60% игроков), а игровой сервер пихнуть для всех остальных в Blackhole, VPN будет выступать в качестве защищенного маршрутизатора и пинговаться через него с задержкой, но это уже совсем другая история...
Там можно если покурить матчасть - и продолжить тему прокси - сделать так красиво и просто одновременно, написав через нейронку несколько скриптов-триггеров событий на переключение режимов работы - что можно спокойно забить болт на все атаки, защиты, дудосы, и прочее. Просто мне кажется - что всем лень копать туда.
 
Последнее редактирование:

StormX

Участник
Сообщения
900
Реакции
309
Идея интересная, но "на популярном сервере" проработает максимум сутки до первого бана 😁, да банально от античита который занесет бан в sourcebans с параметром "-1 steamid+ip" и все 😄
 

Lappland_Saluzzo

Владелец Sibnet Software
Сообщения
145
Реакции
79
Думаю, нужно использовать другой подход с таким костылем из шапки топика, если IP недоступен и ненадежен - ребята с оленей изобрели вот такую штуку: https://forums.alliedmods.net/showthread.php?t=342465
Она по сути отправляет клиенту специальный отпечаток, заносит в мускуль, и потом плагин его же и сканирует и сверяет с базой.
Но работает тот плагин примерно никак - у них DMCA на Filenetwork модуль, только с доработкой, плюс есть серьезные баги с FastDL методом и SendFile/ReceiveFile и т.п. Сам пока дорабатываю оный плагин с полной переделкой кода. Пока всерьез за него не брался - но как факт - у меня в БД около 2700 отпечатков после ввода в продакшен. С Filenetwork ситуация иная - там проблематично отлаживать код, учитывая что переменные клиентские иногда бывают на 0.

Штука крайне эффективная для такого случая. Но баны по IP действительно надо будет во всех плагинах убирать.
 
Сверху Снизу