Александр Рыжов Posted February 19, 2016 Posted February 19, 2016 Это решение позволяет заблокировать баннеры, счётчики на веб-страницах, рекламу в Android-приложениях с помощью hosts-файла. Было: Стало: Установите необходимые пакеты: opkg install dnsmasq-full iptables ndmq Поместите в файл /opt/etc/ndm/netfilter.d/010-intercept-dns.sh следующее содержимое: #!/bin/sh [ "$table" != "nat" ] && exit 0 lan_ip=$(ndmq -p 'show interface Bridge0' -P address) iptables -t nat -I PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination $lan_ip:65053 iptables -t nat -I PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination $lan_ip:65053 и сделайте скрипт исполняемым: chmod +x /opt/etc/ndm/netfilter.d/010-intercept-dns.sh Отредактируйте файл /opt/etc/dnsmasq.conf, добавив в него строки: no-resolv server=77.88.8.88#1253 server=77.88.8.2#1253 port=65053 Скачайте подходящий чёрный список с рекламными хостами и поместите его в файл /opt/etc/hosts. В примере ниже указан один из самых популярных: wget -O /opt/etc/hosts http://winhelp2002.mvps.org/hosts.txt Всё! Перегрузите роутер для того, чтобы настройки вступили в силу. 0. Убедитесь, что на ПК не прописаны вручную в св-вах сетевого соединения сторонние DNS-серверы. Если вы в сетевых настройках ПК ничего не меняли, то можете это не проверять. 1. Очистите DNS-кеш операционной системы (для Windows - ipconfig /flushdns) 2. Очистите DNS-кеш браузера, достаточно его закрыть и открыть по новой. На скриншотах выше погода с Gismeteo, если решение работает, то рекламные баннеры будут отсутствовать. С помощью правила iptables любые DNS-запросы от роутера (и его клиентов) «заворачиваются» на dnsmasq. Последний разрешает DNS-имена, при этом используя hosts-файл /opt/etc/hosts с чёрным списком доменов. С настройками по умолчанию для разрешения остальных DNS-имён будет использоваться Яндекс.DNS вместо провайдерских DNS. 1. Теряем возможности встроенного в прошивку DNS-сервера/прокси. В частности, возможность кеширования DNS-запросов на роутере и возможность обращения к ресурсом локалки по DNS-именам. Если нынче DNS-запросы и без того замечтательно кешируются операционкой ПК и браузером, то разрешение DNS-имён в локалке может стать проблемой. Скажем, придётся обращаться к NAS'у в локалке не по имени \\MyNas\, а по IP: \\192.168.1.4\. 2. В связи с тем, что мы отказываемся от провайдерских DNS-серверов, мы теряем возможность разрешения DNS-имён для локальных ресурсов провайдера. Если для установления L2TP/PPTP-соединения сервер задан DNS-именем, например, l2tp.beeline.ru, то лучше вписать в веб-интерфейс кинетика адрес сервера в виде ip. Пункт «Что теряем» можно будет исключить, если поправить правила iptables так, чтобы заворачивались только DNS-запросы от самого роутера. 1 Quote
ndm Posted February 19, 2016 Posted February 19, 2016 Поместите в файл /opt/etc/ndm/netfilter.d/010-intercept-dns.sh следующее содержимое: #!/bin/sh [ "$table" != "nat" ] && exit 0 lan_ip=$(ndmq -p 'show interface Bridge0' -P address) iptables -t nat -I PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination $lan_ip:65053 iptables -t nat -I PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination $lan_ip:65053 ... Есть команда opkg dns-override. Она гасит внутренний прокси (он начинает работать в RPC-режиме), когда подключают /opt. И 53-й порт свободен. Quote
edvard69 Posted February 19, 2016 Posted February 19, 2016 (edited) Установите необходимые пакеты: opkg install dnsmasq-full iptables ndmq /opt/root # opkg install dnsmasq-full iptables ndmq Unknown package 'dnsmasq-full'. Package iptables (1.4.12-2) installed in root is up to date. Package ndmq (2.06.A.6.0-12) installed in root is up to date. Collected errors: * opkg_install_cmd: Cannot install package dnsmasq-full. /opt/root # Не хочет устанавливаться. opkg update, opkg upgrade делал. Или я ставлю не на ту систему? Edited February 19, 2016 by Guest Quote
Александр Рыжов Posted February 19, 2016 Author Posted February 19, 2016 Не хочет устанавливаться. Поднимите глаза на название темы, слово в квадратных скобках.Есть команда opkg dns-override. Она гасит внутренний прокси (он начинает работать в RPC-режиме), когда подключают /opt. И 53-й порт свободен.Ага, спасибо за напоминание. В первом посте темы надо лишь подправить правило iptables для того, чтобы не терять все плюшки встроенной в прошивку DNS-службы. Необходимо заворачивать не весь трафик на 53 порт, а только исходящий от самого роутера. Только, вот, в iptables я мягко говоря, не силён. Quote
edvard69 Posted February 19, 2016 Posted February 19, 2016 Поднимите глаза на название темы, слово в квадратных скобках. Да, у меня не [Entware], а keenopt. Сорри. Quote
elf_ua Posted February 19, 2016 Posted February 19, 2016 как проверить работу iptables? iptables -t nat -I PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.0.1:65053 не вижу этой цепочки в таблице по команде iptables --list|grep 65053 Ну и что-то не завелось... Quote
ndm Posted February 19, 2016 Posted February 19, 2016 как проверить работу iptables?iptables -t nat -I PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.0.1:65053 не вижу этой цепочки в таблице по команде iptables --list|grep 65053 Ну и что-то не завелось... кэп подсказывает, надо iptables -t nat --list Quote
elf_ua Posted February 19, 2016 Posted February 19, 2016 как проверить работу iptables?iptables -t nat -I PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.0.1:65053 не вижу этой цепочки в таблице по команде iptables --list|grep 65053 Ну и что-то не завелось... кэп подсказывает, надо iptables -t nat --list спасибо Тогда не в iptables дело. Но не пойму все равно, где затык. Мой dnsmasq.conf: no-resolv server=8.8.8.8#1253 server=8.8.4.4#1253 port=65053 addn-hosts=/opt/etc/hosts log-queries ЗЫ. А где этот лог посмотреть? Беру любой хост из /opt/etc/hosts и без проблем захожу с любого девайса из локальной сети. Quote
vlad Posted February 20, 2016 Posted February 20, 2016 как проверить работу iptables?iptables -t nat -I PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.0.1:65053 не вижу этой цепочки в таблице по команде iptables --list|grep 65053 Ну и что-то не завелось... кэп подсказывает, надо iptables -t nat --list спасибо Тогда не в iptables дело. Но не пойму все равно, где затык. Мой dnsmasq.conf: no-resolv server=8.8.8.8#1253 server=8.8.4.4#1253 port=65053 addn-hosts=/opt/etc/hosts log-queries ЗЫ. А где этот лог посмотреть? Беру любой хост из /opt/etc/hosts и без проблем захожу с любого девайса из локальной сети. У меня схема работает, реклама блокируется.. Может вам стоит прописать dns от яндекс.? Реклама блокируется даже если нахожусь в другой сети, например на работе,при условии если включен openvnp. Quote
elf_ua Posted February 20, 2016 Posted February 20, 2016 У меня схема работает, реклама блокируется.. Может вам стоит прописать dns от яндекс.? Реклама блокируется даже если нахожусь в другой сети, например на работе,при условии если включен openvnp. Поменял, но в этом не было особо смысла. Где-то проблема в другом месте. В логах веб-морды видно, что dnsmasq читает список хостов dnsmasq[512] read /opt/etc/hosts - 13549 addresses , но к нему не приходят запросы. Пробовал повесить на стандартный 53-й порт, но естественно не запустился . dnsmasq[364] failed to create listening socket for port 53: Address already in use команда opkg dns-override не проходит /opt/etc/ndm/netfilter.d # opkg dns-override opkg: unknown sub-command dns-override Quote
Александр Рыжов Posted February 20, 2016 Author Posted February 20, 2016 Где-то проблема в другом месте. В логах веб-морды видно, что dnsmasq читает список хостов dnsmasq[512] read /opt/etc/hosts - 13549 addresses , но к нему не приходят запросы. Пробовал повесить на стандартный 53-й порт, но естественно не запустился . Здесь участвуют всего два звена: правило iptables и dnsmasq.Проверка iptables Проверить то, что iptables-правило сработало можно с помощью: iptables-save | grep 65053 Если правила нет, то можете запустить его руками и посмотреть где ошибка: table=nat /opt/etc/ndm/netfilter.d/010-intercept-dns.sh Проверка работы dnsmasq Проверить то, что dnsmasq запущен можно с помощью: pidof dnsmasq Если PID процесса не выводится, значит, процесса нет. Надо посмотреть в системном журнале на что жалуется dnsmasq при старте: /opt/etc/init.d/S56dnsmasq start Проверьте также, что в настройках кинетика отключены DNS-службы Yandex.DNS/SkyDNS. Клиенты кинетика должны получать DNS автоматически. Настройки вступят в силу после сброса DNS-кэша операционной системы и браузера. Quote
elf_ua Posted February 20, 2016 Posted February 20, 2016 iptables - OK /opt/etc # iptables-save | grep 65053 -A PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.0.1:65053 -A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.0.1:65053 dnsmasq - OK PID есть и netstat говорит, что 65053 слушает. # netstat -ltnp|grep 65053 tcp 0 0 0.0.0.0:65053 0.0.0.0:* LISTEN 512/dnsmasq tcp 0 0 :::65053 :::* LISTEN 512/dnsmasq В Журнале сообщений системы ошибок нет. Никаких SkyDNS и подобных не активировано. Для локальной сети по DHCP выдается DNS 192.168.0.1, кеш сбрасывается каждый раз и для теста пробую новые хосты из скачанного файла. $ nslookup www.winaproduct.com Server: 192.168.0.1 Address: 192.168.0.1#53 Non-authoritative answer: www.winaproduct.com canonical name = winaproduct.com. Name: winaproduct.com Address: 72.37.217.251 Единственное, что в настройках роутера указаны DNS провайдера и гугля: НО! Если ставлю 192.168.0.1, то DNS запросы перестают ходить и на Зухеле и в локальной сети. Nslookup - can't resolve А в логах Зухеля валится: Feb 20 13:04:44ndnproxy Proxy loop detected: 192.168.0.1 <-> 192.168.0.1, request dropped. Feb 20 13:04:44ndnproxy DNS server 192.168.0.1 inactivated. Тогда могу запустить dnsmasq на стандартном 53-м порту, но все равно не работает. Осталась идея запустить захват пакетов на Зухеле и посмотреть куда идут DNS запросы из локальной сети. Quote
vlad Posted February 28, 2016 Posted February 28, 2016 Привет форумчане!Помогите решить проблему.Имеется zyxel Keenetic 2 прошивка v2.05(AAFG.8)C2 с установленной entware-ng. Установил Блокировку рекламы,все работает хорошо на айфоне,реклама блокируется,интернет работает,но на ноутбуке пропал интернет.Выдает ошибку DNS_PROBE_FINISHED_BAD_CONFIG,подскажите как решить эту проблему??Если я включаю гостевую сеть,то через нее интернет на ноутбуке появляется,но по проводу и через защищенную сеть вай фай этого не происходит.Пробовал прописать dns на ноутбуке,не помогло,пробовал прописать dns на роутере так же не помогло... Quote
vlad Posted March 1, 2016 Posted March 1, 2016 Привет форумчане!Помогите решить проблему.Имеется zyxel Keenetic 2 прошивка v2.05(AAFG.8)C2 с установленной entware-ng. Установил Блокировку рекламы,все работает хорошо на айфоне,реклама блокируется,интернет работает,но на ноутбуке пропал интернет.Выдает ошибку DNS_PROBE_FINISHED_BAD_CONFIG,подскажите как решить эту проблему??Если я включаю гостевую сеть,то через нее интернет на ноутбуке появляется,но по проводу и через защищенную сеть вай фай этого не происходит.Пробовал прописать dns на ноутбуке,не помогло,пробовал прописать dns на роутере так же не помогло... Я один с такой проблемой???? Quote
Александр Рыжов Posted March 2, 2016 Author Posted March 2, 2016 Отсутствие ответа означает строго одно: отсутствие интереса к вопросу. Quote
vlad Posted March 2, 2016 Posted March 2, 2016 Отсутствие ответа означает строго одно: отсутствие интереса к вопросу. Придется пользоваться только гостевым wi-fi( Quote
le_ Posted April 25, 2016 Posted April 25, 2016 Подскажите, пожалуйста, при использовании описанного здесь метода блокировки рекламы, воспроизводится ли у вас видео на youtube, в котором предусмотрен показ рекламы (вставочки такие, которые желтой полоской на полосе с бегунком обозначены)? У меня не воспроизводится. Ни в приложении под iOS, ни на сайте. Вот пример: Плеер просто висит с черным экраном в таком виде: Quote
vlad Posted April 26, 2016 Posted April 26, 2016 Подскажите, пожалуйста, при использовании описанного здесь метода блокировки рекламы, воспроизводится ли у вас видео на youtube, в котором предусмотрен показ рекламы (вставочки такие, которые желтой полоской на полосе с бегунком обозначены)?У меня не воспроизводится. Ни в приложении под iOS, ни на сайте. Вот пример: Плеер просто висит с черным экраном в таком виде: У меня видео воспроизводится нормально,реклама блокируется как на тв так и на гаджетах.Никаких черных вставок не было ни разу. Quote
vasek00 Posted April 26, 2016 Posted April 26, 2016 Это конечно что-то host <- http://winhelp2002.mvps.org/hosts.txt более 15000 строчек типа 0.0.0.0 имя и наверное не предел для мощности роутера прогонять через себя. Quote
vlad Posted April 26, 2016 Posted April 26, 2016 Это конечно что-то host <- http://winhelp2002.mvps.org/hosts.txtболее 15000 строчек типа 0.0.0.0 имя и наверное не предел для мощности роутера прогонять через себя. Загрузка цп 3% оперативной памяти 25%. Спокойно тянет. Роутер giga 3 1 Quote
vasek00 Posted April 27, 2016 Posted April 27, 2016 Загрузка цп 3% оперативной памяти 25%. Спокойно тянет. Роутер giga 3 Giga 3 это хорошо, как бы узнать например 7620. Quote
vlad Posted April 27, 2016 Posted April 27, 2016 Загрузка цп 3% оперативной памяти 25%. Спокойно тянет. Роутер giga 3 Giga 3 это хорошо, как бы узнать например 7620. До giga 3 стоял keenetic 2, нагрузка такая же была.! Quote
NikIv Posted April 27, 2016 Posted April 27, 2016 Загрузка цп 3% оперативной памяти 25%. Спокойно тянет. Роутер giga 3 Giga 3 это хорошо, как бы узнать например 7620. До giga 3 стоял keenetic 2, нагрузка такая же была.! На гига 2 все равно мощнее процессор чем девайсы на 7620. Quote
vlad Posted April 27, 2016 Posted April 27, 2016 Giga 3 это хорошо, как бы узнать например 7620. До giga 3 стоял keenetic 2, нагрузка такая же была.! На гига 2 все равно мощнее процессор чем девайсы на 7620. Почему мощнее? Quote
NikIv Posted April 27, 2016 Posted April 27, 2016 vlad -RT6856 MIPS34Kc @700MHz гига2 -MT7620A MIPS24Kc @580MHz это о чем говорим , разница заметна? Quote
le_ Posted April 27, 2016 Posted April 27, 2016 Вместо DNS yandex'a можно использовать DNS rejector.ru Quote
vlad Posted April 27, 2016 Posted April 27, 2016 vlad-RT6856 MIPS34Kc @700MHz гига2 -MT7620A MIPS24Kc @580MHz это о чем говорим , разница заметна? Разница заметна. Даже такой проц легко потянет блокировку рекламы.. Quote
vasek00 Posted April 27, 2016 Posted April 27, 2016 vlad-RT6856 MIPS34Kc @700MHz гига2 -MT7620A MIPS24Kc @580MHz это о чем говорим , разница заметна? K-II - RT6856 MIPS34Kc @700MHz Я заметил разницу при сравнении K-II и Viva (в течении нескольких дней обычной эксплуатации) на PPPoE (на канале 100) при подключенных/не подключенных wi-fi клиентах, так же проверил и на PPTP (на канале 50Мбит). Если на роутер смотреть как на черную коробку и не заглядывать в WEB не использовать USB то обычный пользователь может и не заметит разницы, страницы открываются и ладно. В моем случае Viva был отдан обратно. Quote
SplinterVS Posted June 26, 2016 Posted June 26, 2016 Поместите в файл /opt/etc/ndm/netfilter.d/010-intercept-dns.sh следующее содержимое: #!/bin/sh [ "$table" != "nat" ] && exit 0 lan_ip=$(ndmq -p 'show interface Bridge0' -P address) iptables -t nat -I PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination $lan_ip:65053 iptables -t nat -I PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination $lan_ip:65053 и сделайте скрипт исполняемым: chmod +x /opt/etc/ndm/netfilter.d/010-intercept-dns.sh если этого файла (010-intercept-dns.sh) нет где его взять? Quote
razr- Posted June 26, 2016 Posted June 26, 2016 прошу подсказку в логе вываливается Opkg::Manager: /opt/etc/ndm/netfilter.d/010-intercept-dns.sh: exit code 127. Opkg::Manager: /opt/etc/ndm/netfilter.d/010-intercept-dns.sh: /opt/etc/ndm/netfilter.d/010-intercept-dns.sh: exit: line 3: Illegal number: 0. Opkg::Manager: /opt/etc/ndm/netfilter.d/010-intercept-dns.sh: exit code 2. при запуске правила в консоли table=nat /opt/etc/ndm/netfilter.d/010-intercept-dns.sh пишет что файл скрипта не найден при этом если вбивать цепочки iptables руками, то все работает Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.