====== Blocky: Установка и настройка ======
Blocky - это DNS-прокси с функцией вырезания рекламы, аналог знаменитого Pi-Hole: https://wiki.rtzra.ru/software/pihole/pihole-install. Работает следующим образом: проксирует все DNS-запросы и вырезает все домены занесенные в черный список. Что это дает: экономится траффик, освобождается интернет-канал от избыточных запросов, на устройствах не нужно устанавливать блокировщики рекламы. Периодически обновляет списки блокировки (время меняется в настройках).
Домашняя страничка: https://0xerr0r.github.io/blocky/
**Готовые скрипты можно взять тут**: https://github.com/rtzra/docker/tree/master/blocky
План установки:
* Настройка конфигурации
* Запуск в Docker
* Настройка Prometheus для сбора метрик
* Настройка Grafana Dashboard для получения красивых отчетов
===== Настройка конфигурации =====
Подробно все опции описаны тут: https://0xerr0r.github.io/blocky/configuration/
Список публичных DNS-серверов с описанием и возможностями можно найти тут: https://dnsprivacy.org/public_resolvers/, я предпочитаю использовать DNS-over-TLS (DoT).
Списки для блокировки можно взять тут: https://firebog.net/ и для русскоязычного сегмента тут: https://github.com/AdguardTeam/AdguardFilters
Пример готового файла конфигурации blocky.conf:
# Configuration file blocky.conf for Blocky # https://0xerr0r.github.io/blocky/
upstream:
# List of public DNS servers: https://0xerr0r.github.io/blocky/additional_information/#list-of-public-dns-servers
default:
# - tcp-tls:172.16.1.2 # You own secure upstream DNS server
- tcp-tls:1.1.1.1 # one.one.one.one
- tcp-tls:1.0.0.1 # one.one.one.one
- tcp-tls:8.8.8.8 # Google
- tcp-tls:8.8.4.4 # Google
- tcp-tls:9.9.9.9 # quad9.net
#- 149.112.112.112 # quad9.net
# Restrict DNS for some network
#192.168.100.0/24:
# - 1.1.1.1
# - 9.9.9.9
conditional:
rewrite:
example.com: YOU-OWN-DOMAIN.COM
mapping:
YOU-OWN-DOMAIN.COM: udp:10.10.20.1,udp:10.10.21.1
# for reverse DNS lookups of local devices
20.10.10.in-addr.arpa: udp:10.10.20.1
21.10.10.in-addr.arpa: udp:10.10.21.1
blocking:
refreshPeriod: 30 # Reload blocklist Every 30 minutes, default 60
blockType: zeroIp
blackLists:
default:
- https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
suspicious:
- https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt
- https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
- https://v.firebog.net/hosts/static/w3kbl.txt
advertising:
- https://easylist.to/easylist/easylist.txt
- https://secure.fanboy.co.nz/fanboy-cookiemonster.txt
- https://adaway.org/hosts.txt
- https://v.firebog.net/hosts/AdguardDNS.txt
- https://v.firebog.net/hosts/Admiral.txt
- https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
- https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
- https://v.firebog.net/hosts/Easylist.txt
- https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
- https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts
- https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts
tracking-telemetry:
- https://easylist.to/easylist/easyprivacy.txt
- https://v.firebog.net/hosts/Easyprivacy.txt
- https://v.firebog.net/hosts/Prigent-Ads.txt
- https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts
- https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
- https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt
malicious:
- https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt
- https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt
- https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt
- https://v.firebog.net/hosts/Prigent-Crypto.txt
- https://bitbucket.org/ethanr/dns-blacklists/raw/8575c9f96e5b4a1308f2f12394abd86d0927a4a0/bad_lists/Mandiant_APT1_Report_Appendix_D.txt
- https://phishing.army/download/phishing_army_blocklist_extended.txt
- https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt
- https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt
- https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts
- https://urlhaus.abuse.ch/downloads/hostfile/
other:
- https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser
clientGroupsBlock:
default:
- default
- suspicious
- advertising
- tracking-telemetry
- malicious
- other
# optional: use this DNS server to resolve blacklist urls and upstream DNS servers (DOH). Useful if no DNS resolver is configured an
bootstrapDns: tcp:1.1.1.1
# Define ports
port: 53
httpPort: 4000
# Prometheus Statistic
prometheus:
enable: true
path: /metrics
# optional: Drop all AAAA query if set to true. Default: false
disableIPv6: true
# Log Settings
logLevel: info
logFormat: text
logTimestamp: true
# Log Query
queryLog:
dir: /logs
perClient: true
logRetentionDays: 7
===== Запуск в Docker =====
Небольшой скрипт для запуска:
#!/bin/sh
# see https://github.com/0xERR0R/blocky
# https://0xerr0r.github.io/blocky/
docker ps -a --no-trunc | grep "blocky" | awk '{print $1}' | xargs docker container stop
docker pull spx01/blocky
echo y | docker system prune --volumes
sudo cp blocky.yml /opt/blocky.yml
sudo docker volume create blocky_logs
sudo docker volume create block_blacklist
docker run -d --restart unless-stopped \
-v blocky_blacklist:/app/blacklists/ \
-v blocky_logs:/logs \
--name blocky -v /opt/blocky.yml:/app/config.yml \
-p 4000:4000 -p 53:53/udp \
spx01/blocky
Логика работы:
* Останавливает и удаляет все запущенные контейнеры с blocky
* Тянет из интернета последнюю версию
* Удаляет все неиспользуемые Volumes (очистка логов)
* Копирует файл конфигурации
* Создает Volumes с именами blocky_logs (здесь хранятся логи запросов) и block_blacklist (сюда можно подкладывать новые списки для блокировки)
* Запускает контейнер с blocky
===== Настройка Prometheus для сбора метрик =====
Добавляем в настройки Prometheus новый job:
scrape_configs:
...
- job_name: 'blocky'
static_configs:
- targets: ['10.10.10.2:4000']
где 10.10.10.2 - IP сервера с запущенным blocky в Docker
Перезапускаем Prometheus, убеждаемся что метрики появились.
===== Настройка Grafana Dashboard для получения красивых отчетов =====
Импортируем в Grafana новый Dashboard: https://grafana.com/grafana/dashboards/13768
Источником данных выбираем наш Prometheus.
Готово, можно проверять.
{{tag>blocky dns spam adv advertisment blocking блокировка рекламы}}