Skip to content

woxet/TP-Namespaces-Linux

Repository files navigation

TP namespaces réseau et DHCP

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.

Prérequis

  • Linux avec iproute2, unshare, nsenter, awk, grep, pgrep
  • isc-dhcp-server pour dhcpd
  • isc-dhcp-client pour dhclient
  • droits sudo pour 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

Fichiers principaux

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.

Utilisation de la version daemon

Terminal 1, côté root :

sudo ./cont_root_daemon.sh

Terminal 2, côté utilisateur :

unshare --user --map-root-user --net --uts --fork ./user_net_daemon.sh

Dans 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.1

Utilisation des étapes précédentes

Lancer 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

Nettoyage

./cleanup.sh

Le daemon root nettoie aussi ses interfaces et processus DHCP à l'arrêt.

Remarques sur les logs

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 -v par dhclient -q ;
  • conservation des erreurs, usages, commandes interactives et sorties explicitement demandées.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages