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>
81 lines
5.2 KiB
Markdown
81 lines
5.2 KiB
Markdown
---
|
||
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/
|