Skip to content

Instantly share code, notes, and snippets.

@m4dz
Created January 29, 2016 08:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save m4dz/cd5ec29f970b0299cd3d to your computer and use it in GitHub Desktop.
Save m4dz/cd5ec29f970b0299cd3d to your computer and use it in GitHub Desktop.
Surcharge DNS sur le LAN

Contexte

Je cherche à mettre en place un serveur DNS sur mon LAN, qui servirait a la fois de cache local et permettrait de s'affranchir d'une censure DNS éventuelle pratiquée par un FAI. Quitte à utiliser un serveur DNS local au LAN, autant lui faire servir des IP locales sur certains FQDN, je m'explique : j'utilise un domaine (foo.tld) dont certains sous-domaines pointent vers des machines présentent sur mon LAN (home.foo.tld par exemple). C'est très pratique pour accéder aux machines depuis l'extérieur (le routeur en tête du LAN fait du port-forwarding). Problème : quand je suis dans le LAN, je continue d'appeler l'IP publique du routeur pour atteindre les machines à l'intérieur du LAN au lieu de taper sur les IP LAN. Un serveur DNS local me permet donc de récupérer certains FQDN (home.foo.tld) pour le renvoyer vers une IP locale. Problème : j'ai aussi besoin de conserver d'autres FQDN (www.foo.tld) qui se trouvent, eux, à l'extérieur.

Pistes

J'envisage 2 solutions possibles :

  1. Un serveur Unbound sur le LAN, qui résouds les requêtes DNS sur les ROOTS DNS, et qui surcharge la local-zone foo.tld. Mais est-ce que Unbound permet de ne surcharger que certains records de la zone (et résoud les autres enregistrements comme www.foo.tld sur le serveur DNS mandataire) ? Ou est-ce qu'il va falloir dupliquer toute la zone (ce qui n'est pas très efficace) ?
  2. Un serveur DNSmasq sur le LAN, qui ne va faire que du cache (et pourra rediriger les requêtes vers les serveurs OpenDNS par exemple), et ne lui faire surcharger que les enregistrements qui doivent pointer vers les IP locales (il me semble que c'est possible)

Des avis ?

@pygillier
Copy link

KISS !

perso, j'ai repositionné toutes mes machines locales dans un sous-domaine qui n'est résolu qu'en local. Cela ne répond pas à la contraine d'accès indifférencié interne/externe mais m'oblige, ce qui est bien, à bien définir/tracer les accès externes au niveau du routeur.

IIRC, tu ne peux surcharger que des zones entières et non des morceaux (là, je laisse volontiers les pros du DNS/Unbound répondre aec autorité).

@m4dz
Copy link
Author

m4dz commented Jan 29, 2016

Justement, j'ai besoin de conserver un accès indifférencié externe / interne (plutôt que de devoir reconfigurer des services à chaque fois que je pars en ballade).

Après si je dois surcharger une zone complète, j'irai surement plus vers Unbound… à voir :D

@bortzmeyer
Copy link

Déjà, pour des exemples, il faut utiliser le TLD .example (RFC 2606). Le jour où .tld sera délégué, ton texte sera dur à comprendre...

@bortzmeyer
Copy link

Sinon, je suis d'accord avec pygillier, c'est la solution propre. Autrement, un PowerDNS Recursor avec une règle Lua particulière ?

@m4dz
Copy link
Author

m4dz commented Jan 29, 2016

Ah mais je ne la connaissais pas cette RFC 2606 dis donc ! Je note 😄

Bon, je vais fouiller vos pistes du coup, merci !

@m4dz
Copy link
Author

m4dz commented Jan 29, 2016

bien définir/tracer les accès externes au niveau du routeur

@pygillier tu fais quoi / comment du coup ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment