---
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é)

```yaml
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)

```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

```yaml
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)

```conf
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)

```conf
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)

```bash
# 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)

```yaml
  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

```yaml
    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

```conf
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

- [[app-pihole]] — Resolver + bloqueur (peut utiliser Unbound en backend)
- [[app-adguard-home]] — Alternative tout-en-un avec UI web
- [[app-blocky]] — Proxy DNS léger en Go
- [[app-technitium-dns]] — Serveur DNS autoritaire
- [[cat-dns]] — Toutes les apps DNS du catalogue

### Comparaison

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

---

## 📚 Ressources

- [Documentation officielle](https://www.nlnetlabs.nl/documentation/unbound/)
- [Manuel unbound.conf](https://www.nlnetlabs.nl/documentation/unbound/unbound.conf/)
- [GitHub Repository](https://github.com/NLnetLabs/unbound)
- [Guide de hardening DNS](https://www.cisa.gov/dns-hardening-guide)

---

## 🆕 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*
