Files
knowledge-base/decisions/2026-04-30-openwrt-homelab-agh-podkop-chain.md
dttb 47394e668e Phase 9 (улучшения автоматизации):
A. kb-autosync.sh переписан: pull → regenerate index → commit → push.
   После каждого push с Mac индекс objects-map.json и _index.md
   обновляются автоматически на code-server (LXC 132).

B. kb-objects-map.py + kb-objects-audit.py добавлены в воскресный
   weekly cron на LXC 132 — health-check автогенерируется раз в неделю.

C. Чистка битых wiki-ссылок (score 84 → 9):
   - notes/govru-diagnosis → projects/niikn/govru-quickfix-playbook (2)
   - claude-memory/podkop → 2026-04-17-peredelki-podkop-stability-fix
   - [[../snippets/clients/]] → snippets/clients/ (текстом, 2)
   - [[feedback_*]] (user memory) → backtick-cited (2)
   - [[../znamenskoye/]] → [[../znamenskoye/README]] (4)

   Скрипт kb-objects-audit.py улучшен: regex теперь требует [[...]] с
   двойной скобкой (не одной), исключает audit/ и CLAUDE.md (placeholder
   и autogen).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 16:52:16 +03:00

81 lines
5.2 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-04-30
type: decision
tags: [dttb, openwrt, adguard, podkop, dns, youtube-adblock]
hosts: [10.0.0.1]
---
# OpenWrt HomeLab (10.0.0.1): AdGuard Home в DNS-цепочке, фильтры YouTube
## Контекст
На роутере 10.0.0.1 (OpenWrt 24.10.3, Mediatek Filogic) установлен `adguardhome 0.107.57-r1`, но трафик клиентов LAN его **обходил**. dnsmasq форвардил `127.0.0.42` (sing-box подкопа), AGH слушал `127.0.0.1:5353` без клиентов. user_rules в yaml были повреждены (куски Python-листа с залипшими кавычками). Цель — реальная блокировка рекламы для всей сети, в т.ч. максимум возможного для YouTube.
## Решение — гибридная схема
```
LAN client → dnsmasq:53 → AGH:5353 → sing-box:127.0.0.42 → upstream
```
AGH ставится между dnsmasq и sing-box: блокирует ad-домены до sing-box, а sing-box продолжает делать fakeip и роутить подкоп-домены. Это отличается от двух канонических схем `podkop.net/docs/adguard/` (Схема 1: AGH на 127.0.0.10:53 как upstream подкопа; Схема 2: AGH перед подкопом для клиентов), но проще и сохраняет всю существующую логику подкопа.
## Изменения
### `/etc/adguardhome.yaml`
- `dns.upstream_dns``127.0.0.42` (sing-box, единственный)
- Добавлены фильтры:
- `HaGeZi Pro mini` — https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.mini.txt
- `BlocklistProject YouTube` — https://blocklistproject.github.io/Lists/youtube.txt
- `GoodbyeAds YouTube AdBlock` — https://raw.githubusercontent.com/jerryn70/GoodbyeAds/master/Hosts/GoodbyeAds-YouTube-AdBlock.txt
- `user_rules` очищены от мусора, оставлены работающие правила: `googlesyndication.com`, `doubleclick.net`, `youtube.com/{api/stats/watchtime,ptracking,pagead,ads,get_midroll}*`, `googlevideo.com/get_video_info*`, `pagead2.googlesyndication.com`, `static.doubleclick.net`, `stats.g.doubleclick.net`, `googleads.g.doubleclick.net`, `ads.yandex.ru`, `mc.yandex.ru`, `metrika.yandex.ru`, `yandex.ru/ads`, `*.yandex.ru/ads`, `dzen.ru/ads`, `ads.vk.com`, `vk.com/ads`, `top-fwz1.mail.ru`, `adfox.ru`
### UCI
```
uci set podkop.settings.dont_touch_dhcp='1' # подкоп больше не переписывает dhcp
uci -q delete dhcp.@dnsmasq[0].server
uci add_list dhcp.@dnsmasq[0].server='127.0.0.1#5353'
uci commit podkop && uci commit dhcp
/etc/init.d/adguardhome restart
/etc/init.d/dnsmasq restart
```
### Бэкапы (на роутере)
- `/etc/adguardhome.yaml.bak.20260430_001129`
- `/etc/config/dhcp.bak.20260430_001129`
## Верификация
| Запрос на `10.0.0.1` | Ответ | Проверяет |
|---|---|---|
| `doubleclick.net` | `0.0.0.0` | AGH режет ad-домен |
| `pagead2.googlesyndication.com` | `0.0.0.0` | YouTube ad-эндпоинт |
| `wikipedia.org` | `185.15.59.224` | обычный сайт работает |
| `youtube.com` | `198.18.1.77` | fakeip подкопа цел |
## Граничные случаи / что НЕ блокируется
DNS-блокировка убирает рекламную **телеметрию, баннеры, midroll-API** YouTube. **In-stream-ролики** в самих видео сидят на `*.googlevideo.com` (CDN видео) — DNS их разделить не может. Полная блокировка — только клиентом: uBlock Origin (Firefox/Chrome), SponsorBlock, ReVanced/NewPipe (Android), FreeTube (desktop).
## Откат
```bash
ssh root@10.0.0.1 "cp /etc/adguardhome.yaml.bak.20260430_001129 /etc/adguardhome.yaml \
&& cp /etc/config/dhcp.bak.20260430_001129 /etc/config/dhcp \
&& uci set podkop.settings.dont_touch_dhcp=0 && uci commit podkop \
&& /etc/init.d/adguardhome restart && /etc/init.d/dnsmasq restart"
```
## Запомнить (грабли)
- `127.0.0.42` и `127.0.0.53` — зарезервированы подкопом и системой, не использовать как listen для других сервисов (`podkop.net/docs/adguard/`).
- При `dont_touch_dhcp=0` подкоп при каждом start переписывает `dhcp.@dnsmasq[0].server` на `127.0.0.42`, кладя предыдущее в `podkop_server`. Любая ручная замена upstream без `dont_touch_dhcp=1` не переживёт перезапуск.
- AGH-веб: http://10.0.0.1:3000 (admin / хеш в yaml).
- SSH `root@10.0.0.1` с `1qaz!QAZ` **работает** — старая запись в `projects/dttb/openwrt-router.md` про "SSH не работает" устарела.
## Ссылки
- [[../projects/dttb/openwrt-router]] — карточка роутера
- [[2026-04-17-peredelki-podkop-stability-fix]] — справка по подкопу (схемы AGH, fakeip 198.18.0.0/15)
- https://podkop.net/docs/adguard/
- https://podkop.net/docs/dont-touch-my-dhcp/