05/12/2025

NAS

Blocky : un ad-blocker léger pour votre NAS Synology

I. Présentation

Vous avez un NAS Synology et vous cherchez une solution légère pour bloquer les publicités et les sites malveillants sur tous les appareils de votre réseau ? Vous devriez regarder du côté de Blocky, une application qui remplie parfaitement cette mission.

Cette solution écrite en Go, déjà présentée dans un autre article, représente une alternative à des solutions populaires comme Pi-Hole et AdGuard Home. Elle se configure à partir d'un fichier de configuration YAML et peut filtrer les requêtes DNS des clients de votre réseau via la technique DNS sinkhole (DNS menteur).

Elle mise avant tout sur la simplicité et l'efficacité : peu de ressources consommées, pour de très bonnes performances. Son principal point négatif, c'est qu'il n'y a pas d'interface web pour la configuration ou le reporting. Mais, après tout, cela n'est pas si grave si vous n'êtes pas allergique aux fichiers de configuration au format texte.

Dans ce tutoriel, nous verrons comment déployer Blocky sur un NAS Synology à l'aide de Container Manager (Docker).

II. Créer le container Blocky

À partir de l'interface de DSM, créez un nouveau répertoire dédié au projet Blocky dans le partage docker. Créez l'arborescence suivante :

  • docker
    • blocky
      • config

Dans le dossier config, vous devez créer (ou déposer) le fichier de configuration config.yml de l'application.

Voici un exemple de configuration (similaire à celle présentée dans l'autre article Blocky, mais légèrement ajustée), que vous pouvez utiliser :

# Serveurs DNS en amont pour la résolution de noms
upstreams:
  groups:
    default:
      # DNS over HTTPS upstreams
      - https://cloudflare-dns.com/dns-query
      - https://dns.google/dns-query
      - https://dns.quad9.net/dns-query
  # Selectionner les deux serveurs upstreams les plus rapides
  strategy: parallel_best
  timeout: 2s
 
# Connectivité IPv4 uniquement (nécessaire pour Docker), sinon : v6, dual
connectIPVersion: v4
 
# Redirecteur conditionnel pour le domaine local
# Résoudre it-connect.local via le serveur 192.168.14.201
conditional:
  mapping:
    it-connect.local: 192.168.14.201 
 
# Déclarer les listes, ici des "denylists" = liste de blocage
# ads : liste de Steven Black pour les publicités
# porn : liste de Steven Black pour la pornographie
blocking:
  denylists:
    ads:
      - https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
    porn:
      - https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn-only/hosts
  # Groupes de clients
  # Groupe par défaut, appliquer la liste "ads"
  # Groupe avec l'adresse IP 192.168.14.100, appliquer les listes "ads" et "porn"
  clientGroupsBlock:
    default:
      - ads
    192.168.14.100:
      - ads
      - porn
  # Bloquer en retournant 0.0.0.0 comme IP
  blockType: zeroIp
  blockTTL: 1m
  loading:
    refreshPeriod: 6h
    downloads:
      timeout: 60s
      attempts: 5
      cooldown: 10s
    concurrency: 16
    # Répondre aux requêtes DNS dès le démarrage
    strategy: fast
    maxErrorsPerSource: 5
 
# Précharger les requêtes DNS populaires
# Pendant 24h (prefectExpires), à partir de 3 requêtes sur un nom (prefectTheshold)
# maxItemsCount - Limiter à 500 éléments en cache (utile pour limiter la consommation en RAM, sinon 0 pour illimité)
# prefetchMaxItemsCount - Limiter à 500 éléments à précharger (requêtes "hot")
caching:
  maxItemsCount: 500
  prefetching: true
  prefetchExpires: 24h
  prefetchThreshold: 3
  prefetchMaxItemsCount: 500
 
# Résoudre les noms des serveurs upstreams
bootstrapDns:
  - https://8.8.8.8/dns-query

# Log du service Blocky
# Journaliser les erreurs uniquement, par défaut "info"
log:
  level: error

Cette configuration va notamment :

  • Résoudre les noms DNS en utilisant le protocole DNS-over-HTTPS grâce aux serveurs déclarés sous upstreams.
  • Bloquer les publicités + les malwares pour tous les clients en utilisant les données de la liste de Steven Black
  • Bloquer les publicités + les malwares + les sites pornographiques uniquement pour le client avec l'adresse IP 192.168.14.100 (vous pouvez mettre une adresse réseau)

Ensuite, à l'aide de Container Manager, vous devez créer un nouveau projet.

Nommez ce projet "blocky", sélectionnez le chemin "/docker/blocky" puis choisissez l'option "Créer un fichier docker-compose.yml".

Précisez le code suivant :

services:
  blocky:
    image: spx01/blocky
    container_name: blocky
    restart: unless-stopped
    hostname: it-connect-blocky
    ports:
      - "53:53/tcp"
      - "53:53/udp"
    environment:
      - TZ=Europe/Paris
    volumes:
      - /volume1/docker/blocky/config/config.yml:/app/config.yml

Ce conteneur va utiliser l'image spx01/blocky et il sera en écoute sur le port 53, correspondant au DNS par défaut. Le fichier de configuration précédemment créé sera mappé dans le container.

Poursuivez jusqu'à la fin et lancez la création du projet... Vous obtenez un projet avec un seul conteneur, comme le montre l'image ci-dessous.

Le déploiement de Blocky s'arrête là, puisqu'il n'y a pas d'interface web. La suite consiste à tester l'efficacité de Blocky.

III. Vérifier le fonctionnement de Blocky

Vous devez utiliser votre NAS comme serveur DNS, et c'est l'application Blocky qui va traiter les requêtes DNS de votre appareil. Avant d'envisager une modification de votre serveur DHCP (que ce soit sur votre box ou ailleurs) pour distribuer l'adresse IP du NAS comme DNS, testez sur un seul équipement. Pour cela, modifiez l'adresse IP du serveur DNS dans les paramètres de la carte réseau.

Quand c'est fait, naviguez sur Internet ! En principe, les publicités ne doivent plus se charger ! Elles doivent laisser place à des encarts vides ou blancs, puisque Blocky va bloquer les requêtes DNS. Ici, nous avons utilisé les listes de blocage disponibles sur le dépôt Steven Black et qui ont une bonne réputation.

IV. Conclusion

En moins de 10 minutes, vous pouvez déployer Blocky sur votre NAS Synology et bénéficier d'un bloqueur de publicités sur votre réseau local. Au-delà de bloquer les publicités (qui restent vitales pour certains sites web comme IT-Connect), vous pouvez bloquer certaines catégories de sites web ou les sites malveillants. Tout dépend des listes que vous utilisez avec Blocky : vous pouvez donc l'adapter à différents usages.

Ce qui me plait avec Blocky, c'est sa légèreté et son efficacité. Sur un NAS, même avec peu de ressources, vous pouvez l'exécuter dans un container. Sur mon NAS, il consomme 36 Mo de RAM et 0.03% de CPU...

Pour approfondir la configuration de l'outil :

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “Blocky : un ad-blocker léger pour votre NAS Synology

  • Bonjour,
    interessant ce petit Blocky. J’adore ces projets « alternatifs » aux solutions deja bien en place .
    En ce qui concerne le sujet, personnellement, j’ai besoin d’un bon reporting afin de pouvoir agir en amont en cas d’abus. Gageons que Blocky va s’ameliorer dans le temps.
    Chris

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.