Files
2026-06-09 18:40:21 +02:00

7.8 KiB


title: Unbound created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, dns, resolver, privacy, networking, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=DNS, https://github.com/NLnetLabs/unbound]

Unbound

📋 Métadonnées

Attribut Valeur
Nom Unbound
Slug unbound
Description Resolver DNS récursif, validant et avec cache
Site officiel https://www.nlnetlabs.nl/projects/unbound/about/
Repository https://github.com/NLnetLabs/unbound
Licence BSD-3-Clause
Stars GitHub 4,596
Catégorie DNS
Type app
Tags [catalogue, dns, resolver, privacy, networking]

📝 Description

Unbound est un serveur DNS récursif validant et mettant en cache, développé par NLnet Labs. Il est conçu pour offrir une résolution DNS sécurisée, rapide et respectueuse de la confidentialité.

Caractéristiques principales

  • Validation DNSSEC : Vérifie l'authenticité des réponses DNS
  • Cache intelligent : Réduit la latence et la charge sur les serveurs upstream
  • Confidentialité : Support de DoT (DNS over TLS) et DoH (DNS over HTTPS)
  • Léger et rapide : Faible empreinte mémoire, haute performance
  • Sécurisé : Conception sécurisée par défaut, sandboxing
  • Modulaire : Support des plugins et configuration flexible
  • Respect des standards : Implémentation conforme aux RFC DNS

Cas d'usage

  • Serveur DNS local pour réseau domestique ou entreprise
  • Resolver DNS de confiance pour remplacer les DNS du FAI
  • Composant d'infrastructure DNS interne
  • Protection contre le DNS spoofing et le cache poisoning

🚀 Installation

Docker Compose (Recommandé)

version: '3.8'

services:
  unbound:
    image: mvance/unbound:latest
    container_name: unbound
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "853:853/tcp"    # DNS over TLS (optionnel)
    volumes:
      - ./config/unbound.conf:/opt/unbound/etc/unbound/unbound.conf:ro
      - unbound-data:/opt/unbound/etc/unbound/var
    environment:
      - TZ=Europe/Paris
    networks:
      - dns-network
    # Sécurité
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE
      - SETGID
      - SETUID
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 256M
        reservations:
          cpus: '0.1'
          memory: 64M

volumes:
  unbound-data:

networks:
  dns-network:
    driver: bridge

Configuration minimale (unbound.conf)

server:
    verbosity: 1
    interface: 0.0.0.0
    port: 53
    do-ip4: yes
    do-ip6: yes
    do-udp: yes
    do-tcp: yes
    
    # Sécurité
    harden-glue: yes
    harden-dnssec-stripped: yes
    harden-referral-path: yes
    
    # Performance
    num-threads: 2
    msg-cache-slabs: 4
    rrset-cache-slabs: 4
    infra-cache-slabs: 4
    key-cache-slabs: 4
    rrset-cache-size: 128m
    msg-cache-size: 64m
    so-rcvbuf: 1m
    so-sndbuf: 1m
    
    # Confidentialité
    qname-minimisation: yes
    aggressive-nsec: yes
    use-caps-for-id: yes
    
    # Logging
    logfile: "/var/log/unbound/unbound.log"
    log-queries: yes
    log-replies: yes

    # Contrôle d'accès (ajuster selon votre réseau)
    access-control: 127.0.0.0/8 allow
    access-control: 192.168.0.0/16 allow
    access-control: 10.0.0.0/8 allow
    access-control: 172.16.0.0/12 allow

# Forwarders sécurisés (optionnel - sinon résolution racine)
# forward-zone:
#     name: "."
#     forward-addr: 1.1.1.1@853#cloudflare-dns.com
#     forward-addr: 1.0.0.1@853#cloudflare-dns.com
#     forward-ssl-upstream: yes

# DNS over TLS
# tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt

Image alternative : Officielle NLnet Labs

services:
  unbound:
    image: nlnetlabs/unbound:latest
    container_name: unbound
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
    volumes:
      - ./config:/etc/unbound
    environment:
      - UNBOUND_UID=1000
      - UNBOUND_GID=1000

🔧 Configuration avancée

DNS over TLS (DoT)

server:
    interface: 0.0.0.0@853
    tls-service-key: "/etc/unbound/tls/server.key"
    tls-service-pem: "/etc/unbound/tls/server.pem"
    tls-port: 853

Forwarding vers Quad9 (sécurisé + filtered)

forward-zone:
    name: "."
    forward-addr: 9.9.9.9@853#dns.quad9.net
    forward-addr: 149.112.112.112@853#dns.quad9.net
    forward-ssl-upstream: yes

Interface Web (via unbound-control)

# Activer le contrôle à distance
unbound-control-setup

# Commandes utiles
unbound-control status
unbound-control stats_noreset
unbound-control flush

📊 Monitoring

Métriques Prometheus (via unbound-exporter)

  unbound-exporter:
    image: klutchell/unbound-exporter:latest
    container_name: unbound-exporter
    restart: unless-stopped
    ports:
      - "9167:9167"
    command: --unbound.host tcp://unbound:8953
    depends_on:
      - unbound

Healthcheck

    healthcheck:
      test: ["CMD", "drill", "@127.0.0.1", "cloudflare.com"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s

🔒 Sécurité

Bonnes pratiques

  1. Restreindre l'accès : Limiter les access-control à votre réseau local
  2. Activer DNSSEC : harden-dnssec-stripped: yes (activé par défaut)
  3. Minimisation QNAME : qname-minimisation: yes pour la confidentialité
  4. Cache poison protection : harden-glue: yes, harden-referral-path: yes
  5. Mises à jour : Maintenir Unbound à jour pour les correctifs de sécurité
  6. Réseau isolé : Exécuter dans un conteneur avec privilèges minimaux

Hardening

server:
    # Protection contre les attaques
    unwanted-reply-threshold: 10000
    harden-large-queries: yes
    harden-short-bufsize: yes
    
    # Limites
    ratelimit: 1000
    ip-ratelimit: 1000
    
    # Cache poisoning protection
    val-clean-additional: yes

🌐 Alternatives

Alternative Description Cas d'usage
BIND Le serveur DNS de référence Grandes infrastructures, DNS autoritaire
Knot Resolver Resolver moderne et modulaire Haute performance, scripting Lua
PowerDNS Recursor Resolver rapide et flexible Environnements PowerDNS existants
CoreDNS DNS cloud-native Kubernetes, microservices
dnsmasq Léger et simple Routeurs, petits réseaux

🔗 Pages Liées

Comparaison

Critère Unbound BIND Knot Resolver
Facilité
Performance
DNSSEC
Modularité
Documentation

📚 Ressources


🆕 Changelog

Version Date Changements
1.0 2024 Création de la fiche

Fiche générée pour le Catalogue Self-Hosted - Catégorie DNS