Outils pour utilisateurs

Outils du site


blocky

Blocky : installation et configuration

Cette page est un brouillon et contient probablement beaucoup d'erreurs.

Blocky est un petit serveur DNS local qui apporte les avantages suivants:

  • Permet le filtrage (avec des listes de blocage configurables)
  • Fait office de cache, accélérant les réponses DNS.
  • Peut forcer le TTL, diminuant les requêtes DNS sortantes
  • Peut utiliser plusieurs serveurs DNS upstream en choisissant le plus rapide.
  • C'est un simple exécutable.
  • Il consomme très peu de ressources.
  • Il permet de configurer beaucoup de comportements différents et les fichiers de configuration ne sont pas trop compliqués à comprendre.

Site officiel : https://0xerr0r.github.io/blocky/latest/

Installation

Vous pouvez utiliser le script d'installation : https://github.com/m0zgen/blocky-installer (à lancer en root). Ce script va installer blocky dans /opt/blocky et le démarrer en tant que service systemd.

Notez que vous avez probablement déjà un résolveurs DNS sur le port 53 (systemd-resolved.service). Blocky vous proposera de le désactiver.

Pensez à rebooter après installation.

Configuration

Blocky possède énormément d'options, mais voici ma configuration. Notez que je fais quelquechose qui est considéré comme "mal" : Je force le TTL à 6 heures pour avoir moins de requêtes DNS sortantes (cela peut poser problème avec les services comme CloudFront qui changent très fréquemment d'IP. Si vous avez un problème pour vous connecter sur votre compte Minecraft, c'est probablement à cause d'un élevé TTL forcé.)

J'ai donc copié cette config dans /opt/blocky/config.yml:

upstreams:
  init:
    strategy: fast
  groups:
    default:
      # dns.sb
      - 185.222.222.222
      - 45.11.45.11
      - dot.sb
      - https://doh.dns.sb/dns-query
      # Mullvad (sans filtrage)
      - 194.242.2.2
      - dns.mullvad.net
      - https://dns.mullvad.net/dns-query
      # dns4all.eu
      - 194.0.5.3
      - 194.0.5.64
      - dot.dns4all.eu 
      - https://doh.dns4all.eu/dns-query
      # LibreDNS.gr      
      - 88.198.92.222
      - 192.71.166.92
      - dot.libredns.gr 
      - https://doh.libredns.gr/dns-query

  strategy: parallel_best
  timeout: 2s

connectIPVersion: dual

blocking:
  denylists:
    ads:
      - https://sebsauvage.net/hosts/raw
  clientGroupsBlock:
    default:
      - ads
  blockType: zeroIp

caching:
  minTime: 6h
  maxTime: 6h

ports:
  dns: 53
  tls: 853
  http: 4000

Redémarrez blocky après un changement de config : sudo systemctl restart blocky

  • dns: 53 : Blocky écoute sur le port 53 pour les requêtes DNS standard
  • tls: 853: Blocky écoute sur le port 583 pour les requêtes DoT (DNS-over-TLS).

Garder le résolveur systemd

Il peut arrive que certains logiciels se plaignent de ne pas pouvoir modifier les paramètres DNS du système (comme certains clients VPN). C'est normal, ils connaissent généralement systemd-resolve mais pas blocky. Dans ce cas on peut rétablir le résolveur standard du système mais garder blocky en parallèle (par exemple pour l'utiliser juste dans le navigateur).

Pour remettre en route le résolveur standard du système tout en gardant blocky:

  • Dans /opt/blocky/config.yml, changez dns:53 en dns:4053
  • Redémarrez blocky: sudo systemctl restart blocky
  • Relancez le DNS du système
    sudo systemctl unmask systemd-resolved.service
    sudo systemctl enable systemd-resolved.service
    sudo systemctl start systemd-resolved.service

Vous aurez ainsi les services DNS qui tournent en parallèle (le système sur 53, blocky sur 4053).

Vous pouvez utiliser blocky uniquement dans votre navigateur pour profiter du cache DNS. Pour cela il faut activer DNS-over-HTTP dans Blocky (car les navigateurs ne savent pas utiliser DNS-over-TLS).

Dans le répertoire /opt/blocky, en root, générez des clés:

openssl ecparam -name prime256v1 -genkey -noout -out server.openssl
key req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
chown blockyusr:blockyusr *

et modifiez la configuration de /opt/blocky/config.yml:

certFile: /opt/blocky/server.crt
keyFile: /opt/blocky/server.key

ports:
  dns: 4053     # Port pour DNS (pour ne pas empiéter sur celui du système sur le port 53)
  tls: 4853     # Port pour DNS-over-TLS (pour ne pas empiéter sur celui du système sur le port 853)
  http: 4000
  https: 4443   # Port pour DNS-over-HTTPS

Et redémarrez blocky. Vous avez maintenant un service DNS-over-HTTP qui répond sur le port 4443. Vous pouvez utiliser l'URL https://127.0.0.1:4443/dns-query dans la configuration DNS de Firefox.

FIXME: Blocky reçoit bien les requêtes de Firefox et y répond, mais ne semble pas utiliser le cache (response_type=RESOLVED au lieu de CACHED). Et dans about:networking#dns dans Firefox, on voit que les TTL des domaine n'ont pas la valeur que j'ai forcée dans Blocky. Comme si Blocky ignorait les paramètres de cache en mode DNS-over-HTTPS.

Tester le blocage sur le port DNS standard : dig @127.0.0.1 -p 4053 doubleclick.net doit renvoyer 0.0.0.0.

Utilisation

  • Blocky possède une interface en ligne de commande : https://0xerr0r.github.io/blocky/latest/interfaces/#cli
    • Aide : sudo /opt/blocky/blocky help
    • Chacunes des commandes possède son aide: sudo /opt/blocky/blocky blocking help
  • Désactiver le blocage : sudo /opt/blocky/blocky blocking disable
  • Désactiver le blocage pendant 30 minutes : sudo /opt/blocky/blocky blocking disable –duration 30m
  • Réactiver le blocage : sudo /opt/blocky/blocky blocking enable
  • Status du service: sudo systemctl status blocky
  • Redémarrer le service: sudo systemctl restart blocky
  • Voir les logs de blocky: sudo journalctl -f -u blocky.service
blocky.txt · Dernière modification : 2025/05/24 16:52 de sebsauvage