1

Тема: Unbound: рекурсивный резолвер + adblock

Решил поставить на роутер unbound и отказаться от сторонних DNS - провайдерские режут неугодные домены, гугл/яндекс потенциально собирают статистику.. Однако нужно было перенести и блокировку рекламы....

Пока формирую наброски скриптов..

В процессе перехода обнаружились плюсы подобного перехода для работы блокировки рекламы по hosts ( http://winhelp2002.mvps.org/hosts.txt ), а именно возможность обрезать домен+любые его поддомены двумя строчками.
Поясню на примере, статистика по количеству поддоменов по вышеуказанному файлу на данный момент (версия June-04-2015), более 50:

962 2o7.net
749 intellitxt.com
158 gemius.pl
101 xiti.com
95 cnzz.com
87 ivwbox.de
76 bravenet.com
70 247realmedia.com
65 nuggad.net
65 adocean.pl
64 overture.com
64 doubleclick.net
62 hittail.com
54 sextracker.com
53 sitemeter.com
50 statcounter.com

Кроме того, у некоторых из вышеобозначенных доменов постоянно появляются новые поддомены...

Установка на Entware обычная - opkg install unbound

Подправим файл запуска K61unbound для сожительства с dnsmasq:

#!/bin/sh

ENABLED=yes
PROCS=unbound
ARGS="-c /opt/etc/unbound/unbound.conf"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PRECMD="/bin/dns.sh stop"

. /opt/etc/init.d/rc.func

if [ "$1" = "stop" ]; then
 /bin/dns.sh
fi

Создадим папку /opt/root/adblock, а в ней файл bigdomains.txt - он будет содержать домены, которые будут блокироваться вместе со всеми поддоменами, например "топ30" по количеству поддоменов:

2o7.net
intellitxt.com
gemius.pl
xiti.com
cnzz.com
ivwbox.de
bravenet.com
247realmedia.com
nuggad.net
adocean.pl
overture.com
doubleclick.net
hittail.com
sextracker.com
sitemeter.com
statcounter.com
tradedoubler.com
mydas.mobi
cqcounter.com
imrworldwide.com
popunder.ru
axf8.net
hotlog.ru
zedo.com
mtree.com
smartadserver.com
51yes.com
directtrack.com
crwdcntrl.net
extreme-dm.com

Сконвертируем hosts от MVPS в формат unbound - на данный момент обработка идет perl'ом (может не стоять), позже планирую через sed
Скрипт пока в черновом варианте - исправления/упрощения приветствуются, несколько файлов пока сделано для упрощения

cd /opt/root/adblock
wget http://winhelp2002.mvps.org/hosts.txt -O hosts.txt

perl -e 'while(<>){ chomp; lc; next if /^#/; if (/^0\.0\.0\.0\s([-a-z0-9.]*)/) { print "local-data: \"$1 A 0.0.0.0\"\n"; } }' hosts.txt > adblock.conf
grep -v -f bigdomains.txt < adblock.conf > adblock2.conf
echo >> adblock2.conf

for i in $(grep -v ^# bigdomains.txt); do
echo local-zone: \"${i}\" redirect >> adblock2.conf
echo local-data: \"${i} A 0.0.0.0\" >> adblock2.conf
done

cp adblock2.conf /opt/etc/unbound/adblock.conf

Добавим в секцию server: файла /opt/etc/unbound/unbound.conf строчку
include: "/opt/etc/unbound/adblock.conf"

В целом, больше никаких настроек не требуется для работы. В результате получаем личный рекурсивный резолвер с поддержкой DNSSEC и фильтрацией нежелательных доменов.

В планах постепенно доделать скрипт конвертации (возможно для обработки нескольких файлов hosts из разных источников и чистки дубликатов) и описать варианты изменения некоторых параметры конфигурации unbound, которые могут пригодиться

Отредактировано KorDen (2015-07-06 21:24:51)