From 3ec0cb8dcf5674e2e57f439a841f92395acbe573 Mon Sep 17 00:00:00 2001 From: dttb Date: Thu, 30 Apr 2026 00:25:19 +0300 Subject: [PATCH] =?UTF-8?q?openwrt-homelab:=20AdGuard=20Home=20=D0=B2=20DN?= =?UTF-8?q?S-=D1=86=D0=B5=D0=BF=D0=BE=D1=87=D0=BA=D0=B5,=20=D0=B1=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20YouTube=20ad?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Цепочка: LAN → dnsmasq:53 → AGH:5353 → sing-box:127.0.0.42 → upstream. podkop dont_touch_dhcp=1, dnsmasq.server=127.0.0.1#5353. Добавлены HaGeZi Pro mini, BlocklistProject YouTube, GoodbyeAds YouTube AdBlock. user_rules очищены от поломанного YAML. Проверено: ad-домены → 0.0.0.0, fakeip подкопа цел, обычные сайты резолвятся. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...-04-30-openwrt-homelab-agh-podkop-chain.md | 80 +++++++++++++++++++ projects/dttb/openwrt-router.md | 13 ++- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 decisions/2026-04-30-openwrt-homelab-agh-podkop-chain.md diff --git a/decisions/2026-04-30-openwrt-homelab-agh-podkop-chain.md b/decisions/2026-04-30-openwrt-homelab-agh-podkop-chain.md new file mode 100644 index 0000000..da76302 --- /dev/null +++ b/decisions/2026-04-30-openwrt-homelab-agh-podkop-chain.md @@ -0,0 +1,80 @@ +--- +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]] — карточка роутера +- [[../claude-memory/podkop]] — справка по подкопу (схемы AGH, fakeip 198.18.0.0/15) +- https://podkop.net/docs/adguard/ +- https://podkop.net/docs/dont-touch-my-dhcp/ diff --git a/projects/dttb/openwrt-router.md b/projects/dttb/openwrt-router.md index 762ea1c..2d8bd1d 100644 --- a/projects/dttb/openwrt-router.md +++ b/projects/dttb/openwrt-router.md @@ -8,10 +8,21 @@ tags: [dttb, network] - LuCI Web UI: http://10.0.0.1:8080/cgi-bin/luci/ - ubus RPC: POST http://10.0.0.1:8080/ubus/ (root / 1qaz!QAZ) -- SSH: НЕ работает с этим паролем (другой или key-only) +- SSH: `ssh root@10.0.0.1` с паролем `1qaz!QAZ` — работает (проверено 2026-04-30) - DNS Hijack: перехватывает порт 53 → 10.0.0.1 (все DNS запросы через роутер) - Проброс: 80→NPM, 443→NPM, 25/465/587/993/995/4190→Mailcow(10.0.0.107) - uci apply: нужен rollback=True + confirm, иначе правила теряются +- ОС: OpenWrt 24.10.3 r28872-daca7c049b, target mediatek/filogic (aarch64) + +## Стек DNS / блокировки + +Цепочка: `LAN → dnsmasq:53 → AGH:5353 → sing-box:127.0.0.42 → upstream`. AdGuard Home 0.107.57 фильтрует ad-домены, sing-box (подкоп) делает fakeip и роутинг подкоп-доменов. + +- AGH веб: http://10.0.0.1:3000 (admin / хеш в `/etc/adguardhome.yaml`) +- Конфиг: `/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` — не занимать +- Подробности и откат: см. [[../../decisions/2026-04-30-openwrt-homelab-agh-podkop-chain]] ## OpenWrt Router HomeLab (10.0.0.1:8080)