Что это
Proxo — утилита для перенаправления сетевого трафика с одной машины на другую. Вы запускаете Proxo на сервере с публичным IP, и весь входящий трафик на указанный порт уходит туда, куда вы скажете — на другой сервер, домашнюю машину, или даже на локальный процесс на той же машине.
Протоколы и порты
Proxo работает с тремя транспортными протоколами:
- TCP — стандартное надёжное соединение, используется большинством серверного ПО
- UDP — без подтверждения доставки, нужен для голосового чата, некоторых модов и специфичных протоколов
- Raw — низкоуровневый режим для нестандартных случаев
Порт назначения — любой. Хотите перенаправлять с 25565 на 19132 — без проблем, если машина это разрешает.
Провайдер minecraft_java_edition
Если указать провайдер minecraft_java_edition, Proxo начинает понимать протокол Minecraft Java Edition на уровне handshake. Это открывает дополнительные возможности:
- MOTD — текст и количество игроков, которые видит клиент при пинге сервера в списке серверов
- Offline MOTD — отдельный MOTD, который показывается когда целевой сервер недоступен, вместо стандартной ошибки подключения
- Иконка — 64×64 PNG, отображается слева от названия сервера в списке
Без провайдера Proxo гонит трафик как есть, не вмешиваясь в содержимое. С провайдером minecraft_java_edition он перехватывает только пакеты статуса — само игровое соединение проксируется без изменений.
Proxy Protocol
Proxo умеет добавлять заголовок Proxy Protocol v1 или v2 к проксируемому соединению. Это нужно для того, чтобы целевой сервер видел реальный IP игрока, а не IP Proxo. Большинство серверного ПО (Velocity, BungeeCord, nginx и другие) этот заголовок поддерживают.
Проксирование в одиночный мир
Proxo не знает, что находится на той стороне. Если вы укажете IP и порт одиночного мира с открытым LAN — Proxo будет проксировать туда. Это удобно, если нужно дать кому-то временный доступ к своей игре без публичного IP.
Работа за NAT — Patron
Если целевая машина находится за NAT (домашний компьютер, VPS в приватной сети, сервер за роутером провайдера) и у неё нет белого IP — используется Patron.
Patron — это отдельный JAVA файл, который устанавливается на машину за NAT. Он сам устанавливает исходящее соединение к Proxo по ключу. После этого Proxo начинает гнать трафик через этот туннель в обратную сторону — к Patron, а от него уже к целевому процессу.
Схема: Игрок → Proxo (публичный IP) → туннель → Patron (за NAT) → локальный сервер
Таким образом машине за NAT не нужен белый IP — она сама инициирует соединение.
Proxo-Keygen
Для туннелирования через Patron нужен ключ — его генерирует proxo-keygen. Это отдельная утилита, которая создаёт пару ключей: один прописывается в конфиг Proxo, второй передаётся Patron. По этому ключу Proxo аутентифицирует входящее соединение от Patron и понимает, какой туннель активировать.
Без ключа прямое проксирование (без NAT) работает и не требует никакой авторизации между узлами.
Установка в хостинг-панель
Proxo запускается как обычный JAVA файл, поэтому его можно поставить прямо в панельный сервер на базе Pterodactyl. Это позволяет использовать его вместо HAProxy в панельных инфраструктурах — без доступа к хосту и без правки конфигов на уровне системы.