Одноцелевой порт для нескольких серверов Minecraft

После некоторого времени заниматься хостинга несколько ванильный и модавый Minecraft серверы для друзей, мне пришлось дать им IP-адрес с номер порта для подключения. Каждый раз, когда я создавал новый сервер, будь то стандартный или модифицированный. Со временем это стало меня раздражать, особенно необходимость указывать на маршрутизаторе разные номера портов для каждого сервера. Я хотел более чистую настройку с более аккуратным адресом, который не требует указания порта, а вместо этого использует доменные имена для указания на конкретные Minecraft серверы.

Установить HaProxy с помощью вашим Linux управления пакетами:

  • Ubuntu и Debian:
    apt install haproxy
  • Arch Linux:
    pacman -S haproxy
  • Fedora Linux:
    dnf install haproxy

После установки HaProxy, перейдите к директория конфигурации HaProxy:

cd /etc/haproxy/

Перед внесением изменений рекомендуется создать резервную копию конфигурации.

mv haproxy.cfg haproxy.cfg.bak

Создайте новой haproxy.cfg файл.

frontend minecraft
    bind *:25565
    mode tcp
    tcp-request inspect-delay 5s
    
    acl is_mc_vanilla payload(4,21) -m sub vanilla.example.home
    acl is_mc_creative payload(4,22) -m sub creative.example.home
    acl is_mc_modded payload(4,20) -m sub modded.example.home
    
    tcp-request content accept if is_mc_vanilla || is_mc_creative || is_mc_modded
    
    use_backend vanilla_backend if is_mc_vanilla
    use_backend creative_backend if is_mc_creative
    use_backend modded_backend if is_mc_modded

backend mc_vanilla_backend
    server mc_vanilla 192.168.1.5:25565

backend mc_creative_backend
    server mc_creative 192.168.1.5:25566

backend mc_modded_backend
    server mc_modded 192.168.1.7:25565

Функция payload(Offset, Length). принимает два параметра:

  • Offset: Начальная позиция сканирования.
  • Length: Определяет, сколько байтов/символы будет сканироваться.

Примечание:
При вычислении Length необходимо добавить 1 байт/символ к длине домена.
Это гарантирует правильное сканирование всего домена.

Теперь, после настройки прокси, если в будущем я добавлю новый сервер, мне не нужно будет помнить, какой порт был назначен на моем маршрутизаторе, мне нужно будет помнить только, какой домен был назначен.

Here some option quick characters counter

Linux и MacOS bash:

echo "example.com" | wc -c

Windows PowerShell:

echo (("example.com".Length + 1))

Python:

print(len("example.com") + 1)

Оставьте комментарий