--- # Flux réseau du socle Debian : le plan de gestion (SSH). Voir docs/flux-conception.md. # CRITIQUE : sans cette règle, les nftables générés couperaient l'accès Ansible/SSH. flux: - sens: ingress port: 22 protocole: tcp pair: [flotte, externe] chiffrement: ssh raison: "Plan de gestion : administration et déploiement Ansible par SSH (inter-nœud ; l'accès depuis l'extérieur est filtré à l'OPNsense)." # --- Sortie générale de la flotte --- # Portée par le socle parce qu'elle vaut pour TOUS les hôtes, sans exception. # Non déclarée, la frontière la bloquerait : son `block out` final est un vrai # default-deny, et la flotte perdrait ses mises à jour et son horloge en silence. - sens: egress port: 443 protocole: tcp pair: externe chiffrement: tls-requis raison: "Dépôts apt en HTTPS (Debian, Smallstep, Grafana, Icinga, Forgejo, Nextcloud) — sans quoi aucun correctif de sécurité n'entre." - sens: egress port: 80 protocole: tcp pair: externe chiffrement: clair raison: "Dépôts apt en clair et redirections HTTP des miroirs (l'intégrité vient de la signature des paquets, pas du transport)." # --- Decouverte de MTU de chemin (PMTUD) --- # L'overlay EVPN plafonne a 1450 : tout ce qui traverse la frontiere depend de ces # deux messages. Bloques, la connexion s'etablit, les petites requetes passent et les # grosses reponses restent suspendues — la panne la plus couteuse a diagnostiquer. - sens: ingress port: frag-needed protocole: icmp pair: externe chiffrement: n-a raison: "ICMP « fragmentation nécessaire » entrant : sans lui, un distant ne peut pas nous demander de réduire nos paquets — les transferts se figent." - sens: egress port: frag-needed protocole: icmp pair: externe chiffrement: n-a raison: "ICMP « fragmentation nécessaire » sortant : c'est ainsi que nos hôtes signalent l'overlay à 1450 aux correspondants distants." # LA FACE RECEPTRICE DU PING DE SUPERVISION. # # `serveur_icinga` declare l'egress ; le registre REFUSE un egress sans son ingress en # face, et il a bien fait : c'est precisement l'oubli qui a coute cinq `TimeoutError` # sur le rapport de sante quelques heures plus tot. Ici la garde l'a dit tout de suite. - sens: ingress port: echo-request protocole: icmp pair: serveur_icinga chiffrement: n-a partage: true raison: "La supervision verifie que ce noeud repond (hostalive). Sans lui, elle le tient pour mort et supprime ses notifications." # LA FRONTIÈRE EST AUSSI L'AUTORITÉ DE NOMS D'AMORÇAGE (2026-09-12). # # TROUVÉ À LA PREMIÈRE RECONSTRUCTION DU SITE DEPUIS ZÉRO. Les sept machines du site # naissent avec `nameserver 10.37.34.11` — `site-dns-01`, qui est elle-même une des # sept et n'a pas encore de résolveur. `site-dns-01` pointe donc sur elle-même, et # `apt update` échoue sur les sept : # # Erreur temporaire de résolution de « deb.debian.org » # # Le locataire n'a jamais ce problème : son résolveur est le SITE, qui existe déjà. # Le site, lui, n'a personne au-dessus — sauf la frontière, dont l'Unbound tourne et # écoute sur `*:53`. Il ne manquait que le passage. # # CE QUE CETTE RÈGLE NE DIT PAS. « Toute la flotte résout ici, et nulle part ailleurs » # (`serveur_resolveur/meta/flux.yml`) reste la règle en régime établi : le résolveur # de l'écosystème est le seul que les machines INTERROGENT, parce que c'est lui que # leur `/etc/resolv.conf` nomme. Cette règle n'ouvre qu'une possibilité, celle qui # rend l'amorçage possible — et sans elle, un écosystème neuf ne peut pas naître. - sens: egress port: 53 protocole: udp pair: frontiere chiffrement: n-a raison: >- Résolution de noms à l'amorçage, avant que le résolveur de l'écosystème n'existe. Sans elle, les machines d'un site neuf ne peuvent pas résoudre leurs dépôts de paquets — et rien ne peut donc s'installer, y compris le résolveur lui-même. - sens: egress port: 53 protocole: tcp pair: frontiere chiffrement: n-a raison: >- Réponses longues et bascule TCP, obligatoires en DNS. Déclarer l'UDP sans le TCP donne une résolution qui marche jusqu'à la première réponse tronquée. # L'HEURE VIENT DE LA FRONTIÈRE, PAS D'INTERNET (2026-09-11). # # C'était `pair: externe` : les quatorze machines interrogeaient `2.debian.pool.ntp.org`, # défaut de Debian jamais choisi — le rôle `chrony` posait le fuseau et laissait les # sources telles quelles. Mesuré : quatre pairs publics par machine, sur les quatorze. # # C'était la DERNIÈRE dépendance vivante à Internet des opérations internes. Tout le # reste sort déjà par le site : les paquets par son cache, les noms par son DNS, le # génome par sa forge, l'état par son dépôt. L'heure, non. # # ET C'EST LA MAUVAISE À LAISSER TRAÎNER. step-ca émet des certificats à durée courte ; # TLS refuse un certificat pas encore valide ; Loki rejette une ligne trop loin dans le # futur ; les silences d'Icinga reposent sur des `ttl`. Une flotte dont les horloges # divergent tombe en panne de l'intérieur, avec des symptômes qui ressemblent à tout # sauf à une horloge. Et la dérive est lente : couper Internet ne casse rien le premier # jour, ce qui laisse croire à une souveraineté qu'on n'a pas. # # La frontière est déjà `stratum 3`, synchronisée, et écoute en 123 sur chaque patte. # Elle se discipline sur le pool public quand Internet est là ; la flotte, elle, ne sort # plus. Même patron que le cache apt : un seul sort, les autres non. # # RESSERRE AUTANT QUE CENTRALISE : `pair: externe` autorisait le 123 vers N'IMPORTE # QUELLE adresse d'Internet. La destination est désormais nommée. - sens: egress port: 123 protocole: udp pair: frontiere chiffrement: n-a raison: >- Synchronisation d'horloge (NTP) contre la frontière, autorité de temps de l'écosystème. Une dérive fait échouer la validation des certificats step-ca et l'authentification SSO.