• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
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 Dec 12, 2015, 11:04 AM Nov 5, 2015, 5:20 PM

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

    Если на ПК эта проблема достаточно просто решается установкой 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 Nov 6, 2015, 6:31 AM Nov 6, 2015, 6:25 AM

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

      1 Reply Last reply Reply Quote 0
      • H
        Helfer_Panch
        last edited by Nov 6, 2015, 3:58 PM Nov 6, 2015, 7:20 AM

        @werter:

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

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

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

        1 Reply Last reply Reply Quote 0
        • H
          Helfer_Panch
          last edited by Nov 6, 2015, 3:59 PM Nov 6, 2015, 12:44 PM

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

            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 Dec 8, 2015, 1:08 AM Dec 8, 2015, 1:00 AM

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

              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 Dec 8, 2015, 4:17 AM

                @Helfer_Panch:

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

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

                1 Reply Last reply Reply Quote 0
                • BBcan177B
                  BBcan177 Moderator
                  last edited by Dec 11, 2015, 10:14 PM

                  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 Dec 12, 2015, 12:30 PM Dec 12, 2015, 10:51 AM

                    @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 Dec 15, 2015, 8:56 AM Dec 15, 2015, 7:58 AM

                      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 Dec 15, 2015, 10:43 AM

                        Здравствуйте, у меня 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 Dec 16, 2015, 5:46 AM Dec 15, 2015, 2:36 PM

                          kudrik_tt

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

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

                          1 Reply Last reply Reply Quote 0
                          • K
                            kudrik_tt
                            last edited by Dec 16, 2015, 3:00 AM

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

                            1 Reply Last reply Reply Quote 0
                            • S
                              smils
                              last edited by Dec 16, 2015, 5:48 AM

                              pfBlockerNG v2.0 w/DNSBL

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

                              1 Reply Last reply Reply Quote 0
                              • K
                                kudrik_tt
                                last edited by Dec 16, 2015, 9:42 AM

                                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 Dec 16, 2015, 11:36 AM Dec 16, 2015, 11:31 AM

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

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    smils
                                    last edited by Dec 17, 2015, 12:23 AM Dec 17, 2015, 12:18 AM

                                    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 Dec 17, 2015, 2:59 AM

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

                                      1 Reply Last reply Reply Quote 0
                                      • H
                                        Helfer_Panch
                                        last edited by Dec 19, 2015, 8:02 AM

                                        @smils:

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

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

                                        1 Reply Last reply Reply Quote 0
                                        • H
                                          Helfer_Panch
                                          last edited by Dec 19, 2015, 8:07 AM

                                          @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.
                                            This community forum collects and processes your personal information.
                                            consent.not_received