Комментарии 49
Спасибо за пост.
Буду пытаться сделать нечто подобное на моем старике Linksys wrt54gl.
Буду пытаться сделать нечто подобное на моем старике Linksys wrt54gl.
0
Для 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
+3
Кому вообще лень заморачиваться, есть dns от яндекса. При чем, в нескольких вариантах.
0
А там же по моему порезанные все IP заблокированные роскомнадзором не? ;)
Еще бы решить как на rt-n16 с олеговской сделать подобное с автопополнением, идея конечно понятна, нужно вот раскопать где это там ;)
Еще бы решить как на rt-n16 с олеговской сделать подобное с автопополнением, идея конечно понятна, нужно вот раскопать где это там ;)
0
хм, помню opewrt не все может, мне не удалось запустить например нормально на своем железе Multicast to HTTP Proxy, отключение вафли по времени и что то еще. Может конечно плохо искал или думал.
0
Вот только например на tplink1043 не работает апаратный nating что не дает толком большой скорости
А вот про это можете подробнее? Сам использую TPLink 1043nd v1 c OpenWrt BarrierBreaker 14.07, скорость закачки торрентов, к примеру, аналогична стандартной прошивке. Чем мне может грозить отсутствие аппаратного nating, есть ли какие-то сравнения, подробности?
0
А как он поможет? Судя по описанию там только блокировка adult-рекламы.
+1
А какой формат у /root/hosts/unchanged? Вида: 0.0.0.0 s.adframesrc.com, я правильно понял?
0
Утащил в избранное. Попробую провернуть подобное. Реклама достала уже
0
Еще несколько хостов со списком рекламы (выдрано из приложения 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
Возможно придется слить все файлики в один, отсортировать и проверить на дубликаты.
+2
Сам использую томато / на асус н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
+1
файлик adfree-tmp можно и удалять, зачем лишний мусор?
0
А еще лучше качать этот файлик на /tmp/ ;-)
0
Или так :)
wget http://winhelp2002.mvps.org/hosts.txt -O - | sed 's/^\(.*\).$/\1/' adfree-tmp > /root/hosts/adfree
0
С учетом всего вышесказанного правим /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/
+1
и еще не забыть скрип в автозагрузку сунуть, чтоб при ребуте все поднялось, иначе в /tmp/ не будет списка блокируемых доменов
0
вот это точно работает :)
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
+1
Возможен ли сценарий что роутер повиснет если сервер вернет слишком большой файл?
Жаль что у wget в openwrt нет флага ограничения на размер полученного файла.
Кстати почему вы сразу не перенаправляете вывод wget на sed без использования промежуточного файла?
Жаль что у wget в openwrt нет флага ограничения на размер полученного файла.
Кстати почему вы сразу не перенаправляете вывод wget на sed без использования промежуточного файла?
0
там файлик то всего чуть больше 500 кб, почему сервер должен возвратить большой файл? А по второму вопросу — работает и ладно, не жалко оперативки для временного файла.
0
Где-то читал про авиакатастрофу вызванную переполнением буфера. Поднимаешься на определенную высоту и хлоп, переполнение. Когда писали софт просто не рассчитывали что самолет сможет подняться на такую высоту. В недорогих моделях обычно 16-32мб, в дорогих — 128. Будет плохое настроение или плохое чувство юмора у владельца сервера и оставит он вас без связи.
+1
это список из официального приложения для андроид AdFree. Не будут же они делать г*вно своим пользователям. А если сделают случайно или ошибочно, ничего страшного не произойдет, а вот репутация будет подмочена.
0
По user agent можно разный контент возвращать, для своего приложения одно, для вашего роутера другое.
Знакомый вебмастер такое сделал когда заметил что картинки с нашего сайта используются на чужом сайте, заменил изображение чайником.
Да и сильно-ли пострадала репутация этого Magic Lantern?
Знакомый вебмастер такое сделал когда заметил что картинки с нашего сайта используются на чужом сайте, заменил изображение чайником.
Да и сильно-ли пострадала репутация этого Magic Lantern?
+1
А зачем в конце adfree-tmp оставили?
А зачем рестартовать демона, когда можно просто sighup послать?
А зачем рестартовать демона, когда можно просто sighup послать?
wget http://winhelp2002.mvps.org/hosts.txt -O - | sed 's/^\(.*\).$/\1/' > /tmp/adfree killall -SIGHUP dnsmasq
0
в начало скрипта стоит добавить задержку на случайное время, чтобы сервер с файлом 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
+1
Обратный вопрос: А есть список сайтов с большим количеством рекламы? Хочется списки проверить :)
0
Уважаемые %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х устройств в одну единицу времени
+3
Спасибо за скрипт. Автоматически — там же есть скрипты и расписание, правда переписать придется.
Ну и /ip dns static remove делать тоже не очень хорошая идея — мало ли что у человека там может быть. У меня там немного, но важное.
Ну и /ip dns static remove делать тоже не очень хорошая идея — мало ли что у человека там может быть. У меня там немного, но важное.
+1
Согласен, дроп имеющихся записей указал скорее по инерции после экспериментов. Кстати, не лишним будет к указанному выше списку добавить записи:
Сказав рекламе в скайпе, 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 (лишь через браузер), и паре назойливых сервисов — до свидания :)
+1
Кстати, по поводу скачивания файлов хостов — проблемы то нет:
Проблема в том, чтоб распарсить файл. Можно, конечно, если аппаратные средства позволяют — с помощью 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, которые поддерживаются в актуальном виде).
И формируя необходимого вида запрос — получать готовый скрипт импорта актуальных маршрутов, который бы обновлялся с заданной периодичностью. Делать для себя одного — слишком жирно будет, а для двух-трех гиков, которым данная идея покажется интересна — таки надо ли? :)
0
Имхо, веб-сервис — это слишком сложно. Да и приставка веб- тут явно лишняя — просто скрипт, можно даже тот же самый, что и выше, который запускается на сервере по крону и кладет результат в папку с фтп-доступом. Делов на полчаса.
А логичнее(но сложнее) сделать тоже самое на скриптах микротика. А потом просто забить в шедулер:
А логичнее(но сложнее) сделать тоже самое на скриптах микротика. А потом просто забить в шедулер:
0
Ковыряясь в свежей прошивке своего 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% загрузки разницы не заметил
+1
Похожий алгоритм, только больше хостов и опять же без рандомной задержки вначале скрипта — значит при массовом распространении сделают перегрузку серверу.
+1
В итоге: кто и что из всех примеров испрользует и рекомендует?
+1
Я ничего не менял после написания статьи, лень, а на роутерах у которых usb нет в cron прописываю вариант solalex
0
только немножко исправить строку консоли
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
0
НЛО прилетело и опубликовало эту надпись здесь
Так работает только для IPv4 адресов. У кучи рекламных сетей уже поднят IPv6 и он так нифига не блочится.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Чистим домашний интернет от очень назойливой рекламы (Ad's blocker для OpenWRT)