Files
vpn-raspberry/server/wg0.conf
Maxim 886ba62ea6 Исправление маршрутизации, порт 25565 и документирование окружения
Транспорт 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, диагностика петли и выхода в интернет
2026-07-07 13:16:50 +03:00

30 lines
1.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# СЕРВЕР (Ubuntu, за NAT: enp2s0 = 192.168.31.163, шлюз 192.168.31.1)
# Публичный вход: 95.174.102.77:25565 (TCP) --проброс на роутере--> 192.168.31.163:25565
# (443 не используем — его держит nginx/Gitea; см. udp2raw-server.service)
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
# Приватный ключ Сервера (из файла server_private.key)
PrivateKey = KMcPBI6LAY/NC1zFNYopsvNXqQ8w8ssluDj4yOh3skk=
# Симметрично клиенту: транспорт идёт внутри faketcp, держим запас на оверхед
MTU = 1200
# Всё хозяйство WG держим в отдельной nft-таблице wgfwd, чтобы:
# - не конфликтовать с правилами Docker/UFW в главных таблицах;
# - на PostDown снести одной командой (идемпотентно).
# NAT: маскарадим ТОЛЬКО подсеть туннеля (не трогаем docker и трафик хоста).
PostUp = nft add table ip wgfwd
PostUp = nft add chain ip wgfwd postrouting { type nat hook postrouting priority 100 \; policy accept \; }
PostUp = nft add rule ip wgfwd postrouting ip saddr 10.66.66.0/24 oifname "enp2s0" masquerade
# MSS-clamp для пакетов, входящих В туннель (SYN-ACK от внешних серверов),
# чтобы large-TCP не «залипал» из-за MTU 1200 и заблокированного PMTUD.
PostUp = nft add chain ip wgfwd mangle { type filter hook forward priority -150 \; policy accept \; }
PostUp = nft add rule ip wgfwd mangle oifname "wg0" tcp flags syn tcp option maxseg size set rt mtu
PostDown = nft delete table ip wgfwd
[Peer]
# Публичный ключ Raspberry Pi (из файла client_public.key)
PublicKey = WWFhoYfIgIhGOsvdJ/F9eWx7hPksrV6riiqo5lFPExI=
AllowedIPs = 10.66.66.2/32