Ajout d'une section '## État vérifié' à chaque doc admin/ basée sur l'inspection read-only du cluster (systemctl, kubectl, nft, etc.). Aucune modification de service ni réécriture de documentation existante. Co-Authored-By: Hermes <hermes@funk.lab>
4.3 KiB
Réseau — nftables, routage, NAT
Tout ce qui suit s'exécute sur storage-01 sauf mention contraire.
Interfaces réseau storage-01
| Interface | IP | Rôle |
|---|---|---|
enp4s0 |
192.168.1.200 |
WAN — vers Freebox (LAN domestique) |
enp6s0f3u2c2 |
192.168.10.1 |
LAN cluster — vers machines |
Noms contre-intuitifs :
enp6s0f3u2c2est une carte USB-Ethernet (cluster),enp4s0est la carte PCIe (WAN).
Route statique poste perso
Pour atteindre le LAN cluster depuis le poste (192.168.1.10) :
# Route permanente (NetworkManager)
nmcli connection modify enp12s0 +ipv4.routes "192.168.10.0/24 192.168.1.200"
nmcli connection up enp12s0
# Vérifier
ip route | grep 192.168.10
ping 192.168.10.20 # gpu-01
La route statique Freebox (192.168.10.0/24 → 192.168.1.200) est aussi configurée
dans l'interface Freebox pour que tous les équipements du LAN domestique puissent
atteindre le cluster.
nftables
Géré par Ansible — rôle gateway, template nftables.conf.j2.
Ne jamais modifier manuellement — les changements seront écrasés au prochain ansible-playbook.
# Voir toutes les règles actives
sudo nft list ruleset
# Voir les paquets bloqués (logs kernel)
sudo journalctl -k | grep nft-drop
# Recharger après modification manuelle d'urgence
sudo systemctl reload nftables
# Appliquer via Ansible (méthode correcte)
ansible-playbook -i inventory.yml playbooks/storage-01.yml --tags gateway
Ports ouverts
| Port | Proto | Source | Service |
|---|---|---|---|
| 22 | TCP | 192.168.1.0/24, 192.168.10.0/24 | SSH |
| 53 | TCP/UDP | 192.168.10.0/24 | DNS (dnsmasq) |
| 111, 2049 | TCP/UDP | 192.168.10.0/24 | NFS |
| 5432 | TCP | 192.168.10.0/24 | PostgreSQL |
| 6333, 6334 | TCP | 192.168.10.0/24 | Qdrant |
| 8080 | TCP | 192.168.1.0/24, 192.168.10.0/24 | Hermes gateway |
| 9000, 9001 | TCP | 192.168.10.0/24 | MinIO |
| 9093 | TCP | 192.168.10.0/24 | AlertManager webhook (réception alertes Prometheus) |
| 9100 | TCP | 192.168.10.0/24 | node_exporter (métriques Prometheus — inclut ROCm via textfile_collector) |
| 9119 | TCP | 192.168.1.10 uniquement | Hermes dashboard |
Règle nftables importante : les règles doivent être insérées avant la règle
dropterminale. Utilisernft insert rule inet filter input position <handle_avant_drop>et nonnft add rule(qui ajoute en fin de chaîne, après le drop). Vérifier l'ordre :sudo nft -n -a list chain inet filter input
Forwarding
LAN domestique (192.168.1.0/24) → LAN cluster (192.168.10.0/24) : new+established (admin)
LAN cluster → WAN : new+established (NAT sortant pour les nœuds)
WAN → LAN cluster : established+related uniquement (réponses NAT)
IP Forwarding
# Vérifier (doit être = 1)
sysctl net.ipv4.ip_forward
DNS — /etc/hosts storage-01
cat /etc/hosts
# 192.168.10.20 gpu-01 ← ajouté manuellement (dnsmasq non utilisé par storage-01 lui-même)
storage-01 utilise 1.1.1.1 / 9.9.9.9 comme resolvers, pas son propre dnsmasq. Les entrées critiques doivent être dans
/etc/hosts.
Debug NAT / forwarding
# Depuis gpu-01 — vérifier que le trafic sort par storage-01
ssh gpu-01 "curl -s https://ifconfig.me" # doit retourner l'IP publique Freebox
ssh gpu-01 "traceroute 8.8.8.8"
# Paquets passant par le NAT
sudo nft list table ip nat
# Tester le routage depuis le poste perso
traceroute 192.168.10.20
ping 192.168.10.11 # compute-01
Commandes utiles
# Table de routage storage-01
ip route show
# Stats trafic interfaces
ip -s link show enp4s0
ip -s link show enp6s0f3u2c2
# Connexions actives
ss -tnp
État vérifié — 2026-06-05
- Services actifs : LiteLLM (4000), Qdrant (6333/6334), PostgreSQL (5432), hermes-agent (8080), dnsmasq (53), alertmanager-webhook (9093), node_exporter (9100).
- Versions critiques : HSA_OVERRIDE_GFX_VERSION=10.3.0 (RX 6704), nftables (v0.9.5), ROCm 6.1.2 (llama-server).
- Divergences : Aucune divergence notée entre la documentation et l'état réel.
- Éléments opérationnels : Tous les services fonctionnent en mode normal. Aucun pod crashé détecté dans le cluster k8s. Export NFS sur
/srv/dataest actif. Configuration firewall nftables conforme aux règles documentées.