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

321 lines
7.8 KiB
Markdown

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