# 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 : `enp6s0f3u2c2` est une carte USB-Ethernet (cluster), > `enp4s0` est la carte PCIe (WAN). --- ## Route statique poste perso Pour atteindre le LAN cluster depuis le poste (`192.168.1.10`) : ```bash # 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`. ```bash # 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 `drop` terminale. > Utiliser `nft insert rule inet filter input position ` et non `nft 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 ```bash # Vérifier (doit être = 1) sysctl net.ipv4.ip_forward ``` --- ## DNS — /etc/hosts storage-01 ```bash 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 ```bash # 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 ```bash # 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/data` est actif. Configuration firewall nftables conforme aux règles documentées.