Files
knowledge-base/projects/buzharovo/podkop-router.md
dttb 81833de405 Бужарово роутер: веб-терминал LuCI (ttyd) — url_override на NetBird-IP
ttyd writable и работает, но окно терминала было «не активно»: LuCI открывали
на 192.168.1.1, а этот адрес коллизит с НИИКН/Переделки в NetBird → iframe
терминала на 192.168.1.1:7681 уходил не туда. Фикс: url_override=
http://100.70.113.251:7681 (стабильный NetBird-IP). Рекомендация — открывать
роутер по NetBird-IP, а не 192.168.1.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 20:17:02 +03:00

67 lines
8.8 KiB
Markdown
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.
---
date: 2026-06-23
type: project
tags: [buzharovo, openwrt, podkop, amneziawg, fakeip, doh]
aliases: [Severni Les router, Бужарово podkop роутер]
---
# Бужарово — podkop-роутер «Severny-Les» (Cudy TR3000)
Отдельный роутер обхода РКН для стройрынка Бужарово (Северный лес). **Не путать** со шлюзом 1С-сервера [[buzharovo-router|Cudy WR6500H 185.13.47.2]] — это новый Cudy TR3000 под podkop.
- **hostname:** `Severny-Les` (было `Severni_Les` — поправлено на корректную латиницу 2026-06-23).
- **NetBird:** `100.70.113.251` / `severny-les-113-251.netbird.cloud` (группа Claude-Diag, ключ `64DF527E-…`, `--disable-dns`). Прямой доступ: **`ssh root@100.70.113.251`** (root/`1qaz!QAZ`).
## Железо / ОС
- **Cudy TR3000 v1**, OpenWrt 24.10.3 r28872, aarch64; extroot на USB.
- podkop **v0.7.19**, sing-box **1.12.4** (бинарь скопирован с домашнего 10.0.0.1; opkg-метадата числит 1.12.22 — бэкап `/usr/bin/sing-box.bak-1.12.22`; версия на обход НЕ влияла, см. ниже).
## Сеть и доступ (стадия препрод, 2026-06-23)
Сейчас стоит в домашней лабе: воткнут во **второй LAN-порт Proxmox**.
- LAN роутера: **192.168.1.1/24** (br-lan).
- WAN роутера: `eth0` DHCP из домашней сети — IP **10.0.0.215**, шлюз **10.0.0.1** (домашний роутер). Весь интернет идёт через дом.
- **Доступ (основной):** по NetBird — `ssh root@100.70.113.251`.
- **Доступ (фолбэк, по LAN):** jump через Proxmox — `ssh root@10.0.0.250``ssh -o UserKnownHostsFile=/dev/null root@192.168.1.1` (root / `1qaz!QAZ`). Host-key 192.168.1.1 на Proxmox конфликтует → нужен `UserKnownHostsFile=/dev/null`.
- **Firewall для NetBird:** добавлена зона `nbird` (device `wt0`, `input=ACCEPT` для управления, `forward=REJECT` — NetBird-пиры НЕ ходят в LAN стройрынка, masq off). Без неё SSH на NetBird-IP = «Connection refused» (wt0 был вне зон). ⚠️ Доступ к роутеру по NetBird гейтит ACL группы Claude-Diag — на проде сузить, если в группе лишние пиры.
- На стройрынке будет свой провайдер — сохранить LAN `192.168.1.0/24`.
## Туннель
- AmneziaWG **awg0** → Finland HOSTKEY `151.241.234.241:41624` (тот же хаб, что у дома и НИИКН; AWG 1.5: S3/S4 + H-диапазоны), клиент `10.8.1.3/32`.
- На Amnezia-панели (LXC 143) пир называется **«Severni Les»**. Список клиентов хаба: `Admin [macOS]`=10.8.1.1, `podkop homelab`=10.8.1.2 (домашний), `Severni Les`=10.8.1.3.
- `rp_filter` глобально `0` → транзит через туннель работает без правок (в отличие от домашнего, где нужен per-iface `=2` — см. [[../dttb/openwrt-router]]).
## podkop-конфиг (рабочий)
| Параметр | Значение |
|---|---|
| `interface` | `awg0` (Финляндия) |
| `community_lists` | `meta youtube telegram` |
| `disable_quic` | `1` |
| `dns_type` | **`doh`** ← ключевой фикс |
| `dns_server` | **`1.1.1.1/dns-query`** (DoH по IP, БЕЗ префикса `https://`) |
| `download_lists_via_proxy` | **`1`** / section `main` |
> ⚠️ **DoH по IP, и значение — `1.1.1.1/dns-query` (без `https://`).** Два подвоха:
> 1. **Не bare IP.** Если задать `dns_server=8.8.8.8`, podkop подставляет каноничный DoH-URL `https://dns.google/dns-query` (**хостнейм**) — его надо резолвить через bootstrap по `:53` (за домашним хайджеком) → хрупко.
> 2. **Не полный URL `https://1.1.1.1/dns-query`.** Конфиг sing-box он соберёт верно (IP-DoH), НО **проверка «Основной DNS» в диагностике podkop баговая**: делит `dns_server` по `/` и для `https://…` выполняет `dig @https:` → ложный красный крест.
> Правильное значение **`1.1.1.1/dns-query`**: `url_get_host`=`1.1.1.1` (IPv4) → bootstrap не нужен (sing-box стучит прямо на `1.1.1.1:443`), И диагностика парсит верно (`dig @1.1.1.1 +https=/dns-query`) → зелёная.
> Косметика: «Счётчики правил mangle» краснеют в препроде (нет LAN-клиентов → forward-метки на нуле); в проде с клиентами зеленеют.
## Грабли, которые лечили (2026-06-23)
1. **`download_lists_via_proxy=0` → sing-box не качал rule-set'ы** (GitHub блокирован РКН по WAN, `/tmp/sing-box/rulesets` пуст). Фикс: `download_lists_via_proxy=1` + `download_lists_via_proxy_section=main` (detour→`main-out`=туннель). Бэкап `/etc/config/podkop.bak-srs-fix-20260623`. Подробно: [[../../snippets/podkop-reference]] §5.
2. **Главное: обход не работал (telegram/youtube 000), хотя туннель жив.** sing-box дозванивался до самого FakeIP (`dial tcp 198.18.0.x: i/o timeout`) вместо реального IP. **Корень — препрод-среда:** роутер стоит за домашним роутером, а у того **catch-all DNS-хайджек** (`udp dport 53 dnat → 10.0.0.1:53`). Восходящий резолв sing-box'а (за реальным IP по `udp:53`) перехватывался домашним хайджеком → возвращался домашний FakeIP → петля. **Фикс: `dns_type=doh`** — резолвер по `https/443` минует `:53`-хайджек. На боевом объекте (свой провайдер) работал бы и на `udp`, но DoH делает роутер устойчивым к любому вышестоящему DNS-перехвату. Грабля в справочнике: [[../../snippets/podkop-reference]] §5.
- Тупиковые версии (отброшены проверкой): sing-box 1.12.22→1.12.4 и `dns_server` 77.88.8.8→8.8.8.8 — **на обход не влияли**, причина была в DNS-хайджеке.
## sing-box 1.13.x — НЕ ставить (пока podkop 0.7.19)
podkop 0.7.19 генерит sing-box-конфиг под ветку **1.12** (старый формат DNS-секции). В 1.13 формат DNS менялся → риск, что sing-box не распарсит конфиг и не стартует. Держим 1.12.x (как дома). Латест — только после проверки совместимости с podkop, откатно.
## Веб-терминал в LuCI (ttyd)
`luci-app-ttyd` + `ttyd` 1.7.3 уже стоят, служба enabled, слушает `0.0.0.0:7681`, **writable** (этот билд RW по умолчанию; `-R` сделал бы RO — его нет). LuCI-вьюшка (System → Terminal) вставляет `<iframe src="http://<хост-как-открыта-LuCI>:7681">`.
- **Грабля «окно терминала не активно/пустое»:** LuCI открывали на `192.168.1.1`, а этот адрес **коллизит с НИИКН/Переделки** в NetBird (тот же `192.168.1.0/24`) → iframe на `192.168.1.1:7681` уходил не туда. Фикс: `uci set ttyd.@ttyd[0].url_override='http://100.70.113.251:7681'` (стабильный NetBird-IP). Теперь терминал грузится с него независимо от того, как открыта LuCI (браузер должен быть в NetBird).
- **Рекомендация:** открывать сам роутер по NetBird — **`http://100.70.113.251`** (а не `192.168.1.1`), тогда и LuCI, и терминал однозначны. После правки — hard-refresh страницы LuCI (term.js кешируется).
- Терминал спрашивает логин (`/bin/login` → root/`1qaz!QAZ`); :7681 гейтит firewall-зона `nbird` + ACL группы Claude-Diag.
## Связанное
- [[README]] — проект Бужарово
- [[../dttb/openwrt-router]] — домашний роутер (тот же финский хаб awg2; там грабля rp_filter)
- [[../../decisions/2026-06-23-amnezia-web-panel-lxc143]] — Amnezia-панель и финский хаб