Comments 49
Спасибо за пост.
Буду пытаться сделать нечто подобное на моем старике Linksys wrt54gl.
Буду пытаться сделать нечто подобное на моем старике Linksys wrt54gl.
Для ddwrt:
1. Включить dnsmasq, local dns в Services
2. Сохранить в Administration/Commands/Firewall:
1. Включить dnsmasq, local dns в Services
2. Сохранить в Administration/Commands/Firewall:
if test -s /tmp/hosts0
then
rm /tmp/hosts0
fi
wget -O - http://someonewhocares.org/hosts/zero/hosts >/tmp/hosts0
grep addn-hosts /tmp/dnsmasq.conf || echo "addn-hosts=/tmp/hosts0" >>/tmp/dnsmasq.conf
killall dnsmasq
dnsmasq --conf-file=/tmp/dnsmasq.conf
Кому вообще лень заморачиваться, есть dns от яндекса. При чем, в нескольких вариантах.
А там же по моему порезанные все IP заблокированные роскомнадзором не? ;)
Еще бы решить как на rt-n16 с олеговской сделать подобное с автопополнением, идея конечно понятна, нужно вот раскопать где это там ;)
Еще бы решить как на rt-n16 с олеговской сделать подобное с автопополнением, идея конечно понятна, нужно вот раскопать где это там ;)
хм, помню opewrt не все может, мне не удалось запустить например нормально на своем железе Multicast to HTTP Proxy, отключение вафли по времени и что то еще. Может конечно плохо искал или думал.
Вот только например на tplink1043 не работает апаратный nating что не дает толком большой скорости
А вот про это можете подробнее? Сам использую TPLink 1043nd v1 c OpenWrt BarrierBreaker 14.07, скорость закачки торрентов, к примеру, аналогична стандартной прошивке. Чем мне может грозить отсутствие аппаратного nating, есть ли какие-то сравнения, подробности?
А как он поможет? Судя по описанию там только блокировка adult-рекламы.
А какой формат у /root/hosts/unchanged? Вида: 0.0.0.0 s.adframesrc.com, я правильно понял?
Утащил в избранное. Попробую провернуть подобное. Реклама достала уже
Еще несколько хостов со списком рекламы (выдрано из приложения adaway под андроид)
hosts-file.net/ad_servers.txt
adaway.org/hosts.txt
pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
Возможно придется слить все файлики в один, отсортировать и проверить на дубликаты.
hosts-file.net/ad_servers.txt
adaway.org/hosts.txt
pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
Возможно придется слить все файлики в один, отсортировать и проверить на дубликаты.
Сам использую томато / на асус н16
Проблема с хостс, то что нельзя применять wildcards и блокировать вес домейн.
Например, analytics от Adobe: 2o7.net, у него куча саб-домейнов, и все их в hosts муторно писать
Что нас спасёт? dnsmasq.conf
address=/2o7.net/127.0.0.1
с этих пор, любой DNS запрос с *.2о7.нет будет отдаваться как 127.0.0.1
Проблема с хостс, то что нельзя применять wildcards и блокировать вес домейн.
Например, analytics от Adobe: 2o7.net, у него куча саб-домейнов, и все их в hosts муторно писать
Что нас спасёт? dnsmasq.conf
address=/2o7.net/127.0.0.1
с этих пор, любой DNS запрос с *.2о7.нет будет отдаваться как 127.0.0.1
файлик adfree-tmp можно и удалять, зачем лишний мусор?
А еще лучше качать этот файлик на /tmp/ ;-)
Или так :)
wget http://winhelp2002.mvps.org/hosts.txt -O - | sed 's/^\(.*\).$/\1/' adfree-tmp > /root/hosts/adfree
С учетом всего вышесказанного правим /etc/config/dhcp
и правим /root/hosts/upd-adfree.sh
А в кроне я сделал раз в неделю, чаще обновлять смысла не вижу
Кстати вариант автора сохраняет результат скрипта в /root/, а не там как задуманно в /root/hosts/
list addnhosts '/tmp/adfree'
и правим /root/hosts/upd-adfree.sh
##adfree
wget http://winhelp2002.mvps.org/hosts.txt -O - | sed 's/^\(.*\).$/\1/' adfree-tmp > /tmp/adfree
## dns restart to update
/etc/init.d/dnsmasq restart
А в кроне я сделал раз в неделю, чаще обновлять смысла не вижу
0 1 * * 7 /root/hosts/upd-adfree.sh
Кстати вариант автора сохраняет результат скрипта в /root/, а не там как задуманно в /root/hosts/
и еще не забыть скрип в автозагрузку сунуть, чтоб при ребуте все поднялось, иначе в /tmp/ не будет списка блокируемых доменов
вот это точно работает :)
cd /tmp
wget http://winhelp2002.mvps.org/hosts.txt -O adfree-tmp
sed 's/^\(.*\).$/\1/' adfree-tmp > adfree
rm -f adfree-tmp
/etc/init.d/dnsmasq restart
Возможен ли сценарий что роутер повиснет если сервер вернет слишком большой файл?
Жаль что у wget в openwrt нет флага ограничения на размер полученного файла.
Кстати почему вы сразу не перенаправляете вывод wget на sed без использования промежуточного файла?
Жаль что у wget в openwrt нет флага ограничения на размер полученного файла.
Кстати почему вы сразу не перенаправляете вывод wget на sed без использования промежуточного файла?
там файлик то всего чуть больше 500 кб, почему сервер должен возвратить большой файл? А по второму вопросу — работает и ладно, не жалко оперативки для временного файла.
Где-то читал про авиакатастрофу вызванную переполнением буфера. Поднимаешься на определенную высоту и хлоп, переполнение. Когда писали софт просто не рассчитывали что самолет сможет подняться на такую высоту. В недорогих моделях обычно 16-32мб, в дорогих — 128. Будет плохое настроение или плохое чувство юмора у владельца сервера и оставит он вас без связи.
это список из официального приложения для андроид AdFree. Не будут же они делать г*вно своим пользователям. А если сделают случайно или ошибочно, ничего страшного не произойдет, а вот репутация будет подмочена.
По user agent можно разный контент возвращать, для своего приложения одно, для вашего роутера другое.
Знакомый вебмастер такое сделал когда заметил что картинки с нашего сайта используются на чужом сайте, заменил изображение чайником.
Да и сильно-ли пострадала репутация этого Magic Lantern?
Знакомый вебмастер такое сделал когда заметил что картинки с нашего сайта используются на чужом сайте, заменил изображение чайником.
Да и сильно-ли пострадала репутация этого Magic Lantern?
А зачем в конце adfree-tmp оставили?
А зачем рестартовать демона, когда можно просто sighup послать?
А зачем рестартовать демона, когда можно просто sighup послать?
wget http://winhelp2002.mvps.org/hosts.txt -O - | sed 's/^\(.*\).$/\1/' > /tmp/adfree killall -SIGHUP dnsmasq
в начало скрипта стоит добавить задержку на случайное время, чтобы сервер с файлом hosts не ронять
random1000=`dd if=/dev/urandom count=1 2>/dev/null | uuencode -m - | head -n 2 | tail -n 1| tr -cd 0-9 | head -c 3`
randomSec=`dc -e $random1000 -e '3600 * 1000/p'`
sleep $randomSec
Обратный вопрос: А есть список сайтов с большим количеством рекламы? Хочется списки проверить :)
Уважаемые %habrapeople%, после прочтения поста в голове возник вопрос:
Блочить на уровне файрвола железки — не всё так просто, а держать прозрачный web-прокси для этого — решение, но только для http трафика.
Для решения в настройках dhcp первым dns был прописан адрес маршрутизатора, подготовлены списки и переведены политкорректный для импорта формат:
Полученный файл
Итого у нас 2802 статических маршрутов на loopback в таблице (эмпирически доказано что при импортировании ~5500 записей — железка встает почти колом), после ребута и тестового прогона на пару часов имеем Free Memory 6.0 MiB, CPU Load 0..2%. Как автоматически выполнять аналогичную по смыслу операцию без использования дополнительной машины (только средствами самого микротика) по расписанию — ещё не придумал.
Очень хотелось бы услышать мнения более опытных товарищей — на сколько таковое решение пригодно к жизни? На данный момент железка стоит дома, трафика ходит не много, активный серфинг возможен лишь с 2х устройств в одну единицу времени
«А что если вместо хостов dnsmasq
для достижения аналогичного результата использовать таблицу статических DNS маршрутов на Mikrotik hAP lite (650MHz @ RAM 32 Mb)?»
Блочить на уровне файрвола железки — не всё так просто, а держать прозрачный web-прокси для этого — решение, но только для http трафика.
Для решения в настройках dhcp первым dns был прописан адрес маршрутизатора, подготовлены списки и переведены политкорректный для импорта формат:
# Скачиваем списки, и аккуратно складываем их под именами ./hosts_list.1 , ./hosts_list.2 и т.д.
$ src=('http://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext' 'https://adaway.org/hosts.txt'); i=0; for file in ${src[*]}; do i=$((i+1)); wget --no-check-certificate -O "./hosts_list.$i" "$file"; done;
# Грепаем всё что начинается на '127.0.0.1 ', удаляем комменты, оставляем только имена доменов,
# убираем дубликаты, убираем пустые строки, и оформляем каждый домен в виде команды для импорта
$ in="./hosts_list.*" && out="./adblock_dns.rsc" && host='127.0.0.1'; echo "/ip dns static" > $out && grep '127.0.0.1 ' $in | grep -v '^#' | cut -d' ' -f 2 | sort -u | grep . | sed "s/^/add address=$host name=/" >> $out && rm -f $in; wc -l $out;
Полученный файл
adblock_dns.rsc
был залит по ftp на железку, в шеле выполнено:# грохаем все имеющиеся записи в таблице статических DNS маршрутов
/ip dns static remove [/ip dns static find]
# Импортируем загруженный файл
/import adblock_dns.rsc
# Убираем за собой
/file remove adblock_dns.rsc
Итого у нас 2802 статических маршрутов на loopback в таблице (эмпирически доказано что при импортировании ~5500 записей — железка встает почти колом), после ребута и тестового прогона на пару часов имеем Free Memory 6.0 MiB, CPU Load 0..2%. Как автоматически выполнять аналогичную по смыслу операцию без использования дополнительной машины (только средствами самого микротика) по расписанию — ещё не придумал.
Очень хотелось бы услышать мнения более опытных товарищей — на сколько таковое решение пригодно к жизни? На данный момент железка стоит дома, трафика ходит не много, активный серфинг возможен лишь с 2х устройств в одну единицу времени
Спасибо за скрипт. Автоматически — там же есть скрипты и расписание, правда переписать придется.
Ну и /ip dns static remove делать тоже не очень хорошая идея — мало ли что у человека там может быть. У меня там немного, но важное.
Ну и /ip dns static remove делать тоже не очень хорошая идея — мало ли что у человека там может быть. У меня там немного, но важное.
Согласен, дроп имеющихся записей указал скорее по инерции после экспериментов. Кстати, не лишним будет к указанному выше списку добавить записи:
Сказав рекламе в скайпе, youtube.com (лишь через браузер), и паре назойливых сервисов — до свидания :)
s1.2mdn.net
pubads.g.doubleclick.net
static.doubleclick.net
devads.skypeassets.net
devapps.skype.net
qawww.skypeassets.net
qaapi.skype.net
preads.skypeassets.net
preapps.skype.net
static.skypeassets.com
serving.plexop.net
preg.bforex.com
ads1.msads.net
flex.msn.com
apps.skype.com
api.skype.com
cdn.mbstatic.org
marathonbet.com
megogo.net
adselector.ru
pluso.ru
flash.begun.ru
ad.adriver.ru
Сказав рекламе в скайпе, youtube.com (лишь через браузер), и паре назойливых сервисов — до свидания :)
Кстати, по поводу скачивания файлов хостов — проблемы то нет:
Проблема в том, чтоб распарсить файл. Можно, конечно, если аппаратные средства позволяют — с помощью MetaRouter поднять хоть тот же dd-wrt и уже его средствами делать всю «магию». Но, как мне кажется, эффективнее бы для этих целей создать простенький веб-сервис для «нуждающихся», где в «личном кабинете» была бы возможность задать свои правила (которые необходимы в добавок к публичным) + некоторые подготовленные шаблоны (как со скайпом или рекламой на youtube, которые поддерживаются в актуальном виде).
И формируя необходимого вида запрос — получать готовый скрипт импорта актуальных маршрутов, который бы обновлялся с заданной периодичностью. Делать для себя одного — слишком жирно будет, а для двух-трех гиков, которым данная идея покажется интересна — таки надо ли? :)
[admin@router] > /tool fetch url="https://adaway.org/hosts.txt" mode=https
status: finished
downloaded: 13KiB-z pause]
total: 13KiB
duration: 0s
[admin@router] > /file print
# NAME TYPE SIZE CREATION-TIME
0 skins directory jan/01/1970 05:00:01
1 hosts.txt .txt file 13.2KiB jul/24/2015 18:25:51
Проблема в том, чтоб распарсить файл. Можно, конечно, если аппаратные средства позволяют — с помощью MetaRouter поднять хоть тот же dd-wrt и уже его средствами делать всю «магию». Но, как мне кажется, эффективнее бы для этих целей создать простенький веб-сервис для «нуждающихся», где в «личном кабинете» была бы возможность задать свои правила (которые необходимы в добавок к публичным) + некоторые подготовленные шаблоны (как со скайпом или рекламой на youtube, которые поддерживаются в актуальном виде).
И формируя необходимого вида запрос — получать готовый скрипт импорта актуальных маршрутов, который бы обновлялся с заданной периодичностью. Делать для себя одного — слишком жирно будет, а для двух-трех гиков, которым данная идея покажется интересна — таки надо ли? :)
Имхо, веб-сервис — это слишком сложно. Да и приставка веб- тут явно лишняя — просто скрипт, можно даже тот же самый, что и выше, который запускается на сервере по крону и кладет результат в папку с фтп-доступом. Делов на полчаса.
А логичнее(но сложнее) сделать тоже самое на скриптах микротика. А потом просто забить в шедулер:
А логичнее(но сложнее) сделать тоже самое на скриптах микротика. А потом просто забить в шедулер:
Ковыряясь в свежей прошивке своего 951-го обнаружил, что он вполне себе понимает регэкспы в именах!
[sarcasm]Традиционно для RouterOS как-то всё не очевидно[/sarcasm], но, по крайней мере, «звёздочка» в начале доменного имени работает:
А это уже сильно уменьшает требуемый список.
Сколько при этом отъестся CPU не скажу — на фоне моих 3-6% загрузки разницы не заметил
[sarcasm]Традиционно для RouterOS как-то всё не очевидно[/sarcasm], но, по крайней мере, «звёздочка» в начале доменного имени работает:
add address=127.0.0.1 name=".*liveadvert\\.com"
add address=127.0.0.1 name=".*top.*\\.mail\\.ru"
А это уже сильно уменьшает требуемый список.
Сколько при этом отъестся CPU не скажу — на фоне моих 3-6% загрузки разницы не заметил
Похожий алгоритм, только больше хостов и опять же без рандомной задержки вначале скрипта — значит при массовом распространении сделают перегрузку серверу.
В итоге: кто и что из всех примеров испрользует и рекомендует?
Я ничего не менял после написания статьи, лень, а на роутерах у которых usb нет в cron прописываю вариант solalex
только немножко исправить строку консоли
wget winhelp2002.mvps.org/hosts.txt -O /tmp/adfree-tmp && sed 's/^\(.*\).$/\1/' /tmp/adfree-tmp > /tmp/adfree && /etc/init.d/dnsmasq restart
wget winhelp2002.mvps.org/hosts.txt -O /tmp/adfree-tmp && sed 's/^\(.*\).$/\1/' /tmp/adfree-tmp > /tmp/adfree && /etc/init.d/dnsmasq restart
UFO just landed and posted this here
Так работает только для IPv4 адресов. У кучи рекламных сетей уже поднят IPv6 и он так нифига не блочится.
Sign up to leave a comment.
Чистим домашний интернет от очень назойливой рекламы (Ad's blocker для OpenWRT)