По результатам дымового теста (faketcp handshake прошёл, server_ready/client_ready):
- server udp2raw: -l 0.0.0.0 -> 192.168.31.163 (на 0.0.0.0 bind fail из-за docker-бриджей)
- README: iptables добавлен в предусловия и шаг установки клиента
(на чистой nft-системе udp2raw не может добавить правило -a)
- README: примечание про установку бинарника файлом и выбор ARM-архитектуры,
таблица предусловий дополнена (строки iptables и bind-IP)
Транспорт udp2raw: 443 -> 25565/tcp
- 443 на сервере занят nginx (reverse-proxy Gitea totmaxim.ru); udp2raw в
faketcp через правило -a перехватил бы весь TCP на своём порту и поломал nginx
- server/client .service: -l/-r переведены на 25565
Клиент (Raspberry Pi):
- wg0.conf: PreUp-маршрут 95.174.102.77/32 via 192.168.200.1 dev usbnet
— устраняет петлю транспорта udp2raw при AllowedIPs=0.0.0.0/0
- nftables.conf: MSS-clamp для wlan0->wg0 (клиенты MTU 1500 vs туннель 1200)
Сервер (Ubuntu за NAT 192.168.31.163):
- wg0.conf: masquerade сужен до 10.66.66.0/24 в изолированной таблице wgfwd
(не конфликтует с Docker), MSS-clamp на входе в туннель, MTU=1200
README:
- фактическая топология (сервер за NAT, 95.174.102.77 = WAN роутера, проброс
25565 обязателен), таблица предусловий окружения и проверок
- шаг закрепления net.ipv4.ip_forward, диагностика петли и выхода в интернет
- Конфиги сервера (Ubuntu) и клиента (Raspberry Pi 4): wg0.conf, systemd-сервисы udp2raw, nftables
- README с инструкцией по развёртыванию и генерации ключей
- .gitignore: исключены бинарный архив udp2raw и генерируемые *.key
- .gitattributes: LF для всех Linux-конфигов (.conf/.service/.sh)