Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Блокировка рекламы и https через DNS(dnsmasq)

    Scheduled Pinned Locked Moved Russian
    44 Posts 8 Posters 19.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helfer_Panch
      last edited by

      Начну с того, что в последнее время реклама просто одолела, мир, как с ума сошел. Она везде и рекламодатели считают, что чем она «ляпестей», и громче, тем она лучше, вроде как заметнее.

      Если на ПК эта проблема достаточно просто решается установкой 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
      ```![log.PNG](/public/_imported_attachments_/1/log.PNG)
      ![log.PNG_thumb](/public/_imported_attachments_/1/log.PNG_thumb)
      [ad_block_v02.txt](/public/_imported_attachments_/1/ad_block_v02.txt)
      1 Reply Last reply Reply Quote 0
      • werterW
        werter
        last edited by

        Ув. Helfer_Panch
        Спасибо за столь подробную инструкцию.

        1 Reply Last reply Reply Quote 0
        • H
          Helfer_Panch
          last edited by

          @werter:

          Ув. Helfer_Panch
          Спасибо за столь подробную инструкцию.

          Пожалуйста, рад, что эта тема интересна не только мне!
          Если есть вопросы обращайтесь.

          Есть желание еще прикрутить статистику.
          Предполагаю, что это должно делаться на стороне lighttpd, т.е. переадресуем на страницу, она пишет в лог и далее переадресует на пустой пиксель.
          Только, как реализовать пока нет понимания.
          Если есть мысли, буду рад обсудить.

          1 Reply Last reply Reply Quote 0
          • H
            Helfer_Panch
            last edited by

            Обновил скрипт:
            -Добавил настройки для лога блокировок.
            -Переделал конфиг 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 связанные с ней.

            После этого запустить новый скрипт.
            Скрипт прикреплен к первому сообщению.

            1 Reply Last reply Reply Quote 0
            • S
              smils
              last edited by

              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

              1 Reply Last reply Reply Quote 0
              • S
                smils
                last edited by

                Еще больше вопросов.

                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.

                1 Reply Last reply Reply Quote 0
                • P
                  PbIXTOP
                  last edited by

                  @Helfer_Panch:

                  Есть желание еще прикрутить статистику.
                  Предполагаю, что это должно делаться на стороне lighttpd, т.е. переадресуем на страницу, она пишет в лог и далее переадресует на пустой пиксель.
                  Только, как реализовать пока нет понимания.
                  Если есть мысли, буду рад обсудить.

                  Я использую данный способ уже года 3.
                  Но выбор как web-сервера выпал на nginx с его плюшками и прочим.
                  Он позволяет как отдавать статику, так и кешировать запросы. На его основе кстати долгое время работал кешер WindowsUpdate, adobe, Apple, sf и некоторые другие. От большинства доменов в режиме проксирования пришлось отказаться (где-то включили SSL, где-то просто безразмерные обновления)

                  1 Reply Last reply Reply Quote 0
                  • BBcan177B
                    BBcan177 Moderator
                    last edited by

                    https://forum.pfsense.org/index.php?topic=102470.0

                    "Experience is something you don't get until just after you need it."

                    Website: http://pfBlockerNG.com
                    Twitter: @BBcan177  #pfBlockerNG
                    Reddit: https://www.reddit.com/r/pfBlockerNG/new/

                    1 Reply Last reply Reply Quote 0
                    • H
                      Helfer_Panch
                      last edited by

                      @smils:

                      Еще больше вопросов.
                      не силен в конвеерах, но если  $WHITELIST не существует, тогда упс. файл adblock.conf нулевой.

                      Да, согласен после того как сделал белый лист не проверял работу скрипта без него.
                      Но я крайне рекомендую его создать, т.к. в одном из скачиваемых листов блокируется почта яндекс и домен local(из-за этого не работает retracker.local)

                      @smils:

                      В pfSense по умолчанию /var/etc/cert.pem - нет.
                      Скрипт в части https точно рабочий?

                      Работает точно, и не только у меня. Скорее всего не заработал из-за отсутствия сертификата. У меня включен https к вебконфигуратору сразу после установки PF, возможно по этой причине сертификат есть.

                      @smils:

                      похоже на солянку из рабочего скрипта по http и набросков по https.

                      Можно и так сказать, но примером служил оригинальный конфиг вебконфигуратора.

                      1 Reply Last reply Reply Quote 0
                      • S
                        smils
                        last edited by

                        Helfer_Panch

                        Спасибо.

                        Посмотрите пакет pfBlockerNG BBcan177.
                        DNSBL реализован просто отлично.

                        Минусы.
                        Доступен для 2.2 и выше, где Unbound вместо dnsmasq.

                        Плюсы.
                        Логирование, статистика. Списки, в том числе Adblock Easylist.
                        Быстрое исключение из Block добавлением в WhiteList одним кликом.

                        The best.

                        1 Reply Last reply Reply Quote 0
                        • K
                          kudrik_tt
                          last edited by

                          Здравствуйте, у меня 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, но фильтрации рекламы нет. Подскажите пожалуйста, в чем может быть причина?

                          1 Reply Last reply Reply Quote 0
                          • S
                            smils
                            last edited by

                            kudrik_tt

                            Смотрите настройки DNS Forwarder. dnsmasq.
                            включен\не включен

                            читайте про\ ставьте pfBlockerNG

                            1 Reply Last reply Reply Quote 0
                            • K
                              kudrik_tt
                              last edited by

                              Интересно pfBlockerNG, если честно первый раз слышу)) А какая-нибудь инструкция вдогонку есть по нему?

                              1 Reply Last reply Reply Quote 0
                              • S
                                smils
                                last edited by

                                pfBlockerNG v2.0 w/DNSBL

                                Там вся суть на первых 3-х страницах.

                                1 Reply Last reply Reply Quote 0
                                • K
                                  kudrik_tt
                                  last edited by

                                  smils Огромное спасибо за статью, особенно за наводку про первые 3 страницы, вроде настроил, но никак не пойму:

                                  1. ip адреса в списках DNSBL Feeds блокируются, но если добавишь какой-нибудь в Custom Domain Name Block List - он не блокируется
                                  2. реклама по мойму не блокируется, по крайней мере на mail.ru (хотя adblock обычно блокируется) или на чем можно попробывать;
                                  3. списки Alexa используются получается как белые списки? Тогда почему, если специально добавлять сайт из DNSBL Feeds (из блокируемых) он не открывается?
                                  4. На до же в Alexa TLD Inclusion указывать RU.
                                    или после каждого изменения необходимо ребутить pf
                                  5. Не будет ли большое количество списков как у пользователя 'tonymorella' https://forum.pfsense.org/index.php?topic=102470.30 тормозить систему. Хотя это можно и проверить))
                                  1 Reply Last reply Reply Quote 0
                                  • K
                                    kudrik_tt
                                    last edited by

                                    причем интересно, открываю mail.ru в правом верхнем углу реклама перещёлкивает, нажимаю на нее, а открывается страница ad.adriver.ru/…. - но она заблокирована! И на многих сайтах реклама действительно заблокирована, вместо них белое окно.

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      smils
                                      last edited by

                                      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)Не тормозит. Совсем.

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        kudrik_tt
                                        last edited by

                                        Спасибо, большое. Хорошая штука этот DNSBL полезная и простая.

                                        1 Reply Last reply Reply Quote 0
                                        • H
                                          Helfer_Panch
                                          last edited by

                                          @smils:

                                          Посмотрите пакет pfBlockerNG BBcan177.
                                          DNSBL реализован просто отлично.

                                          Спасибо, за совет!
                                          Обязательно посмотрю.

                                          1 Reply Last reply Reply Quote 0
                                          • H
                                            Helfer_Panch
                                            last edited by

                                            @kudrik_tt:

                                            Здравствуйте, у меня 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 не удалось. С этим и связано отсутствие фильтрации.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.