Fonctionnement du réseau
Le réseau DNF se comprend à deux échelles : une zone locale isolée, puis plusieurs zones reliées par un VPN maillé. Le vocabulaire est défini dans Concepts.
Réseau simple (une zone)
Section intitulée « Réseau simple (une zone) »Une zone, c’est une passerelle et ses machines.
- La passerelle partage Internet (NAT) et protège la zone (pare-feu).
dnsmasqdistribue les adresses (DHCP) et résout les noms locaux (<hôte>.<zone>).- Côté Internet (WAN), tout est fermé. Côté local (LAN), seuls SSH, DNS, DHCP et la page d’accueil sont ouverts.
Filtrage des publicités (AdGuardHome)
Section intitulée « Filtrage des publicités (AdGuardHome) »Service optionnel, activé sur la passerelle. Il s’intercale devant dnsmasq.
- AdGuardHome devient le résolveur DNS des postes (port 53).
- Il bloque publicités et traceurs, et chiffre les requêtes vers l’extérieur.
dnsmasqrecule sur un port interne et garde les noms locaux et le DHCP.
Réseau étendu (VPN)
Section intitulée « Réseau étendu (VPN) »Plusieurs zones sont reliées par un VPN maillé, coordonné par le serveur de coordination (HCS).
- Le HCS (Headscale) est public et orchestre le maillage.
- Chaque passerelle est subnet router : elle publie le sous-réseau de sa zone dans le VPN.
- Les zones se voient entre elles ; les machines distantes (smartphone, PC) rejoignent le réseau via Tailscale.
- Un résolveur pivot sur le HCS aiguille chaque zone vers son propre DNS.
Noms et résolution DNS
Section intitulée « Noms et résolution DNS »Trois familles de noms cohabitent sur le réseau. Toutes sont générées depuis
etc/config.yaml.
| Nom | Forme | Portée | Exemple |
|---|---|---|---|
| Nom simple | <hôte> | Tout le réseau interne | serveur |
| FQDN de zone | <nom>.<zone>.<domaine> | Tout le réseau interne | cloud.maison.domain.tld |
| Service global | <nom>.<domaine> | Internet inclus | git.domain.tld |
- Noms simples : ce sont les machines (hôtes déclarés). Résolus partout sur le réseau, vers l’adresse réelle de la machine, quelle que soit sa zone.
- FQDN de zone : ce sont les services d’une zone. Ils pointent vers la passerelle de cette zone, qui les sert via son proxy inverse.
- Services globaux : les services marqués
globaldansetc/config.yaml. Exposés sur le HCS avec un DNS public : joignables depuis n’importe où.
Qui résout quoi :
dnsmasq, sur chaque passerelle, connaît tous les noms internes (machines et services de toutes les zones) : il résout les noms simples et les FQDN.- La zone courante est résolue localement ; les autres zones et le domaine global sont aiguillés vers la bonne passerelle, ou vers le résolveur pivot du HCS.
- Les noms publics (Internet) partent vers les DNS chiffrés en amont, filtrés par AdGuardHome s’il est activé.
Le résolveur pivot (HCS)
Section intitulée « Le résolveur pivot (HCS) »Sur le serveur de coordination (HCS), un résolveur pivot centralise la résolution interne du VPN. Il connaît le découpage en zones et se contente d’aiguiller :
- chaque FQDN de zone part vers la passerelle de sa zone ;
- le reste part vers un DNS externe chiffré.
Toutes les machines du VPN l’interrogent sur l’adresse VPN du HCS. C’est lui qui relie les zones entre elles pour la résolution des noms.
Résolution depuis l’extérieur
Section intitulée « Résolution depuis l’extérieur »Une machine hors de toute zone (portable en déplacement, smartphone) rejoint le réseau par le VPN. Sa résolution DNS est scindée (split-DNS) selon la nature du nom demandé :
- noms internes : dirigés, à travers le VPN, vers le résolveur pivot du HCS, qui les aiguille ensuite vers la bonne passerelle ;
- noms publics : résolus par le résolveur local du réseau visité (box, point d’accès public), sans passer par le VPN.
Machines hors de leur zone
Section intitulée « Machines hors de leur zone »Une machine est déclarée dans une zone, mais elle ne s’y trouve pas toujours. Un portable part en déplacement. Une passerelle neuve est installée depuis une autre zone, avant d’être livrée sur place.
Sans disposition particulière, cette machine reçoit une adresse quelconque de la plage DHCP de la zone visitée, et son nom continue de désigner son adresse d’origine, injoignable depuis là. Rien ne permet de la joindre de façon fiable.
Une adresse réservée dans chaque zone
Section intitulée « Une adresse réservée dans chaque zone »Chaque zone réserve le bloc <préfixe>.6.x aux machines des autres zones.
Le générateur y place une réservation DHCP pour chaque adresse MAC connue du
réseau qui n’appartient pas à la zone.
Le numéro est attribué à l’échelle du réseau entier : une machine garde le même dernier octet dans toutes les zones où elle passe.
| Machine | Zone déclarée | Chez elle | En visite dans atelier |
|---|---|---|---|
portable | maison | 10.0.2.4 | 10.1.6.3 |
serveur | atelier | 10.1.1.2 | (elle y est chez elle) |
L’adresse est donc connue avant que la machine ne démarre, sans rien observer sur le réseau.
Un nom qui désigne l’endroit
Section intitulée « Un nom qui désigne l’endroit »La réservation vient avec un nom DNS dans la zone visitée. Le nom simple, lui, ne change pas de sens.
| Nom | Résout vers |
|---|---|
portable | son adresse d’origine, partout sur le réseau |
portable.atelier.domain.tld | son adresse dans la zone atelier |
Un bail qui ne bouge plus
Section intitulée « Un bail qui ne bouge plus »dnsmasq indexe les baux sur la seule adresse MAC, et non sur l’identifiant
client DHCP.
La raison : un même équipement n’annonce pas le même identifiant selon le système qui tourne dessus. Une image d’installation et le système installé passent pour deux machines différentes, et reçoivent deux adresses. En s’appuyant sur la MAC, l’adresse ne change plus entre l’installation et le premier démarrage réel.
Ce que fait l’outillage
Section intitulée « Ce que fait l’outillage »Les recettes d’installation calculent l’adresse toutes seules. Elles identifient d’abord la zone où se trouve la machine d’administration, à partir de sa passerelle par défaut réelle et non de sa zone déclarée (un portable d’administration est précisément ce qui se déplace), puis en déduisent l’adresse de la cible.
Reste le déploiement : Colmena 🡕 s’adresse à un
nœud par son nom, qui désigne l’adresse d’origine. Pour un hôte en visite,
just configure pose donc une redirection SSH temporaire, retirée en fin
d’installation ou à la main :
just roaming # afficher les redirections en coursjust roaming-clear # toutes les retirer