ip saddr { 10.31.36.11 } tcp dport 9100 accept comment "client_metrique: Scrape des métriques par Prometheus (node_exporter en HTTPS)."
ip saddr { 10.31.31.11, 10.31.32.11, 10.31.33.11, 10.31.33.21, 10.31.34.11, 10.31.35.11, 10.31.36.11, 10.31.37.11, 10.31.37.21 } tcp dport 22 accept comment "serveur_debian: Plan de gestion : administration et déploiement Ansible par SSH (inter-nœud ; l'accès depuis l'extérieur..."
icmp type destination-unreachable icmp code frag-needed accept comment "serveur_debian: ICMP « fragmentation nécessaire » entrant : sans lui, un distant ne peut pas nous demander de réduire no..."
ip saddr { 10.31.36.11 } icmp type echo-request accept comment "serveur_debian: La supervision verifie que ce noeud repond (hostalive). Sans lui, elle le tient pour mort et supprime ses no..."
ip saddr { 10.31.0.0/24, 10.31.31.0/24, 10.31.31.1/32, 10.31.32.1/32, 10.31.33.1/32, 10.31.34.1/32, 10.31.35.1/32, 10.31.36.1/32, 10.31.37.1/32, 10.31.37.11 } tcp dport 3000 accept comment "serveur_grafana: Interface web : servie via l'edge la ou il y en a un, joignable depuis le plan d'administration partout —..."
ip saddr { 10.31.32.11, 10.31.33.11, 10.31.36.11 } tcp dport 5665 accept comment "serveur_icinga: Rapport passif de chaque detenteur d'etat sur SON depot distant : le depot du site heberge du chiffre et ne..."
ip saddr { 10.31.35.11 } tcp dport 5665 accept comment "serveur_icinga: Le depot de sauvegarde depose ses resultats passifs (portee : process-check-result sur « sauvegarde: * »)."
ip saddr { 10.31.31.11, 10.31.32.11, 10.31.33.11, 10.31.33.21, 10.31.34.11, 10.31.35.11, 10.31.36.11, 10.31.37.11, 10.31.37.21 } tcp dport 5665 accept comment "serveur_icinga: Rapport passif de sante de chaque noeud (unites systemd en echec)."
ip saddr { 10.31.0.0/24, 10.31.31.0/24, 10.31.31.1/32, 10.31.32.1/32, 10.31.33.1/32, 10.31.34.1/32, 10.31.35.1/32, 10.31.36.1/32, 10.31.37.1/32, 10.31.37.11 } tcp dport 8080 accept comment "serveur_icingaweb2: Interface web servie via l'edge (TLS terminé à l'edge ; SSO possible via oauth2-proxy), et joignable d..."
ip saddr { 10.31.31.11, 10.31.32.11, 10.31.33.11, 10.31.33.21, 10.31.34.11, 10.31.35.11, 10.31.36.11, 10.31.37.11, 10.31.37.21 } tcp dport 3100 accept comment "serveur_loki: Réception des journaux poussés par Alloy (client_journal) en HTTPS (http_tls_config, cert step-ca)."
ip saddr { 10.0.4.1, 10.0.4.11, 10.31.0.1, 10.31.0.11, 10.31.31.1, 10.31.32.1, 10.31.33.1, 10.31.34.1, 10.31.35.1, 10.31.36.1, 10.31.37.1, 10.31.50.11 } tcp dport 3100 accept comment "serveur_loki: Journaux des hyperviseurs. La machine qui PORTE les VM ecrivait ses journaux nulle part ailleurs que sur son p..."
ip saddr { 10.0.4.1, 10.0.4.11, 10.31.0.1, 10.31.0.11, 10.31.31.1, 10.31.32.1, 10.31.33.1, 10.31.34.1, 10.31.35.1, 10.31.36.1, 10.31.37.1, 10.31.50.11 } tcp dport 1514 accept comment "serveur_loki: Journaux de la frontiere, en TLS mutuel. Elle n'accueille aucun agent et n'emet que du syslog ; sans ce flux,..."
ip saddr { 10.31.33.11, 10.31.36.11 } tcp dport 5432 accept comment "serveur_postgresql: Connexions applicatives à PostgreSQL (verify-full ; pg_hba hostssl)."
ip saddr { 10.31.36.11 } tcp dport 9187 accept comment "serveur_postgresql: Metriques PostgreSQL lues par l'observatoire, en HTTPS verifie. Series, pas verdicts : ce qui derive len..."
# L'INTERNE PARLE, LA BORDURE SE TAIT (2026-08-28).
#
# Ce qui n'est pas accepte plus haut est REFUSE A VOIX HAUTE, et ce n'est pas
# le refus qui informe : c'est ce qu'il fait au TIMEOUT. Sous `drop`, un
# silence voulait dire trois choses incompatibles — aucune machine, aucune
# route, ou une politique. Deux erreurs de diagnostic en une journee le
# 2026-08-28, dont une qui a fait appliquer un pare-feu pour reparer une
# ABSENCE. Quand la politique parle, le silence ne veut plus dire qu'une
# chose : il n'y a personne, ou il n'y a pas de chemin.
#
# `admin-prohibited` ET NON `tcp reset` : un RST est indiscernable d'un port
# ferme sans service. Ce message-ci dit qu'une POLITIQUE a refuse — c'est la
# seule forme qui distingue « on ne veut pas de toi » de « il n'y a rien ».
#
# POURQUOI C'EST PRUDENT ICI ET PAS A LA FRONTIERE : la bordure reste en
# `block`, donc rien d'indeclare ne franchit le perimetre. Ce reject ne
# repond jamais a l'Internet — il ne parle qu'a des pairs qui ont deja
# l'adresse de cette machine dans leur `/etc/hosts` genere. L'obscurite
# etait donc deja nulle entre nous : le `drop` coutait du diagnostic sans
# rien acheter. Mesure du 2026-08-27 a la frontiere, qui explique l'autre
# moitie du choix : 982 000 entrees par jour, dont 82 %% un balayage
# Internet contre le port VNC. Repondre a chacune serait un vecteur
# d'amplification, source usurpee comprise.
reject with icmpx type admin-prohibited comment "socle: refus des entrees non autorisees"
}
# LA CHAINE `forward` RESTE MUETTE, et ce n'est pas un oubli : elle porte le
# trafic qui TRAVERSE cet hote, pas celui qui lui est destine. Y repondre
# ferait parler cette machine AU NOM d'une destination qui n'est pas elle —
# un refus qu'on attribuerait au mauvais endroit, c'est-a-dire exactement le
# defaut qu'on corrige dans `input`.
chain forward {
type filter hook forward priority 0; policy drop;
ct state established,related accept comment "transit: connexions etablies et associees"
iifname "docker0" accept comment "transit: trafic depuis le pont docker0"
oifname "docker0" accept comment "transit: trafic vers le pont docker0"