Ce projet contient des scripts Bash pour créer des namespaces réseau utilisateur, les raccorder à un namespace root via veth, puis distribuer des adresses IP par DHCP. La version daemon permet de lancer plusieurs scripts utilisateur, chacun avec son propre sous-réseau 10.200.X.0/24.
- Linux avec
iproute2,unshare,nsenter,awk,grep,pgrep isc-dhcp-serverpourdhcpdisc-dhcp-clientpourdhclient- droits
sudopour le script côté root
Installation typique Debian/Ubuntu :
sudo apt update
sudo apt install iproute2 util-linux procps isc-dhcp-server isc-dhcp-client| Fichier | Rôle |
|---|---|
cont_root_daemon.sh |
daemon côté root : crée les paires veth, lance un DHCP par session et déplace l'interface utilisateur dans le namespace demandé |
user_net_daemon.sh |
script côté utilisateur : demande une session au daemon root, crée des namespaces applicatifs et leur attribue une interface macvlan |
dhclient-script-simplifie.sh |
script minimal utilisé par dhclient pour configurer l'interface sans modifier inutilement le système hôte |
cleanup.sh |
nettoyage local des interfaces/fichiers temporaires créés pendant les tests |
run_user_step.sh |
lance les scripts des étapes 1 à 3 dans un namespace utilisateur |
Les fichiers *_fixed.sh et user_step*.sh correspondent aux versions intermédiaires des étapes précédentes.
Terminal 1, côté root :
sudo ./cont_root_daemon.shTerminal 2, côté utilisateur :
unshare --user --map-root-user --net --uts --fork ./user_net_daemon.shDans le prompt interactif contnet>, commandes disponibles :
new [nom] créer un namespace applicatif avec macvlan + DHCP
enter <nom> entrer dans le namespace applicatif
list lister les namespaces applicatifs
del <nom> supprimer un namespace applicatif
net afficher l'état réseau du namespace user+net
help afficher l'aide
quit quitter
Exemple :
contnet> new app1
contnet> list
contnet> enter app1
Une fois dans le namespace applicatif, les vérifications réseau peuvent être lancées manuellement :
ip -br addr
ip route
ping -c 3 10.200.1.1Lancer d'abord le script root correspondant dans un terminal privilégié, puis lancer l'étape utilisateur :
sudo ./cont_network_fixed.sh
./run_user_step.sh 1
./run_user_step.sh 2
./run_user_step.sh 3./cleanup.shLe daemon root nettoie aussi ses interfaces et processus DHCP à l'arrêt.
Les scripts ont été nettoyés pour éviter les sorties de debug inutiles :
- suppression des messages de progression automatiques ;
- suppression des affichages automatiques d'interfaces, routes et PID ;
- remplacement de
dhclient -vpardhclient -q; - conservation des erreurs, usages, commandes interactives et sorties explicitement demandées.