From 3604e843c837f406bf5045ab32b4b26bf8325dd3 Mon Sep 17 00:00:00 2001 From: gilfanovr Date: Fri, 9 Oct 2026 17:21:42 +0300 Subject: [PATCH] =?UTF-8?q?ru1:=20=D1=80=D0=B5=D1=81=D1=82=D0=B0=D1=80?= =?UTF-8?q?=D1=82=20networkd=20=D1=81=D0=BD=D1=91=D1=81=20fwmark-=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=BE=20=D1=83=D0=BC=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D1=80=D0=BE=D1=83=D1=82=D0=B8=D0=BD=D0=B3=D0=B0?= =?UTF-8?q?=20=E2=80=94=20=D0=BF=D0=BE=D1=87=D0=B8=D0=BD=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=20=D0=B8=20=D0=B7=D0=B0=D1=89=D0=B8=D1=89=D0=B5=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit После apt-get из установки WEB-прокси needrestart перезапустил systemd-networkd, тот удалил ip rule fwmark 0x64 -> vpn: ~45 мин зарубежный трафик клиентов OpenVPN #1 шёл через RU IP. Правило возвращено, networkd запрещено трогать чужие правила и маршруты. Co-Authored-By: Claude Opus 5.5 --- servers/ru1.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/servers/ru1.md b/servers/ru1.md index f5e923b..20da8db 100644 --- a/servers/ru1.md +++ b/servers/ru1.md @@ -60,6 +60,7 @@ VPN entry-нода в РФ. Точка входа в топологии **RU↔D - `ipset ru_ips` (~11400 подсетей, источник ipdeny.com). До routing decision (mangle PREROUTING): - dst ∈ ru_ips → RETURN (без метки) → main table → ens3 (RU напрямую) - иначе → MARK `0x64` → `ip rule fwmark 0x64 → table vpn (100)` → default dev wg0 → de1 +- ⚠️ **Правило `fwmark 0x64 → vpn` ставит `PostUp` в `wg0.conf`, и его снимает рестарт `systemd-networkd`.** По умолчанию networkd при старте удаляет «чужие» ip rule (`ManageForeignRoutingPolicyRules=yes`). 2026-10-09 в 16:36 `apt-get install` из установки WEB-прокси обновил библиотеки → needrestart перезапустил networkd → правило пропало, и ~45 мин (до 17:21) зарубежный трафик клиентов OpenVPN #1 шёл через ens3 (RU IP) вместо туннеля; жаловались пользователи VPN. Вернули вручную (`ip rule add fwmark 100 lookup vpn priority 10000`). Защита с 2026-10-09: `/etc/systemd/networkd.conf.d/10-keep-foreign-routing.conf` — `ManageForeignRoutingPolicyRules=no`, `ManageForeignRoutes=no` (действует со следующего старта networkd; networkd ради этого не перезапускали). Та же мина раньше висела на unattended-upgrades. Быстрая проверка: `ip rule | grep 0x64`. - Обновление списка: `~/smart-routing/update-ru-ips.sh`, cron вс 03:00. Восстановление при ребуте: `ipset-restore.service` (до `awg-quick@wg0`). - tun1 — без умного роутинга (всегда RU/ens3). @@ -86,6 +87,8 @@ VPN entry-нода в РФ. Точка входа в топологии **RU↔D - Таблица маршрутизации — `vpn` (100), не `awg`. ## Открытые хвосты +- **Умный роутинг для `wg1` не настроен** (2026-10-09): mangle-правила есть только для `-i tun0`, для `wg1` / `10.8.2.0/24` — ни одного, хотя раздел «Умный роутинг» заявляет tun0 и wg1. В `wg1` один пир, рукопожатий не было ни разу — сервисом, похоже, никто не пользуется. Не правили. +- Drop-in `10-keep-foreign-routing.conf` фактически не проверен рестартом networkd (рестарт ens3 по SSH на этой ноде — риск). Проверить при следующей плановой перезагрузке: после неё `ip rule | grep 0x64` должен показать правило. - **Живой клиент через WEB-прокси не проверен** (2026-10-09): серверная цепочка проверена по частям (см. раздел WEB-прокси). Поддержка в мобильных клиентах подтверждена только новостью про Telegram 13.0. - **DNS `*.ru.ruzzy.dev`** (CNAME → `ru.ruzzy.dev`, Namecheap) остался от веб-прокси Telegram Web — больше не нужен, удалить. Имена `zws*.ru.ruzzy.dev` уже попали в CT-логи через сертификат от 2026-10-09 (Let's Encrypt) — это не отменить. - `/tmp/tproxy-server` на сервере — исходники и `setup-ru1.sh`, нужны для `deploy/update-relay.sh`; `/tmp` чистится при ребуте — при обновлении заливать заново.