Network Namespace
Informations de base
Un espace de noms réseau est une fonctionnalité du noyau Linux qui permet l'isolation de la pile réseau, permettant à chaque espace de noms réseau d'avoir sa propre configuration réseau indépendante, interfaces, adresses IP, tables de routage et règles de pare-feu. Cette isolation est utile dans divers scénarios, tels que la conteneurisation, où chaque conteneur doit avoir sa propre configuration réseau, indépendamment des autres conteneurs et du système hôte.
Comment cela fonctionne :
Lorsqu'un nouvel espace de noms réseau est créé, il démarre avec une pile réseau complètement isolée, sans interfaces réseau à l'exception de l'interface de bouclage (lo). Cela signifie que les processus s'exécutant dans le nouvel espace de noms réseau ne peuvent pas communiquer avec les processus dans d'autres espaces de noms ou le système hôte par défaut.
Des interfaces réseau virtuelles, telles que des paires veth, peuvent être créées et déplacées entre les espaces de noms réseau. Cela permet d'établir une connectivité réseau entre les espaces de noms ou entre un espace de noms et le système hôte. Par exemple, une extrémité d'une paire veth peut être placée dans l'espace de noms réseau d'un conteneur, et l'autre extrémité peut être connectée à un pont ou une autre interface réseau dans l'espace de noms hôte, fournissant une connectivité réseau au conteneur.
Les interfaces réseau au sein d'un espace de noms peuvent avoir leurs propres adresses IP, tables de routage et règles de pare-feu, indépendamment des autres espaces de noms. Cela permet aux processus dans différents espaces de noms réseau d'avoir des configurations réseau différentes et de fonctionner comme s'ils s'exécutaient sur des systèmes réseau distincts.
Les processus peuvent se déplacer entre les espaces de noms en utilisant l'appel système
setns()
, ou créer de nouveaux espaces de noms en utilisant les appels systèmeunshare()
ouclone()
avec le drapeauCLONE_NEWNET
. Lorsqu'un processus se déplace vers un nouvel espace de noms ou en crée un, il commencera à utiliser la configuration réseau et les interfaces associées à cet espace de noms.
Laboratoire :
Créer différents espaces de noms
CLI
En montant une nouvelle instance du système de fichiers /proc
en utilisant le paramètre --mount-proc
, vous vous assurez que le nouveau namespace de montage a une vue précise et isolée des informations de processus spécifiques à ce namespace.
Docker
Vérifier dans quel espace de noms se trouve votre processus
Trouver tous les espaces de noms réseau
Entrer dans un espace de nom réseau
Aussi, vous ne pouvez entrer dans un autre espace de noms de processus que si vous êtes root. Et vous ne pouvez pas entrer dans un autre espace de noms sans un descripteur pointant vers celui-ci (comme /proc/self/ns/net
).
Références
Last updated