From 677fcc604a7b0775e317690204c93cae8c164d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=80=D0=B5=D0=B2?= Date: Sun, 26 Apr 2026 12:09:43 +0300 Subject: [PATCH] =?UTF-8?q?tunnel:=20ufw=20allow=20on=20wg0=20+=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=20=D0=BF=D0=BE=20=D1=83=D0=BC?= =?UTF-8?q?=D0=BE=D0=BB=D1=87=D0=B0=D0=BD=D0=B8=D1=8E=20=D0=BC=D0=B0=D1=80?= =?UTF-8?q?=D1=88=D1=80=D1=83=D1=82=D0=B8=D1=82=20=D1=82=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=BA=D0=BE=20VPS=20(/32)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit После handshake траффик упирался в UFW на сервере (открывали только 51820/udp, не сам интерфейс wg0). Добавляем `ufw allow in/out on wg0` в server-install.sh — теперь ICMP/HTTP/SSH внутри туннеля проходят. На клиенте AllowedIPs по умолчанию = 10.99.0.1/32 (только сам VPS), а не /24. Это устраняет возможный конфликт с существующими маршрутами для 10.99.0.0/24, если у Keenetic другие WG-интерфейсы используют ту же подсеть. Hub-and-spoke (роутер→VPS) — типичный сценарий, /32 достаточно. Кому нужен peer-to-peer через хаб — WG_SUBNET=10.99.0.0/24. --- tunnel/README.md | 2 +- tunnel/server-install.sh | 5 ++++- tunnel/tunnel-install.sh | 6 +++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/tunnel/README.md b/tunnel/README.md index 8121cf9..076b3ff 100644 --- a/tunnel/README.md +++ b/tunnel/README.md @@ -125,7 +125,7 @@ ssh root@10.99.0.5 | `CLIENT_IP` | да | IP роутера в туннельной подсети, например `10.99.0.5`. | | `CLIENT_PRIVKEY` | да | PrivateKey роутера (выдаёт `kssh-tun add`). | | `WG_IF` | `wg0` | Имя интерфейса. | -| `WG_SUBNET` | `10.99.0.0/24` | AllowedIPs клиента (что маршрутизировать в туннель). | +| `WG_SUBNET` | `10.99.0.1/32` | AllowedIPs клиента (что маршрутизировать в туннель). По умолчанию только VPS, чтобы не конфликтовать с существующими WG-маршрутами Keenetic. Поставьте `10.99.0.0/24` если нужно общение peer-to-peer. | | `WG_KEEPALIVE` | `25` | `PersistentKeepalive` в секундах (нужен из-за NAT провайдера). | --- diff --git a/tunnel/server-install.sh b/tunnel/server-install.sh index 82a0628..71fdc9b 100755 --- a/tunnel/server-install.sh +++ b/tunnel/server-install.sh @@ -63,9 +63,12 @@ fi systemctl enable "wg-quick@${WG_IF}" >/dev/null 2>&1 || true systemctl restart "wg-quick@${WG_IF}" -# Открыть UDP-порт в UFW, если он активен +# UFW: открываем UDP-порт WG и ВЕСЬ трафик внутри туннеля (на самом wg0). +# Без второго правила handshake пройдёт, а ping/HTTP внутри wg0 будут глохнуть. if command -v ufw >/dev/null 2>&1 && ufw status 2>/dev/null | grep -q "Status: active"; then ufw allow "${WG_PORT}/udp" >/dev/null 2>&1 || true + ufw allow in on "$WG_IF" >/dev/null 2>&1 || true + ufw allow out on "$WG_IF" >/dev/null 2>&1 || true fi PUB_IP="$(curl -s4 ifconfig.me 2>/dev/null || hostname -I | awk '{print $1}')" diff --git a/tunnel/tunnel-install.sh b/tunnel/tunnel-install.sh index 3f9d0b2..65f32af 100755 --- a/tunnel/tunnel-install.sh +++ b/tunnel/tunnel-install.sh @@ -12,7 +12,11 @@ set -e WG_IF="${WG_IF:-wg0}" -WG_SUBNET="${WG_SUBNET:-10.99.0.0/24}" +# Что маршрутизировать в туннель. По умолчанию только сам VPS (/32), +# чтобы не конфликтовать с возможными существующими маршрутами +# 10.99.0.0/24 на роутере (другие WG-интерфейсы Keenetic). Если нужен +# доступ к другим peer-ам в подсети — поставьте WG_SUBNET=10.99.0.0/24. +WG_SUBNET="${WG_SUBNET:-10.99.0.1/32}" WG_KEEPALIVE="${WG_KEEPALIVE:-25}" WG_DIR="/opt/etc/wireguard" INIT="/opt/etc/init.d/S50kssh-tunnel"