Проверено на живом стенде: 0% потерь на 10.66.66.1 и 8.8.8.8, выход через сервер (curl -> 95.174.102.77). Транспорт (устранение разрывов faketcp): - anti-RST вписан в конфиги вместо хрупкого -a+flush: клиент — первой строкой chain input (ip saddr 95.174.102.77 tcp sport 25565 drop), сервер — в таблице wgfwd (ip daddr 192.168.31.163 tcp dport 25565 drop, переживает ufw reload). Причина: RST от ядра убивал CGNAT-маппинг оператора -> direction timeout и смена порта. - --fix-gro на обоих концах: чинит дроп GRO «супер-пакетов» (huge packet > max_data_len). Клиент: - nftables.conf: flush ruleset (убирает дубли), reject QUIC/UDP 443 (откат браузера на TCP). - udp2raw-client.service: After=nftables.service (anti-RST применяется до старта udp2raw). Автозагрузка/порядок (обе службы udp2raw): - After=network-online.target, Before=wg-quick@wg0.service. README: раздел 5 «Известные нюансы» (anti-RST vs flush, CGNAT/RST, GRO), сниппеты и таблицы приведены в соответствие.
26 lines
1.7 KiB
Desktop File
26 lines
1.7 KiB
Desktop File
[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 |