Aller au contenu
Lecture · 2 min

DNS split-horizon

CoreDNS + AdGuard : les mêmes noms de domaine, résolus différemment dedans et dehors.

FiableSécuriséPrivé

Contexte / besoin

Les services auto-hébergés portent des noms de domaine publics, mais la plupart ne sont joignables que depuis le réseau privé. Il faut donc que le même nom résolve vers la bonne destination selon l’endroit d’où on interroge. C’est le principe du split-horizon : une vue interne, une vue externe, et aucune topologie privée publiée dans le DNS public.

S’ajoutent deux besoins qui relèvent autant du confort que de la sécurité : filtrer pubs et trackers au niveau du réseau pour tous les appareils, et ne pas envoyer les requêtes DNS en clair chez le fournisseur d’accès.

Contraintes

Options envisagées

Décision & pourquoi

Séparer les responsabilités, avec CoreDNS en frontal : c’est lui que les clients du réseau privé interrogent. Les domaines auto-hébergés sont résolus sur place, par des zones internes en wildcard qui renvoient les adresses privées. Tout le reste est transmis à AdGuard, qui filtre pubs et trackers puis fait la résolution sortante chiffrée (DoH) vers l’amont. Chaque brique fait une chose et la fait bien. Les deux se configurent en fichiers versionnés.

Ce montage est peu courant à cette échelle. C’est précisément le genre de sujet réseau que je préfère comprendre en profondeur plutôt que subir.

Tradeoff assumé

Deux services au lieu d’un : deux configurations à maintenir, et une dépendance de plus sur le chemin critique, puisque le DNS interne devient vital pour le réseau privé. J’accepte ce coût parce que la séparation des rôles rend chaque partie facile à comprendre, et parce que le mode dégradé reste simple : sans DNS interne, les résolveurs publics prennent le relais pour tout ce qui est public.

Résultat

Comment une requête est résolue (vue logique)

Vue simplifiée, sans adresses ni topologie réelle :

  1. Un appareil du réseau privé interroge le résolveur local (CoreDNS).
  2. Domaine auto-hébergé : la zone interne répond directement avec l’adresse privée du reverse proxy.
  3. Tout le reste part vers AdGuard. Domaine en blocklist : réponse bloquée.
  4. Sinon, résolution chiffrée (DoH) vers l’amont public.

Depuis Internet, aucune de ces vues internes n’existe. Seuls les enregistrements publics volontairement exposés répondent.

Le détail de l’override interne fait l’objet d’un write-up : Override DNS interne avec CoreDNS.