-
Notifications
You must be signed in to change notification settings - Fork 1
DNS, TLS & DNSSEC
Par défaut OpenWRT utilise dnsmasq
pour le service de base et de redirection. Pour des raisons de performance, de risques de piratage, de fiabilité ou autres il peut parfois s'avérer intéressant d'utiliser un résolveur récursif tel que unbound
ou stubby
.
Personnellement je recommande d'utiliser stubby
puisqu'il utilise moins d'espace sur des routeurs dont la capacité de stockage est réduite. De plus il s'avère que unbound
crash au démarrage et est passablement plus compliqué à configurer. En comparaison stubby
est fort simple d'utilisation et entièrement compatible uci
au niveau de la gestion de sa configuration.
La solution proposé consiste à installer stubby
et le configurer à titre de second service de résolution DNS:
- Écoute les requêtes DNS sur le port 5453 (plutôt que l'habituel port 53)
- Effectue les requêtes en mode TLS vers les serveurs DNS de notre choix (ex: quad9.net ou cloudflare-dns.com)
Ensuite il s'agit d'ajuster la configuration de notre résolveur DNS par défait dnsmasq
afin de:
- Toujours résoudre les adresses de notre réseau locale (192.168.x.y) via
dnsmasq
- Relayer toutes les autres requêtes reçues par
dnsmasq
versstubby
OPTIONNEL: Pour terminer activer DNSSEC
Par défaut utilise les service DNS de cloudflare-dns.com. La configuration peut cependant être adaptée pour utiliser quad9.net ou autres:
Installer stubby
:
root@openwrt:~# opkg install stubby
Configurer stubby
afin d'écouter sur le port 5453 de notre réseau local:
uci add_list stubby.global.listen_address='192.168.80.1@5453'
Activer les journaux *.crit
et plus (problème avec canal *.err
):
uci set stubby.global.log_level='2'
Valider et appliquer les changements
uci changes stubby
uci commit
Redémarrer le service pour que les changements prennent effet:
root@th0ma7-router:~# /etc/init.d/stubby enable
root@th0ma7-router:~# /etc/init.d/stubby restart
Tester la résolution DNS à partir d'un client:
$ dig @192.168.80.1 -p5453 -t A +noall +answer www.google.com
www.google.com. 186 IN A 172.217.13.132
Références:
Ajuster dnsmasq
afin de:
- Résoudre les adresses locales à notre réseau directement
- Faire pointer vers
unbound
pour les requêtes externes
uci set dhcp.@dnsmasq[0].noresolv='1'
uci delete dhcp.@dnsmasq[0].server
uci add_list dhcp.@dnsmasq[0].server='127.0.0.1#5453'
Valider et appliquer les changements:
uci changes dhcp
uci commit dhcp
Redémarrer le service dnsmqsq
afin de prendre en charge les chagements:
root@openwrt:~# /etc/init.d/dnsmasq restart
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: no lease, failing
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: no lease, failing
Tester la résolution DNS à partir d'un client:
$ dig @192.168.80.1 -t A +noall +answer www.google.com
www.google.com. 131 IN A 172.217.13.100
Références:
Avec la combinaison de stubby+dnsmasq la portion DNSSEC peut être exécutée à l'une ou l'autre de ces 2x couches DNS. J'ai opté pour configurer stubby
afin d'effecuter la validation DNSSEC avec dnsmasq
servant de proxy afin de retransmettre les données DNSSEC aux clients. Voir excellent guide complet à cet effet:
Pour ce faire il faut tout d'abord remplacer le paquet dnsmasq
par sa version complète dnsmasq-full
:
root@openwrt:~# cd /tmp
root@openwrt:~# opkg install dnsmasq-full --download-only
root@openwrt:~# opkg remove dnsmasq
root@openwrt:~# opkg install dnsmasq-full --cache .
root@openwrt:~# rm *.ipk
Afin que stubby
effectue la validation DNSSEC il est requis d'ajuster l'option dnssec_return_status='1'
via:
uci set stubby.global.dnssec_return_status=1
uci commit && reload_config
Une fois la validation DNSSEC activée au niveau de stubby
, la portion dnsmasq
doit être configurée afin de permettre la transmission des données DNSSEC jusqu'aux clients. Ceci s'effectue en ajustant l'option proxydnssec='1'
via:
uci set dhcp.@dnsmasq[0].proxydnssec=1
uci commit && reload_config
Valider que la résolution DNS avec DNSSEC (option +dnssec
)fonctionne autant sur le port 5453 de stubby
que le port par défaut de dnsmasq
:
$ dig @192.168.80.1 -p5453 -t A +noall +answer +dnssec www.google.com
www.google.com. 107 IN A 172.217.13.164
$ dig @192.168.80.1 -t A +noall +answer +dnssec www.google.com
www.google.com. 102 IN A 172.217.13.164