Блокировка рекламы и https через DNS(dnsmasq)
-
Начну с того, что в последнее время реклама просто одолела, мир, как с ума сошел. Она везде и рекламодатели считают, что чем она «ляпестей», и громче, тем она лучше, вроде как заметнее.
Если на ПК эта проблема достаточно просто решается установкой adblock или ему подобного, то «яблочная» продукция в этом плане сильно отстает.
Я начал искать способы блокировки «сетевого мусора» в своей сети для всех устройств сразу.
Рассматривал разные варианты, и локальные, и внешние(например skydns). Не буду подробно останавливаться на этой части, напишу, только то, что на обзор вариантов ушла неделя и вариант со skydns импонировал больше всего, т.к. заморочек с ним меньше.
Останавливало одно - это сторонний dns и блэклисты не всегда удовлетворяют моему пониманию категорий.
Решено! Сделаю свой dns adblock посредством dnsmasq и как говорится «с блэк-джеком и шлю..и».
Оговорюсь сразу, что идея не моя, за основу взята тема https://forum.pfsense.org/index.php?topic=75760.0
Но, не люблю я ставить не нужные пакеты на шлюз, тем более когда первый раз с ними сталкиваюсь. Это я про httpd-proxy_mod_security, который используется у автора вышеуказанного топика.Решение нашел, работает все так:
С помощью днс переадресуем запросы блокируемых ресурсов на несуществующий в сети адрес, например 10.254.254.254, а с него правилами фаервола переадресуем на запущенный у нас http или https сервер, которые выдает прозрачный 1 пиксельный gif или страницу, что доступ запрещен(это в случае использования данного способа для блокировки https сайтов, например https://vk.vom).В качестве web сервера используется уже установленный в системе lighttpd. Для скачки листов встроенная качалка fetch. Ну и dnsmasq. Т.о. ничего устанавливать не придется!
Для автоматизации всего процесса сделал скрипт:
Он автоматически создает конфигурации, запускает все необходимое ПО и скачивает ad block листы.Для работы требуется переименовать файл в ad_block.sh, поместить его в папку /usr/local/etc/rc.d/ , дать права на запуск и далее запустить вручную или перезагрузить систему.
После этого требуется создать правила на вкладке NAT/Port Forward
If Proto Src. addr Src. ports Dest. addr Dest. ports NAT IP NAT Ports
LAN TCP * * 10.254.254.254 80 (HTTP) 127.0.0.1 2011
LAN TCP * * 10.254.254.254 443 (HTTPS) 127.0.0.1 2012Для ежедневного обновления скрипт нужно поместить в cron.
Например так:
0 4 * * * root /usr/local/etc/rc.d/ad_block.shПо шагам скрипт делает следующее:
1) Проверяет наличие конфигураций, если нет, создает.
2) Запускает, если не запущены, на 127.0.0.1 web сервера(их два один http(порт 2011), второй https(порт 2012))
3) Скачивает несколько блок листов, объединяет, сортирует, удаляет дубликаты
4) Приводит получившийся лист к формату dnsmasq, сравнивает его с существующим и в случае расхождений заменяет.
5) Перезапускает dnsmasq.Для проверки перейти по адресам http://10.254.254.254 и https://10.254.254.254. В ответ получите тот самый пустой пиксель. Или по адресу mc.yandex.ru.
В мобильных устройствах работа хорошо заметна в приложении speedtest.Также дополнительно можно создать свой список по аналогии и разместить его в /usr/local/etc/dnsmasq.d/ с расширением *.conf
В общем кому понравилось пользуйтесь на здоровье!
PS Критика очень приветствуется, т.к. это первый подобный опыт.
upd:
Забыл написать, что результат работы пишется в лог -> Status -> System logs -> Resolver
Пример на скрине.upd2:
Заметил, что при просмотре темы гостям не видны прикрепленные файлы.#!/bin/sh # # Helfer_Panch dnsmasq adblock script for pfsense # https://forum.pfsense.org/index.php?topic=101933.0 LOG_ON="1" # "1"- Enable log pixel server REDIR_TO='10.254.254.254' WHITELIST="/usr/local/etc/ad_whitelist" CUSTOMLIST="/usr/local/etc/ad_custom_list" CONF_DNSMASQ='/usr/local/etc/dnsmasq.conf' CONF_DNSMASQ_DIR='/usr/local/etc/dnsmasq.d' CONF_ADBLOCK='/usr/local/etc/dnsmasq.d/adblock.conf' ADBLOCK_DFILE='/tmp/adblocklist.tmp' CONF_ADBLOCK_TEMP='/tmp/adblock.conf' CONF_ADBLOCK_BACKUP='/tmp/adblock.conf.orig' LOCAL_DEBUG=false LIGHTCONFDIR='/usr/local/etc/lighttpd' LIGHTHTTPSCONF=$LIGHTCONFDIR'/https' PIDFILEHTTPS='/var/run/lighty-gifhttps.pid' LIGHTPORTHTTP='2011' LIGHTPORTHTTPS='2012' LIGHTROOTFOLDER='/usr/local/www/pixelserv/' LIGHTLOG='/var/log/pixelserv.log' daemonlog () { logger -p daemon.info -i -t dnsmasq $1 $LOCAL_DEBUG && echo $1 } restart_dnsmasq () { echo '' | php -q } start_pixserv () { daemonlog "Starting pixel servers" if ! pgrep -f $LIGHTCONFDIR/https$; then daemonlog "Start HTTP/HTTPS server configuration" /usr/local/sbin/lighttpd -f $LIGHTHTTPSCONF else prnum=$(pgrep -f $LIGHTCONFDIR/https$) daemonlog "Pixel server already started, pid - $prnum" fi } dns_config () { if [ ! -d $CONF_DNSMASQ_DIR ]; then mkdir -p $CONF_DNSMASQ_DIR touch $CONF_ADBLOCK fi if [ ! -r $CONF_DNSMASQ ]; then daemonlog "Creating dnsmasq configuration" echo "conf-dir=$CONF_DNSMASQ_DIR" > $CONF_DNSMASQ echo "cache-size=10000" >> $CONF_DNSMASQ echo "resolv-file=/var/etc/resolv.conf" >> $CONF_DNSMASQ else daemonlog "dnsmasq configuration exists, adding configuration directory" # echo "conf-dir=$CONF_DNSMASQ_DIR" >> $CONF_DNSMASQ fi } dns_del_conf () { if [ -r $CONF_DNSMASQ ]; then rm $CONF_DNSMASQ fi } pixel_config () { if [ ! -r $LIGHTROOTFOLDER/transparent_pixel.gif ]; then daemonlog "Creating root folder for pixel servers - $LIGHTROOTFOLDER" mkdir -p $LIGHTROOTFOLDER cp /usr/local/www/themes/pfsense_ng/images/transparent_pixel.gif $LIGHTROOTFOLDER fi if [ ! -d $LIGHTCONFDIR ]; then daemonlog "Pixel servers configuration not found. Create..." mkdir -p $LIGHTCONFDIR if [ ! -r $LIGHTHTTPSCONF ]; then daemonlog "Creating configuration for pixel server" echo 'server.document-root = "'$LIGHTROOTFOLDER'"' > $LIGHTHTTPSCONF echo 'server.modules = ( "mod_accesslog" )'>> $LIGHTHTTPSCONF echo 'accesslog.filename = "'$LIGHTLOG'"' >> $LIGHTHTTPSCONF echo 'accesslog.format = "%h %V \"%r\" \"%{Referer}i\" %t"' >> $LIGHTHTTPSCONF echo 'mimetype.assign = ( ".gif" => "image/gif" )' >> $LIGHTHTTPSCONF echo 'server.bind = "127.0.0.1"' >> $LIGHTHTTPSCONF echo 'server.port = 2010' >> $LIGHTHTTPSCONF echo '$SERVER["socket"] == "127.0.0.1:'$LIGHTPORTHTTP'" { }' >> $LIGHTHTTPSCONF echo '$SERVER["socket"] == "127.0.0.1:'$LIGHTPORTHTTPS'" {' >> $LIGHTHTTPSCONF echo 'ssl.engine = "enable"' >> $LIGHTHTTPSCONF echo 'ssl.pemfile = "/var/etc/cert.pem" }' >> $LIGHTHTTPSCONF echo 'server.error-handler-404 = "/transparent_pixel.gif"' >> $LIGHTHTTPSCONF echo 'server.pid-file = "'$PIDFILEHTTPS'"' >> $LIGHTHTTPSCONF echo 'ssl.engine = "enable"' >> $LIGHTHTTPSCONF echo 'ssl.pemfile = "/var/etc/cert.pem"' >> $LIGHTHTTPSCONF echo 'ssl.use-sslv2 = "disable"' >> $LIGHTHTTPSCONF echo 'ssl.use-sslv3 = "disable"' >> $LIGHTHTTPSCONF echo 'ssl.honor-cipher-order = "enable"' >> $LIGHTHTTPSCONF echo -n 'ssl.cipher-list = "AES128+EECDH:AES256+EECDH:AES128+EDH:AES256+EDH:AES128-SHA:AES256-SHA:!aNULL:!eNULL:!DSS"' >> $LIGHTHTTPSCONF fi fi } del_pixel_conf () { if [ -d $LIGHTCONFDIR ]; then rm -fR $LIGHTCONFDIR fi } do_stop_pixel_serv () { if pgrep -f $LIGHTCONFDIR/https$ ; then pkill -F $PIDFILEHTTPS fi } update_from_internet () { daemonlog "Downloading ad blocking lists:" daemonlog "Fetching yoyo ad list..." # Approximately 2452 domains at the time of writing /usr/bin/fetch -qo - 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&mimetype=plaintext' | sort > $ADBLOCK_DFILE daemonlog "Fetching winhelp2002 ad list..." # 12985 domains /usr/bin/fetch -qo - 'http://winhelp2002.mvps.org/hosts.txt' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' | grep -v "#" | grep -v "127.0.0.1" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | sort >> $ADBLOCK_DFILE daemonlog "Fetching adaway ad list..." # 445 domains /usr/bin/fetch -qo - 'https://adaway.org/hosts.txt' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' | grep -v "#" | grep -v "::1" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> $ADBLOCK_DFILE daemonlog "Fetching hosts-file ad list..." # 28050 domains http://hphosts.gt500.org/ad_servers.php /usr/bin/fetch -qo - 'http://hosts-file.net/.%5Cad_servers.txt' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' -T 30 | grep -v "#" | grep -v "::1" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> $ADBLOCK_DFILE #/usr/bin/fetch -qo - 'http://hosts-file.net/emd.txt' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' -T 30 | grep -v "#" | grep -v "::1" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> $ADBLOCK_DFILE /usr/bin/fetch -qo - 'http://hosts-file.net/psh.txt' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' -T 30 | grep -v "#" | grep -v "::1" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> $ADBLOCK_DFILE daemonlog "Fetching malwaredomainlist ad list..." # 1352 domains /usr/bin/fetch -qo - 'http://www.malwaredomainlist.com/hostslist/hosts.txt' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' -T 30 | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $3}' | grep -v '^\\' | grep -v '\\$' | sort >> $ADBLOCK_DFILE daemonlog "Fetching adblock.gjtech ad list..." # 696 domains /usr/bin/fetch -qo - 'http://adblock.gjtech.net/?format=unix-hosts' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> $ADBLOCK_DFILE daemonlog "Fetching someone who cares ad list..." # 10600 /usr/bin/fetch -qo - 'http://someonewhocares.org/hosts/hosts' | grep -v "#" | sed '/^$/d' | sed 's/\ /\\ /g' | grep -v '^\\' | grep -v '\\$' | awk '{print $2}' | grep -v '^\\' | grep -v '\\$' | sort >> $ADBLOCK_DFILE daemonlog "Fetching ruadlist+easylist..." # /usr/bin/fetch -qo - 'https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' | grep '^||.*\^$' | sed 's/||//g' | sed 's/\^//g' | sort >> $ADBLOCK_DFILE daemonlog "Fetching privacy list" /usr/bin/fetch -qo - 'https://easylist-downloads.adblockplus.org/easyprivacy.txt' --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' | grep '^||.*\^$' | sed 's/||//g' | sed 's/\^//g' | sort >> $ADBLOCK_DFILE #echo "Fetching Mother of All Ad Blocks list..." # 102168 domains!! Thanks Kacy #/usr/bin/fetch -qo - http://adblock.mahakala.is/ --user-agent='Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' --referer=http://forum.xda-developers.com/ | grep -v "#" | awk '{print $2}' | sort >> $ADBLOCK_DFILE } update_custom_list () { # Add records from custom block list daemonlog "Add records from custom block list - $CUSTOMLIST" cat $CUSTOMLIST | grep -v "#" | sort >> $ADBLOCK_DFILE } save_blocklist () { # Sort the aggregated results and remove any duplicates # Remove entries from the whitelist file if it exists at the root of the current user's home folder daemonlog "Removing duplicates and formatting the list of domains..." cat $ADBLOCK_DFILE | sed $'s/\r$//' | sort | uniq | sed '/^$/d' | grep -v -x -f $WHITELIST | awk -v "IP=$REDIR_TO" '{sub(/\r$/,""); print "address=/"$0"/"IP}' > $CONF_ADBLOCK_TEMP # Count how many domains/whitelists were added so it can be displayed to the user numberOfAdsBlocked=$(cat $CONF_ADBLOCK_TEMP | wc -l | sed 's/^[ \t]*//') daemonlog "$numberOfAdsBlocked ad domains blocked." daemonlog "Analyzing for changes" if ! /usr/bin/cmp -s "$CONF_ADBLOCK_TEMP" "$CONF_ADBLOCK"; then daemonlog "Updating $CONF_ADBLOCK with latest entries" cp $CONF_ADBLOCK $CONF_ADBLOCK_BACKUP cp $CONF_ADBLOCK_TEMP $CONF_ADBLOCK daemonlog "Restarting dnsmasq" restart_dnsmasq if ! pgrep -q dnsmasq; then daemonlog "dnsmasq failed to restart, reverting to previous ad blocking configuration" cp $CONF_ADBLOCK_BACKUP $CONF_ADBLOCK restart_dnsmasq fi else daemonlog "No ad blocking updates required" fi } command_help () { echo " " echo " start|stop|start_pixel|restart|update_all|update_custom|reconfig" echo " " echo " start - full start with update" echo " start_pixel - only start pixel server" echo " stop - only stop pixel server" echo " restart - restart pixel server" echo " update_all - update all block lists, without restart pixel server" echo " update_custom - only add new records from custom block list and reload dnsmasq" echo " reconfig - restore all configurations" echo " " } case $1 in start) dns_config pixel_config start_pixserv update_from_internet update_custom_list save_blocklist ;; start_pixel) start_pixserv ;; stop) do_stop_pixel_serv ;; restart) do_stop_pixel_serv start_pixserv ;; update_all) update_from_internet update_custom_list save_blocklist ;; update_custom) update_custom_list save_blocklist ;; reconfig) do_stop_pixel_serv del_pixel_conf dns_del_conf dns_config pixel_config start_pixserv restart_dnsmasq ;; help) command_help ;; esac ```  [ad_block_v02.txt](/public/_imported_attachments_/1/ad_block_v02.txt)
-
Ув. Helfer_Panch
Спасибо за столь подробную инструкцию. -
Ув. Helfer_Panch
Спасибо за столь подробную инструкцию.Пожалуйста, рад, что эта тема интересна не только мне!
Если есть вопросы обращайтесь.Есть желание еще прикрутить статистику.
Предполагаю, что это должно делаться на стороне lighttpd, т.е. переадресуем на страницу, она пишет в лог и далее переадресует на пустой пиксель.
Только, как реализовать пока нет понимания.
Если есть мысли, буду рад обсудить. -
Обновил скрипт:
-Добавил настройки для лога блокировок.
-Переделал конфиг lighttpd теперь запускается один процесс и слушает на двух портах.
-Добавил переменную пути файла "whitelist", туда заносятся домены которые требуется исключить из формируемого блок листа.Для включения лога нужно раскомментировать строки:
echo 'server.modules = ( "mod_accesslog" )'>> $LIGHTHTTPSCONF
echo 'accesslog.filename = "'$LIGHTLOG'"' >> $LIGHTHTTPSCONF
echo 'accesslog.format = "%h %V "%r" "%{Referer}i" %t"' >> $LIGHTHTTPSCONF
Путь лога задается переменной LIGHTLOG='/var/log/pixelserv.log'
Для того, чтобы изменения заработали требуется удалить папку /usr/local/etc/lighthttpd и убить процессы lighttpd связанные с ней.
После этого запустить новый скрипт.
Скрипт прикреплен к первому сообщению. -
Helfer_Panch
Dec 7 15:19:48 dnsmasq[78769]: 0 ad domains blocked.
Dec 7 15:19:48 dnsmasq[76278]: Removing duplicates and formatting the list of domains…
Dec 7 15:19:45 dnsmasq[75116]: Fetching privacy list
Dec 7 15:19:36 dnsmasq[71678]: Fetching ruadlist+easylist…
Dec 7 15:19:33 dnsmasq[66729]: Fetching someone who cares ad list…
Dec 7 15:19:30 dnsmasq[54797]: Fetching adblock.gjtech ad list…
Dec 7 15:19:00 dnsmasq[40657]: Fetching malwaredomainlist ad list…
Dec 7 15:18:52 dnsmasq[39278]: Fetching hosts-file ad list…
Dec 7 15:18:51 dnsmasq[37173]: Fetching adaway ad list…
Dec 7 15:18:48 dnsmasq[29087]: Fetching winhelp2002 ad list…
Dec 7 15:18:47 dnsmasq[25119]: Fetching yoyo ad list…
Dec 7 15:18:47 dnsmasq[24844]: Downloading ad blocking lists:
Dec 7 15:18:47 dnsmasq[24528]: Pixel server start with pid -
Dec 7 15:18:46 dnsmasq[22818]: Start HTTP/HTTPS server configuration
Dec 7 15:18:46 dnsmasq[22336]: Starting pixel servers
Dec 7 15:18:46 dnsmasq[21303]: Creating configuration for pixel server
Dec 7 15:18:46 dnsmasq[20400]: Pixel servers configuration not found. Create…
Dec 7 15:18:28 unbound: [18276:0] info: start of service (unbound 1.5.3).
Dec 7 15:18:28 unbound: [18276:0] notice: init module 1: iterator
Dec 7 15:18:28 unbound: [18276:0] notice: init module 0: validator -
Еще больше вопросов.
cat $ADBLOCK_DFILE | sed $'s/\r$//' | sort | uniq | sed '/^$/d' | grep -v -x -f $WHITELIST | awk -v "IP=$REDIR_TO" '{sub(/\r$/,""); print "address=/"$0"/"IP}' > $CONF_ADBLOCK_TEMP
не силен в конвеерах, но если $WHITELIST не существует, тогда упс. файл adblock.conf нулевой.
В pfSense по умолчанию /var/etc/cert.pem - нет.
Скрипт в части https точно рабочий?похоже на солянку из рабочего скрипта по http и набросков по https.
-
Есть желание еще прикрутить статистику.
Предполагаю, что это должно делаться на стороне lighttpd, т.е. переадресуем на страницу, она пишет в лог и далее переадресует на пустой пиксель.
Только, как реализовать пока нет понимания.
Если есть мысли, буду рад обсудить.Я использую данный способ уже года 3.
Но выбор как web-сервера выпал на nginx с его плюшками и прочим.
Он позволяет как отдавать статику, так и кешировать запросы. На его основе кстати долгое время работал кешер WindowsUpdate, adobe, Apple, sf и некоторые другие. От большинства доменов в режиме проксирования пришлось отказаться (где-то включили SSL, где-то просто безразмерные обновления) -
https://forum.pfsense.org/index.php?topic=102470.0
-
Еще больше вопросов.
не силен в конвеерах, но если $WHITELIST не существует, тогда упс. файл adblock.conf нулевой.Да, согласен после того как сделал белый лист не проверял работу скрипта без него.
Но я крайне рекомендую его создать, т.к. в одном из скачиваемых листов блокируется почта яндекс и домен local(из-за этого не работает retracker.local)В pfSense по умолчанию /var/etc/cert.pem - нет.
Скрипт в части https точно рабочий?Работает точно, и не только у меня. Скорее всего не заработал из-за отсутствия сертификата. У меня включен https к вебконфигуратору сразу после установки PF, возможно по этой причине сертификат есть.
похоже на солянку из рабочего скрипта по http и набросков по https.
Можно и так сказать, но примером служил оригинальный конфиг вебконфигуратора.
-
Helfer_Panch
Спасибо.
Посмотрите пакет pfBlockerNG BBcan177.
DNSBL реализован просто отлично.Минусы.
Доступен для 2.2 и выше, где Unbound вместо dnsmasq.Плюсы.
Логирование, статистика. Списки, в том числе Adblock Easylist.
Быстрое исключение из Block добавлением в WhiteList одним кликом.The best.
-
Здравствуйте, у меня pfsense 2.2.4, я в общем то не очень специалист, подскажите пожалуйста в чем косяк.
Последовательность действий как в статье, файл ad_block.sh использовал из прокручивающегося списка, в конечном итоге получил вот такой лог в Resolver:
Dec 15 16:30:06 unbound: [18868:0] notice: init module 0: validator
Dec 15 16:30:06 unbound: [18868:0] notice: init module 1: iterator
Dec 15 16:30:06 unbound: [18868:0] info: start of service (unbound 1.5.4).
Dec 15 16:30:28 dnsmasq[27622]: dnsmasq configuration exists, adding configuration directory
Dec 15 16:30:28 dnsmasq[28804]: Starting pixel servers
Dec 15 16:30:28 dnsmasq[29176]: Start HTTP/HTTPS server configuration
Dec 15 16:30:28 dnsmasq[30265]: Downloading ad blocking lists:
Dec 15 16:30:28 dnsmasq[30546]: Fetching yoyo ad list…
Dec 15 16:30:29 dnsmasq[37789]: Fetching winhelp2002 ad list…
Dec 15 16:30:32 dnsmasq[42469]: Fetching adaway ad list…
Dec 15 16:30:33 dnsmasq[46045]: Fetching hosts-file ad list…
Dec 15 16:31:44 dnsmasq[83827]: Fetching malwaredomainlist ad list…
Dec 15 16:31:45 dnsmasq[85885]: Fetching adblock.gjtech ad list…
Dec 15 16:31:47 dnsmasq[88061]: Fetching someone who cares ad list…
Dec 15 16:31:51 dnsmasq[97938]: Fetching ruadlist+easylist…
Dec 15 16:31:56 dnsmasq[99016]: Fetching privacy list
Dec 15 16:31:57 dnsmasq[1387]: Add records from custom block list - /usr/local/etc/ad_custom_list
Dec 15 16:31:57 dnsmasq[1848]: Removing duplicates and formatting the list of domains…
Dec 15 16:31:58 dnsmasq[4113]: 140273 ad domains blocked.
Dec 15 16:31:58 dnsmasq[4115]: Analyzing for changes
Dec 15 16:31:58 dnsmasq[4545]: Updating /usr/local/etc/dnsmasq.d/adblock.conf with latest entries
Dec 15 16:31:58 dnsmasq[5215]: Restarting dnsmasq
Dec 15 16:31:59 dnsmasq[8879]: dnsmasq failed to restart, reverting to previous ad blocking configurationДоступ по приведенным для примера ip адресам 10.254.254.254 для http-https присутствует, открывается .gif, но фильтрации рекламы нет. Подскажите пожалуйста, в чем может быть причина?
-
kudrik_tt
Смотрите настройки DNS Forwarder. dnsmasq.
включен\не включенчитайте про\ ставьте pfBlockerNG
-
Интересно pfBlockerNG, если честно первый раз слышу)) А какая-нибудь инструкция вдогонку есть по нему?
-
Там вся суть на первых 3-х страницах.
-
smils Огромное спасибо за статью, особенно за наводку про первые 3 страницы, вроде настроил, но никак не пойму:
- ip адреса в списках DNSBL Feeds блокируются, но если добавишь какой-нибудь в Custom Domain Name Block List - он не блокируется
- реклама по мойму не блокируется, по крайней мере на mail.ru (хотя adblock обычно блокируется) или на чем можно попробывать;
- списки Alexa используются получается как белые списки? Тогда почему, если специально добавлять сайт из DNSBL Feeds (из блокируемых) он не открывается?
- На до же в Alexa TLD Inclusion указывать RU.
или после каждого изменения необходимо ребутить pf - Не будет ли большое количество списков как у пользователя 'tonymorella' https://forum.pfsense.org/index.php?topic=102470.30 тормозить систему. Хотя это можно и проверить))
-
причем интересно, открываю mail.ru в правом верхнем углу реклама перещёлкивает, нажимаю на нее, а открывается страница ad.adriver.ru/…. - но она заблокирована! И на многих сайтах реклама действительно заблокирована, вместо них белое окно.
-
1)Changes are applied via CRON or 'Force Update'
2)Changes are applied via CRON or 'Force Update'
3)Самые популярные сайты по рейтингу Alexa, исключаем из Block. Не использую.
4)Все верно, указать ru. Changes are applied via CRON or 'Force Update', ребутить pf не нужно.
5)Не тормозит. Совсем. -
Спасибо, большое. Хорошая штука этот DNSBL полезная и простая.
-
Посмотрите пакет pfBlockerNG BBcan177.
DNSBL реализован просто отлично.Спасибо, за совет!
Обязательно посмотрю. -
Здравствуйте, у меня pfsense 2.2.4, я в общем то не очень специалист, подскажите пожалуйста в чем косяк.
Последовательность действий как в статье, файл ad_block.sh использовал из прокручивающегося списка, в конечном итоге получил вот такой лог в Resolver:
Dec 15 16:30:06 unbound: [18868:0] notice: init module 0: validator
Dec 15 16:30:06 unbound: [18868:0] notice: init module 1: iterator
Dec 15 16:30:06 unbound: [18868:0] info: start of service (unbound 1.5.4).
Dec 15 16:30:28 dnsmasq[27622]: dnsmasq configuration exists, adding configuration directory
Dec 15 16:30:28 dnsmasq[28804]: Starting pixel servers
Dec 15 16:30:28 dnsmasq[29176]: Start HTTP/HTTPS server configuration
Dec 15 16:30:28 dnsmasq[30265]: Downloading ad blocking lists:
Dec 15 16:30:28 dnsmasq[30546]: Fetching yoyo ad list…
Dec 15 16:30:29 dnsmasq[37789]: Fetching winhelp2002 ad list…
Dec 15 16:30:32 dnsmasq[42469]: Fetching adaway ad list…
Dec 15 16:30:33 dnsmasq[46045]: Fetching hosts-file ad list…
Dec 15 16:31:44 dnsmasq[83827]: Fetching malwaredomainlist ad list…
Dec 15 16:31:45 dnsmasq[85885]: Fetching adblock.gjtech ad list…
Dec 15 16:31:47 dnsmasq[88061]: Fetching someone who cares ad list…
Dec 15 16:31:51 dnsmasq[97938]: Fetching ruadlist+easylist…
Dec 15 16:31:56 dnsmasq[99016]: Fetching privacy list
Dec 15 16:31:57 dnsmasq[1387]: Add records from custom block list - /usr/local/etc/ad_custom_list
Dec 15 16:31:57 dnsmasq[1848]: Removing duplicates and formatting the list of domains…
Dec 15 16:31:58 dnsmasq[4113]: 140273 ad domains blocked.
Dec 15 16:31:58 dnsmasq[4115]: Analyzing for changes
Dec 15 16:31:58 dnsmasq[4545]: Updating /usr/local/etc/dnsmasq.d/adblock.conf with latest entries
Dec 15 16:31:58 dnsmasq[5215]: Restarting dnsmasq
Dec 15 16:31:59 dnsmasq[8879]: dnsmasq failed to restart, reverting to previous ad blocking configurationДоступ по приведенным для примера ip адресам 10.254.254.254 для http-https присутствует, открывается .gif, но фильтрации рекламы нет. Подскажите пожалуйста, в чем может быть причина?
Если еще актуально.
Судя по первым трем строчкам лога, скорее всего, у Вас используется unbound вместо dnsmasq.
В последней строке он говорит, что перезапустить dnsmasq не удалось. С этим и связано отсутствие фильтрации.