Исправление маршрутизации, порт 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, диагностика петли и выхода в интернет
This commit is contained in:
@@ -30,6 +30,10 @@ table inet filter {
|
||||
|
||||
iifname "wlan0" oifname "wg0" accept
|
||||
iifname "wg0" oifname "wlan0" ct state established,related accept
|
||||
|
||||
# MSS-clamp: клиенты 192.168.77.0/24 имеют MTU 1500 и не знают про туннель 1200.
|
||||
# Без этого крупные TCP-сессии (сайты, загрузки) залипают при заблокированном PMTUD.
|
||||
iifname "wlan0" oifname "wg0" tcp flags syn tcp option maxseg size set rt mtu
|
||||
}
|
||||
|
||||
chain output {
|
||||
|
||||
@@ -5,9 +5,9 @@ After=network.target
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
# Слушает локальный UDP-порт 51821 и транслирует в TCP на внешний IP сервера 95.174.102.77:443
|
||||
# Слушает локальный UDP-порт 51821 и транслирует в TCP на внешний вход сервера 95.174.102.77:25565
|
||||
# ВАЖНО: Пароль в параметре -k должен строго совпадать с паролем на сервере!
|
||||
ExecStart=/usr/local/bin/udp2raw -c -l 127.0.0.1:51821 -r 95.174.102.77:443 -k "MY_CONFIDENTIAL_PASS" --raw-mode faketcp -a
|
||||
ExecStart=/usr/local/bin/udp2raw -c -l 127.0.0.1:51821 -r 95.174.102.77:25565 -k "MY_CONFIDENTIAL_PASS" --raw-mode faketcp -a
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
# RASPBERRY PI 4:
|
||||
# RASPBERRY PI 4 (клиент/роутер)
|
||||
# uplink : usbnet 192.168.200.13/24, шлюз+DNS 192.168.200.1 (моб. канал, провайдер режет UDP)
|
||||
# downstream: wlan0 192.168.77.0/24 (клиенты уходят в интернет через туннель)
|
||||
|
||||
[Interface]
|
||||
Address = 10.66.66.2/24
|
||||
# Приватный ключ Raspberry Pi (из файла client_private.key)
|
||||
PrivateKey = eKiGDY62/9pgFrwzoNIb7URRLPgEHC1W7zHwIIDYQVw=
|
||||
# Уменьшенный MTU для компенсации оверхеда фейковых заголовков TCP
|
||||
# Уменьшенный MTU для компенсации оверхеда WG (+60) и фейковых TCP-заголовков udp2raw (+~40)
|
||||
MTU = 1200
|
||||
|
||||
# КРИТИЧНО: закрепляем маршрут до публичного входа сервера ЧЕРЕЗ реальный uplink.
|
||||
# Иначе при AllowedIPs=0.0.0.0/0 сам транспорт udp2raw уйдёт в wg0 -> петля, туннель рвётся.
|
||||
# 192.168.200.1 — шлюз usbnet; при смене канала поправить здесь (см. README).
|
||||
PreUp = ip route replace 95.174.102.77/32 via 192.168.200.1 dev usbnet
|
||||
PostDown = ip route del 95.174.102.77/32 2>/dev/null || true
|
||||
|
||||
[Peer]
|
||||
# Публичный ключ Сервера (из файла server_public.key)
|
||||
PublicKey = dVIwnwxkjan/K278vzhOjp5A79N98j0O1zsYqT24qzs=
|
||||
@@ -15,4 +23,4 @@ Endpoint = 127.0.0.1:51821
|
||||
# Маршрутизируем абсолютно весь трафик через VPN туннель
|
||||
AllowedIPs = 0.0.0.0/0
|
||||
# Пакет удержания сессии через NAT провайдера
|
||||
PersistentKeepalive = 25
|
||||
PersistentKeepalive = 25
|
||||
|
||||
Reference in New Issue
Block a user