- CLI (clap) : create/destroy/list. Network namespace créé via
rtnetlink::NetworkNamespace (fork + unshare(CLONE_NEWNET) + bind-mount,
équivalent de `ip netns add`), paire veth créée dans la racine, un
bout déplacé dans le namespace (setns_by_fd) et adressé depuis un
thread OS dédié qui fait setns() - jamais un thread du pool
spawn_blocking de tokio, qui serait réutilisé pour d'autres tâches et
resterait coincé dans le namespace.
- Journal d'audit JSON (stderr + /var/log/tripoli-netctl/audit.log) à
chaque opération.
- Documenté explicitement comme labo pédagogique un-seul-poste :
tripoli-edge et tripoli-api restent nativement sur l'hôte, ce projet
ne pilote aucun trafic de production.
- Testé en conditions réelles sur le serveur : création, adressage des
deux côtés (dont lo, down par défaut dans un netns neuf), ping
traversant effectivement la veth, puis destruction propre (veth +
namespace) vérifiée par absence des interfaces et du namespace.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>