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

5.2 KiB
Raw Permalink Blame History

date, type, tags, hosts
date type tags hosts
2026-04-30 decision
dttb
openwrt
adguard
podkop
dns
youtube-adblock
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

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).

Откат

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 не работает" устарела.

Ссылки