Домашний роутер: awg2 (Финляндия) рабочий — корень был rp_filter, не протокол

- Корень «awg2 не ходил»: строгий rp_filter=1 на интерфейсе дропал transport
  из туннеля (handshake жив, транзит 0%). awg0 работал на rp_filter=2 (loose).
  При заведении финского awg2 строка rp_filter=2 не была добавлена (для awg0 была).
- Фикс на роутере: net.ipv4.conf.awg2.rp_filter=2 в /etc/sysctl.conf
  + hotplug 99-awg-rpfilter (loose на все awg* при ifup). podkop → awg2.
- podkop-reference §5: добавлена грабля rp_filter (handshake-есть-транзита-нет).
- Снято неверное «awg2 сломан / OpenWrt не тянет AWG 1.5» — сервер/протокол исправны.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
dttb
2026-06-23 18:50:44 +03:00
parent 9fb19f4122
commit 3d71b56ae3
2 changed files with 8 additions and 2 deletions

View File

@@ -22,7 +22,12 @@ tags: [dttb, network]
- Конфиг: `/etc/adguardhome.yaml` (upstream `127.0.0.42`, фильтры включают HaGeZi Pro mini + 2 YouTube-листа)
- Подкоп: `dont_touch_dhcp=1` — подкоп НЕ переписывает dnsmasq.server при start
- Резерв адресов подкопа: `127.0.0.42`, `127.0.0.53` — не занимать
- Подкоп **0.7.19** (обновлён 2026-06-08 с 0.7.14, install.sh; конфиг сохранён, бэкап `/etc/config/podkop.bak-pre0719`); выход `awg0` → Singapore `202.71.12.186` (резерв — vless `Vlees`); списки `meta/russia_inside/telegram/google_ai`; `disable_quic=1`
- Подкоп **0.7.19** (обновлён 2026-06-08 с 0.7.14, install.sh; конфиг сохранён, бэкап `/etc/config/podkop.bak-pre0719`); списки `meta/russia_inside/telegram/google_ai`; `disable_quic=1`
- **Выход podkop: активен `interface=awg2` → Finland HOSTKEY `151.241.234.241:41624`** (AWG 1.5: S3/S4 + H-диапазоны, addr `10.8.1.2/32`). **Резерв = `awg0` `202.71.12.186:37209`** (AWG 1.0, addr `10.8.1.6/32`, тёплый, auto=1). Доп. резерв — vless `Vlees`. Оба awg в firewall-зоне `vpn` (не WAN). Бэкапы: `/etc/config/{network,podkop,firewall}.bak-pre-finland-20260623`, `podkop.bak-srs-fix-20260623`, `network.bak-awgi1-20260623`.
- Откат на резерв: `uci set podkop.main.interface=awg0; uci commit podkop; service podkop restart`.
- 🔴 **КОРЕНЬ «awg2 не ходил» (2026-06-23) = `rp_filter`.** Симптом: handshake встаёт, но 100% потерь транзита (`ping -I awg2 1.1.1.1`), end-to-end 000, sing-box не качал списки. AWG-параметры идентичны рабочему Severni Les (Бужаровский Cudy на ту же ноду). Разница: у awg2 был **строгий** `net.ipv4.conf.awg2.rp_filter=1` (наследие `default=1`) → transport-ответ из туннеля приходит на awg2, ядро не видит обратного маршрута через awg2 → дроп. awg0 работал, т.к. имел `=2` (loose) в `/etc/sysctl.conf`. **Я при заведении финского awg2 забыл добавить ему `rp_filter=2`** (для awg0 строка была). Фикс: строка `net.ipv4.conf.awg2.rp_filter=2` в `/etc/sysctl.conf` + hotplug `/etc/hotplug.d/iface/99-awg-rpfilter` (loose на все `awg*` при ifup — robust против пересоздания). **Это НЕ протокол и НЕ сервер** (mac-клиент и Severni Les на этой ноде работали). Проверка: `sysctl -n net.ipv4.conf.awg2.rp_filter` → должно быть `2`.
- ⚠️ `202.71.12.186` (awg0) геолоцируется в **Хельсинки/FI** (cdn-cgi/trace), не Сингапур — прежний ярлык «Singapore» здесь и в [[../../snippets/podkop-reference]] неверен.
- **Rule-set download detour (2026-06-23, фикс crash-loop):** rule-set'ы podkop — remote (`github.com/itdoginfo/.../*.srs`), а GitHub блокирован РКН по WAN → при пустом `/tmp/sing-box/rulesets` sing-box падал `FATAL initialize rule-set: Get release-assets.githubusercontent.com` (route.final=`direct-out`=WAN). Лечится `download_lists_via_proxy=1` + `download_lists_via_proxy_section=main` (detour→`main-out`=туннель). **На 0.7.19 это РАБОТАЕТ** (старая грабля «via_proxy ломает sing-box» из [[../../snippets/podkop-reference]] была из-за пустой секции → тег `-out`; с явной секцией тег `main-out` валиден).
- ⚠️ Грабля: `service podkop status` показывает **"not running" при живом sing-box** (косметика init-скрипта, не показатель). Sing-box тут склонен зависать (FakeIP `missing fakeip record` + DNS `deadline exceeded`, иногда ДВА процесса) → лечить `killall sing-box; service podkop restart`. Проверка обхода: `nslookup <домен> 127.0.0.42``198.18.x` = ушёл в туннель
- Подробности и откат: см. [[../../decisions/2026-04-30-openwrt-homelab-agh-podkop-chain]]

View File

@@ -129,8 +129,9 @@ uci commit podkop && /etc/init.d/podkop restart
| **Клиент сам обходит DNS роутера** | curl с роутера ок, у клиента нет | iPhone Private Relay/Safari Hide IP/Chrome DoH. Выключить у клиента; на роутере — DNAT :53 + reject DoH (см. runbook §7). [[../../.claude/projects/-Users-ai-knowledge-base/memory/feedback_iphone_breaks_fakeip\|памятка]] |
| **`podkop restart` сбрасывает `shutdown_correctly`** | редкие странности после рестарта | проверять флаг после рестарта |
| **Роутер ходит, LAN-клиенты — нет** (залип FakeIP/tproxy для форвардного) | сам Cudy `curl https://api.anthropic.com` → 405, а с LXC/клиента ВСЕ туннельные сайты (telegram/anthropic) виснут на **TCP-connect** (`Trying 198.18.x... timed out`, до Connected не доходит); nft-метки/tproxy счётчики растут, но SYN-ACK не возвращается. Прямые сайты (не в списках) у клиента работают | `killall sing-box; sleep 2; rm -f /tmp/sing-box/cache.db; /etc/init.d/podkop restart` на роутере. Бенелюкс 2026-06-21: из-за этого «висли» агенты swarmclaw на коробке (claude не достучивался до Anthropic). **Диагностика-ловушка:** `curl --interface awg0 https://api.anthropic.com` НЕ показатель — резолвит в FakeIP и шлёт фейк прямо в awg0 → ложный таймаут. Правильно = обычный FakeIP-путь роутера. |
| **`download_lists_via_proxy='1'` ломает sing-box** | `sing-box FATAL: start service: initialize rule-set: download detour not found: -out`sing-box не стартует, обход полностью падает. Deadlock: podkop качает списки через прокси-порт 4534, который не слушает, пока sing-box не поднялся | ⛔ НЕ включать (минимум в podkop 0.7.14). Оставить `=0`. |
| **`download_lists_via_proxy='1'` с ПУСТОЙ секцией ломает sing-box** | `sing-box FATAL: start service: initialize rule-set: download detour not found: -out`detour-тег вышел `-out` (пустая секция + суффикс) | На **0.7.19** включать МОЖНО и НУЖНО, если GitHub блокирован РКН: `uci set podkop.settings.download_lists_via_proxy=1; uci set podkop.settings.download_lists_via_proxy_section=main` → detour `main-out` (туннель). Тогда remote rule-set'ы (`*.srs` с `release-assets.githubusercontent.com`) качаются ЧЕРЕЗ туннель. Без этого при пустом `/tmp/sing-box/rulesets` (после `rm cache.db`/обновления) sing-box падает `initialize rule-set: Get ...` т.к. `route.final=direct-out`=WAN. **Грабля 0.7.14 = НЕ задана секция.** HomeLab dttb 2026-06-23. |
| **`podkop list_update` падает: raw.githubusercontent.com блокирован РКН** | в логах `Attempt N/3 to download .../*.lst failed`, напрямую с WAN `curl raw.git` = HTTP 000. Списки тихо устаревают (обход «потихоньку перестаёт ловить» новые домены/подсети) | Добавить **сам GitHub в обход**: `uci set podkop.main.user_domain_list_type='dynamic'; uci add_list podkop.main.user_domains='githubusercontent.com'; uci commit podkop; /etc/init.d/podkop restart`. Тогда роутерный `list_update` резолвит raw.git в FakeIP → туннель → HTTP 200. via_proxy оставить `0`. |
| 🔴 **`rp_filter` строгий на awg-интерфейсе → handshake есть, транзита НЕТ** | `awg show` = свежий handshake + растёт `received`; но `ping -I awgN 1.1.1.1` = **100% потерь**, end-to-end 000, sing-box не качает списки. Transport-ответ из туннеля приходит на awgN, при `rp_filter=1` (strict) ядро не видит обратного маршрута к internet-src через awgN → **дроп до доставки**. Особенно на мульти-туннельных роутерах, где один awg работает (стоит `=2`), другой нет (унаследовал `default=1`) | `sysctl -w net.ipv4.conf.<iface>.rp_filter=2` (loose) → проверь `ping -I <iface>`. Персистентно: строка `net.ipv4.conf.<iface>.rp_filter=2` в `/etc/sysctl.conf` + hotplug `/etc/hotplug.d/iface/99-awg-rpfilter` (loose на все `awg*` при ifup). **Диагностика:** сравни `sysctl net.ipv4.conf.{рабочий,сломанный}.rp_filter` — разница `2` vs `1` = это он. HomeLab dttb 2026-06-23 (awg2 vs awg0). |
---