dd-wrt: блокировка рекламы по dns

dd-wrt
Всем привет! В этом посте я покажу вам как блокировать рекламу на роутере с прошивкой dd-wrt посредством dns демона в роутере. Поехали.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Автор статьи не несет ответственности за причиненный ущерб от действий, которые изложены в этой инструкции. Все действия, описанные в данной статье, Вы выполняете на свой страх и риск.

ВНИМАНИЕ: usrzero настоятельно рекомендует пользоваться проверкой контрольных сумм (md5sum) во избежание атаки типа DNS-Spoofing (подмена DNS). Без проверки контрольных сумм в данном методе Вы подвергаете себя риску утечки конфиденциальной информации.

Для чего это нужно? Ну, во-первых различные плагины вроде AdBlock Plus жрут много памяти, они требуют дополнительной установки, и самое главное — не все устройства поддерживаются. Существуют приложения для ведроида, которые поставляются с рекламой. Этот метод представляет собой жесткую блокировку хостов через подмену адреса хоста на несуществующий, поэтому реклама будет удаляться сразу со всех устройств в сети маршрутизатора. Приступим к самим действиям.
Открываем веб-интерфейс dd-wrt, находим вкладку «Administration», открываем в ней вкладку «Commands». В итоге должны получить скриншот, примерно похожий на мой:

В поле «Commands» (выделено цифрой 1 на скриншоте) добавляем следующие строки:

hosts0_links='http://ix.io/Cxu http://ix.io/Cxv http://ix.io/Cxw http://ix.io/Cxx http://ix.io/Cxz';
hosts0_sum='2e02b2a790bf57278788607330c2a19c';
agent='Mozilla/5.0_Firefox/38.8-custombuild';
for i in $hosts0_links; do
wget -qU $agent -O - "$i" >> /tmp/hosts0.tmp;
done
file_sum="$(md5sum /tmp/hosts0.tmp | awk '{print $1}')";
if [ $file_sum = $hosts0_sum ]
then
grep '0.0.0.0' /tmp/hosts0.tmp > /tmp/hosts-blocklist;
rm -f /tmp/hosts0.tmp;
stopservice dnsmasq;
startservice dnsmasq;
sleep 3;
rm -f /tmp/hosts-blocklist;
else
rm -f /tmp/hosts0.tmp;
:> /tmp/hosts-blocklist_fail;
fi

и нажимаем кнопку «Save Startup» (выделено цифрой 2 на скриншоте).
Этот скрипт скачивает файл с хостами для блокировки, распаковывает его, и перезапускает dns-сервер dnsmasq. Теперь нужно скормить наш файл с хостами dnsmasq’у. Для этого переходим во вкладку «Services», в ней по-умолчанию должна открыться вкладка «Services». Скриншот ниже.

Передвигаемся чуть ниже по странице до блока настроек «dnsmasq». Скриншот ниже

В поле «Additional DNSMasq Options» (выделено цифрой 3 на скриншоте) нужно вставить следующее:

addn-hosts=/tmp/hosts-blocklist

далее переместиться в самый конец страницы

и нажать «Save» (выделено цифрой 4 на скриншоте). После того, как настройки сохранятся и страница перезагрузится, нужно перезагрузить роутер. Для этого нужно спуститься в конец страницы, и нажать кнопку «Reboot Router» (выделено цифрой 5 на скриншоте). После того, как устройство перезагрузится, реклама начнет блокироваться.
При проверке урезания рекламы, должен быть такой вывод:

user@debian ~ $ nslookup counter.yadro.ru
Server:		192.168.1.1
Address:	192.168.1.1#53

Name:	counter.yadro.ru
Address: 0.0.0.0

user@debian ~ $

Бонус — скрипт генерации hosts-blocklist:

#!/bin/sh
echo 'Downloading source..'; wget -q -k -O hosts-blocklist.orig\
   'https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts';
sed '/ *#/d; /^ *$/d' hosts-blocklist.orig | sort | sed\
   '1i #source: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts' > hosts-blocklist;
echo '$$$$ CHECK HOSTS FILE CAREFULLY!!! $$$$';
grep -v '0.0.0.0' hosts-blocklist;
read -p "IS IT OK? (y/n): " SW;
if [ "$SW" = "y" ]
then
   echo 'Removing hosts-blocklist.orig'; rm -f hosts-blocklist.orig;
   echo 'Making hosts-blocklist.md5'; md5sum hosts-blocklist | tee hosts-blocklist.md5;
   echo 'Gzipping hosts-blocklist'; gzip -f hosts-blocklist;
   echo '$$$$ hosts-blocklist generated! Update ftp & md5sum! $$$$$';
else
   echo 'Removing hosts-blocklist.orig'; rm -f hosts-blocklist.orig;
   echo 'Removing hosts-blocklist'; rm -f hosts-blocklist;
   echo '$$$$ Checking failed. No updates. $$$$';
fi
exit 0;
Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s