Wi-CAT LLC

Wireless Comprehensive Advanced Technology. Build your network now.

Wi-CAT LLC
Навигация Форума
Вы должны войти, чтобы создавать сообщения и темы.

(новинка) DNS block - auto adblock/contentfilter

К НГ решил добавить плюшку которую собирался давно сделать. Будет в 7.7.8 к утру. В гите уже доступно.

По сути это реалиазация adblock для блокировки рекламы, малварии прочей нечисти на уровне DNS. UI в течении недели сделаем, без UI в 7.7.8 уже будет.

Объясняю как юзать без UI.

Подключаемся по ssh, командуем nvram_set dns_adblock 1 && reboot.

Ждём загрузки, смотрим в лог, видим:

[SF1@/]# cat /var/log/messages | grep -i adblock
Dec 23 16:59:57 adblock: Get ad hosts lists from http://winhelp2002.mvps.org/hosts.txt
Dec 23 17:00:00 adblock: Get ad hosts lists from http://hosts-file.net/ad_servers.txt
Dec 23 17:00:07 adblock: Get ad hosts lists from https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
Dec 23 17:00:07 adblock: Get ad hosts lists from http://www.malwaredomainlist.com/hostslist/hosts.txt
Dec 23 17:00:08 adblock: Filter and remove duplicated records.
Dec 23 17:00:28 adblock: 57737 domains blocked by DNS.
Dec 23 17:00:28 adblock: Next adblock update after 24h.


Испольуется 4ре списка доменов (адреса в логе), всего 57 тысяч узлов в блокировке, обновление раз в 24 часа на автомате.

Загрузка и разбор занимают достаточно значимое время потому после загрузки может пройти до минуты пока блокировка заработает.

Если что-то лишнее заблокировалось, достаточно в переменную dns_adblock_skip добавить домен где порезалось. Например исключить домены foo.com и bar.net из блокировки можно сказав nvram_set dns_adblock_skip "foo.com|bar.net" && reboot.

Вместо reboot ессно можно использовать service dnsserver adrestart

Так же поддерживается пользовательский список блокировки, переменная dns_userblock, в ней достаточно перечислить домены через пробел и сказать service dnsserver restart

Из блокировки исключены:

 unblocklist="liveinternet.ru|counter.yadro.ru|^yadro.ru|top100.ru|mc.yandex.ru|metrica|openstat.net"
    unblocklist="$unblocklist|google-analytics.com|googletagmanager.com|^stats.g.doubleclick.net|clustrmaps.com"

Ибо блокировка этих безобидных счётчиков не редко корёжит отображение сайтов. Плюс к рекламе это отношения не имеет, а забирать аналитику у SEO == лишать владельцев сайта инструментов для улучшения ресурса.

Что бы ваши пользователи не могли обойти блокировки через смену DNS достаточно взвести переменную dnsToLocalRedir в 1 и на уровне фаервола все DNS запросы будут завёрнуты на локальный DNS в роутере на котором осуществляется блокировка.

В перспективе сделаем статью наглядно как это юзать через UI.

 

Вот это просто огонь!

Будет ли возможность убирать списки по умолчанию и добавлять свои?

Скрипт лежит на rwfs т.е. доступен для редактирования и даже замены из пакета. Тот кто в курсе что и на что менять + способен оттестировать это дело что бы убедиться что списки корректно парсятся думаю осилит использовать RWFS в UI выносить изменение списков чревато, да и штатные выбраны не от балды.

Если есть что предложить по спискам проще сюда отписать подумаем добавить или заменить чем.

Ну и в силу того что используется штатный wget из бизибокса и его же минимальная реализация поддержки ssl, например источник с adway нам доступен не будет. Благо я посмотрел и он весь дублируется из других источников.

 

https://forums.lanik.us/viewtopic.php?f=102&t=32524 описание и инфа

ссылка на список http://cdn.raletag.gq/rueasyhosts.txt

Ок. Попозже гляну, но бегло там на 99% тоже самое что уже есть. Добавлю и сравним сколько новых доменов добавит. Сильно сомневаюсь что хоть пара сотен наберётся.

Итого ваш лист содержит 51953 записи
Без него 57743
С ним 106787

Т.е. пересекаются списки где-то по 3м тысячам позиций.

Память потребляемая dnsmasq увеличилась до 16Мб что максимально критично.

Т.е. все, списки сформированы больше их не трогаем, а то это уже и так слабоконтроллируемая штука. Чую придётся на своей площадке в итоге делать формировалку листов и уже готовые подгружать. Тяжко парсить такие объёмы текста даже на 7621 (почти 30с), на 7620 раза в 2 точно дольше будет.

К утру ищите в 7.7.9 вместе с UI для adblock.

Спасибо!

7.7.9 залито на sf.net

Получилось как-то так:

[SF1@/]# cat /var/log/messages | grep -i adbl
Dec 26 23:24:25 adblock: Get ad hosts lists from http://cdn.raletag.gq/rueasyhosts.txt
Dec 26 23:24:27 adblock: Get ad hosts lists from http://winhelp2002.mvps.org/hosts.txt
Dec 26 23:24:30 adblock: Get ad hosts lists from http://hosts-file.net/ad_servers.txt
Dec 26 23:24:35 adblock: Get ad hosts lists from https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
Dec 26 23:24:36 adblock: Get ad hosts lists from http://www.malwaredomainlist.com/hostslist/hosts.txt
Dec 26 23:24:36 adblock: Filter and remove duplicated records.
Dec 26 23:25:14 adblock: 106787 domains blocked by DNS.
Dec 26 23:25:15 adblock: Next adblock update after 24h.

Просьба проверить у себя всё ли ок.

Загруженные файлы:
  • Вам нужно войти, чтобы просматривать прикрепленные файлы..

Все ок, никаких проблем.

Отлично.

Жаль, что видео-реклама на YouTube не блокируется, на неё и подобные чаще всего жалуются(хотя там адресов наверно миллион).

С другой стороны не удалось зайти через обозреватель на почту mail.ru, поскольку их (редиректор?) r.mail.ru будучи фильтрованным возвращал 0.0.0.0. Причём блокировка после выключения в роже не перестаёт работать(nslookup r.mail.ru 127.0.0.1 по SSH после отключения блокировки также показывает нули). После перезапуска маршрутизатора уже нормально отключено.

З.Ы. Прикрепил журнал. Там кстати ещё ошибка с ddns.asp, видать где-то хвост остался.

Загруженные файлы:
  • Вам нужно войти, чтобы просматривать прикрепленные файлы..

Видео реклама ютуба грузится с тех же серверов что и видео ее никак не заблокировать средствами dns. У меня нет никаких проблем с Mail.ru изначально, ничего не менял вобще.

Это да, потому и жаль. На почте же у меня используется двухфакторная аутентификация, возможно поэтому меня перенаправляет r.mail.ru (который вроде как на многих их сервисах используется).

Меня при заходе на r.mail.ru редиректит сюда https://target.my.com/ хотя r.mail.ru я нашел в этом списке http://hosts-file.net/ad_servers.txt должно же быть сразу name not resolved или я ошибаюсь?

Цитата: CHIPSET от 27/12/2018, 18:56

Жаль, что видео-реклама на YouTube не блокируется, на неё и подобные чаще всего жалуются(хотя там адресов наверно миллион).

Тут без шансов.

С другой стороны не удалось зайти через обозреватель на почту mail.ru, поскольку их (редиректор?) r.mail.ru будучи фильтрованным возвращал 0.0.0.0. Причём блокировка после выключения в роже не перестаёт работать(nslookup r.mail.ru 127.0.0.1 по SSH после отключения блокировки также показывает нули). После перезапуска маршрутизатора уже нормально отключено.

Там щас ещё будет переделываться чутка.

З.Ы. Прикрепил журнал. Там кстати ещё ошибка с ddns.asp, видать где-то хвост остался.

Где там кстати ошибка. Вот где-то там это где? =) Ну наглядно можно же как-о показать.

Цитата: alex66 от 27/12/2018, 21:11

Меня при заходе на r.mail.ru редиректит сюда https://target.my.com/ хотя r.mail.ru я нашел в этом списке http://hosts-file.net/ad_servers.txt должно же быть сразу name not resolved или я ошибаюсь?

Это уже как ваш браузер отработает. Ему DNS отдал NULL там его дело куда его на этот ответ понесёт. В linux его занесёт на localhost. У меня например на локалхосте http крутиться и ровно туда и заносит.

А вот список этот придётся исключить. Там не только для mail.ru редиректоров напихали. Выкинем не жалко, оставшихся хватит. Исключать кусками точно умрёшь.

Надо понимать, что это в любом случае костыль и всяко будут и ложные срабатывания и не срабатывания и т.д.

Цитата: CHIPSET от 27/12/2018, 18:56

Причём блокировка после выключения в роже не перестаёт работать(nslookup r.mail.ru 127.0.0.1 по SSH после отключения блокировки также показывает нули).

Пофиксил, забыли сделать удаление листа принудительное при отключении.

Т.е. смысл  том, что если включено то лист всегда только заменяется новым что бы не было пропусков. А при disable получается так что dnsmasq его уже загрузил в память, а только потом скрипт его зачистил. Просто нужно удалять раньше это не проблема от слова совсем. 2 строчки кода.

Основная польза от подхода с блокировкой на уровне DNS не в рекламе по сути. А в возможности всякую малварь подбить на подлёте. Что для виндовс юзверей must have. Ну и меня лично андроидная реклама торчащая из всех приложений доколупала, а аппарат рутовать низя.

В браузерах фильтровать проще плагинами для них. оно и выкусит аккуратно и т.д. Этот вариант полезен скорее для всяких ведроидо в вчасти резки. Но в отличии от плагинов к браузерам (кстати вроде были и для резки рекламы в тыртубе) это таки кувалда, а не скальпель.

Кривой редирект на ddns тоже того, пофиксили.

Да, это был самый жирный забугорный список:

[SF1@/]# cat /var/log/messages | grep -i adblock
Dec 27 22:05:05 adblock: Get ad hosts lists from http://cdn.raletag.gq/rueasyhosts.txt
Dec 27 22:05:07 adblock: Get ad hosts lists from http://winhelp2002.mvps.org/hosts.txt
Dec 27 22:05:09 adblock: Get ad hosts lists from https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
Dec 27 22:05:10 adblock: Get ad hosts lists from http://www.malwaredomainlist.com/hostslist/hosts.txt
Dec 27 22:05:10 adblock: Filter and remove duplicated records.
Dec 27 22:05:31 adblock: 66749 domains blocked by DNS.
Dec 27 22:05:32 adblock: Next adblock update after 24h.

Ну посмотрим по факту что получилось.

Залил 7.7.10

Планируется ли расширение функционала адблока в дальнейшем? Например сама фильтрация на роутере сейчас вполне заменяет собой такие средства как Pihole и AdGuard Home для работы последнего ранее я использовал рапсбери. В обоих проектах есть query log, видно что куда ходит и сколько чего блокируется. Это основное чего хотелось бы в первую очередь, потому что сейчас фильтрация происходит, но лог ее не доступен. Меня бы устроила возможность просмотреть лог например по команде через ssh необязательно через gui.

Ну дык включаете отладку dnsmasq и смотрите, правда не уверен что там вообще предусмотрен матюгальник для этого. Логирование нужно исключительно на уровне отладки. Если всё работает так как нужно не должно быть никакой необходимости вообще в UI роутера лезть. К этому и стремимся.

Т.е. работа в необслуживаемом режиме от и до. Доступ к шеллу есть, rwfs что бы хранить свои изменения тоже. Остаётся только разобраться с инструментарием и использовать оный.

Городить какие-то там отдельные счётчики и прочее хоть в UI хоть в отдельный лог никто не будет, т.к. не стоит сделать нибирианский пепелац, стоит задача получить простоё и надёжное решение не требующее вообще какого-либо контроля со стороны юзверя.

Так что расширяться точно адблоки никуда не будут. Да и не куда. Кому может понадобиться данные по срабатыванию правил блокировки думаю в состоянии осилить man на dnsmasq почитать и врубить отладку. Остальным он что мёртвому припарки.

P.S. adguard home, например это вообще гибрид уже с ежом внутри которого в т.ч. свой dhcp и dnsproxy ессно заточенные под какие-то изыски фильтрации. Для роутера эта задача не является основной и близко. Потому городушки городить смысла нет. Если мы решим отнять хлеб у всяких guard-ов и т.д., то тогда появиться смысл рожать подобный гибрид, вести свои списки, наворачивать всякую лабуду типа кучи рюшечек, статистики, индивидуальных профилей и т.д. Но пока adblock в роутере эдо просто дополнительная плюшка для мягкого (по возможности) отбрасывания мусора в сети.

Статья детально рассказывающая о adblock в частности и настройках DNS  в общем https://wi-cat.ru/configure-wive-ng/dns-settings-adblok/

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: