[Unit] Description=udp2raw Server (FakeTCP) # network-online (а не network.target): нужен реально поднятый enp2s0 с адресом # 192.168.31.163, иначе bind на конкретный IP упадёт при загрузке. Wants=network-online.target After=network-online.target # Порядок автозагрузки: udp2raw поднимается ДО туннеля WireGuard. Before=wg-quick@wg0.service [Service] Type=simple User=root # Слушает внешние TCP подключения на порту 25565 и перенаправляет в локальный WireGuard. # Порт 443 НЕ используем: его держит nginx (reverse-proxy для Gitea totmaxim.ru), # а udp2raw в faketcp через правило -a дропнул бы весь входящий TCP на своём порту. # ВАЖНО #1: слушаем КОНКРЕТНЫЙ IP интерфейса (192.168.31.163), а не 0.0.0.0 — # иначе из-за множества docker-бриджей udp2raw падает с "bind fail". # Если LAN-адрес сервера сменится — поправить здесь И в пробросе на роутере. # ВАЖНО #2: Замените "MY_CONFIDENTIAL_PASS" на ваш секретный пароль для udp2raw # --fix-gro: чинит дроп «супер-пакетов» GRO (huge packet > max_data_len). Ставим на обоих концах. ExecStart=/usr/local/bin/udp2raw -s -l 192.168.31.163:25565 -r 127.0.0.1:51820 -k "MY_CONFIDENTIAL_PASS" --raw-mode faketcp --fix-gro -a Restart=always RestartSec=5 [Install] WantedBy=multi-user.target