Comment vérifier si un espace de noms du noyau est actif sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si les espaces de noms du noyau (kernel namespaces) sont actifs sous Linux. Nous explorerons différentes méthodes pour identifier et vérifier la présence d'espaces de noms, qui sont essentiels pour l'isolement des processus et la conteneurisation.

Vous commencerez par utiliser la commande lsns pour lister les différents espaces de noms sur votre système, en comprenant leurs types et les processus associés. Ensuite, vous examinerez les liens d'espaces de noms dans le répertoire /proc/self/ns pour voir comment les processus sont liés à des espaces de noms spécifiques. Enfin, vous vérifierez spécifiquement les espaces de noms réseau (network namespaces) à l'aide de la commande ip netns, un outil courant pour gérer l'isolement réseau.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/read("Input Reading") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/read -.-> lab-558722{{"Comment vérifier si un espace de noms du noyau est actif sous Linux"}} linux/ls -.-> lab-558722{{"Comment vérifier si un espace de noms du noyau est actif sous Linux"}} linux/ps -.-> lab-558722{{"Comment vérifier si un espace de noms du noyau est actif sous Linux"}} linux/ip -.-> lab-558722{{"Comment vérifier si un espace de noms du noyau est actif sous Linux"}} linux/apt -.-> lab-558722{{"Comment vérifier si un espace de noms du noyau est actif sous Linux"}} end

Lister les espaces de noms avec lsns

Dans cette étape, vous apprendrez à lister les espaces de noms (namespaces) présents sur votre système en utilisant la commande lsns. Les espaces de noms sont un concept fondamental sous Linux qui offre l'isolement pour diverses ressources système, telles que les processus, les interfaces réseau, les points de montage, etc. Cet isolement est essentiel pour les technologies comme les conteneurs.

La commande lsns fait partie du paquet util - linux et est utilisée pour lister les informations sur les espaces de noms de votre système.

Tout d'abord, assurons - nous que le paquet util - linux est installé. Bien qu'il soit généralement présent, il est recommandé de vérifier. Nous pouvons utiliser apt à cet effet.

Ouvrez votre terminal s'il n'est pas déjà ouvert. Vous pouvez trouver l'icône Xfce Terminal sur le côté gauche de votre bureau.

Maintenant, tapez la commande suivante pour mettre à jour la liste de vos paquets :

sudo apt update

Appuyez sur Entrée. Vous pourriez voir une sortie similaire à ceci :

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...

Ensuite, installons util - linux. Tapez la commande suivante et appuyez sur Entrée :

sudo apt install util-linux

Vous pourriez voir une sortie indiquant que le paquet est déjà installé, ce qui est normal. Si l'installation se produit, vous verrez des barres de progression et une confirmation.

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
util-linux is already the newest version (x.xx.x-xu).
0 upgraded, 0 newly installed, 0 to remove and xx not upgraded.

Maintenant que nous sommes certains que lsns est disponible, utilisons - le pour lister les espaces de noms. Tapez la commande suivante et appuyez sur Entrée :

lsns

Vous verrez une sortie similaire à ceci, montrant différents types d'espaces de noms et les processus associés :

        NS TYPE   NPROCS   PID PPID       CMD
4026531835 cgroup      1     1    0     /sbin/init
4026531836 pid         1     1    0     /sbin/init
4026531837 user        1     1    0     /sbin/init
4026531838 uts         1     1    0     /sbin/init
4026531839 ipc         1     1    0     /sbin/init
4026531840 mnt         1     1    0     /sbin/init
4026531841 net         1     1    0     /sbin/init
4026532720 cgroup     10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532721 pid        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532722 user       10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532723 uts        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532724 ipc        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532725 mnt        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
4026532726 net        10   700  699 /usr/lib/xfce4/xfconf/xfconfd
...

La sortie montre des colonnes telles que NS (Identifiant de l'espace de noms), TYPE (Type d'espace de noms, par exemple, cgroup, pid, user, uts, ipc, mnt, net), NPROCS (Nombre de processus dans l'espace de noms), PID (Identifiant du processus), PPID (Identifiant du processus parent) et CMD (Commande).

Cette commande vous donne une vue d'ensemble des espaces de noms actifs sur votre système et des processus qui s'exécutent dans ceux - ci.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier les liens d'espaces de noms dans /proc/self/ns

Dans l'étape précédente, vous avez utilisé lsns pour voir la liste des espaces de noms (namespaces) sur le système. Maintenant, explorons comment un processus en cours d'exécution est lié à ces espaces de noms.

Chaque processus sous Linux a un répertoire spécial sous /proc/<pid>/ns/ qui contient des liens symboliques vers les espaces de noms auxquels il appartient. Le répertoire /proc/self/ est un lien symbolique vers le répertoire /proc/<pid>/ du processus en cours d'exécution (dans ce cas, votre session de terminal).

Listons le contenu du répertoire /proc/self/ns/ pour voir les liens d'espaces de noms du processus de votre terminal actuel.

Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

ls -l /proc/self/ns/

Vous verrez une sortie similaire à ceci :

total 0
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 cgroup -> "cgroup:[4026532720]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 ipc -> "ipc:[4026532724]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 mnt -> "mnt:[4026532725]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 net -> "net:[4026532726]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 pid -> "pid:[4026532721]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 user -> "user:[4026532722]"
lrwxrwxrwx 1 labex labex 0 Jul 24 09:00 uts -> "uts:[4026532723]"

Chaque ligne représente un type différent d'espace de noms (cgroup, ipc, mnt, net, pid, user, uts) et est un lien symbolique (->) pointant vers le fichier d'espace de noms réel dans la représentation interne du noyau. Le nombre entre crochets (par exemple, [4026532720]) est l'identifiant unique de cet espace de noms spécifique, que vous avez vu dans la sortie de la commande lsns à l'étape précédente.

Cela montre que votre processus de terminal actuel fait partie de plusieurs espaces de noms différents, lui offrant une vue isolée de certaines ressources système.

Comprendre /proc/<pid>/ns/ est crucial pour le débogage et l'inspection de la configuration des espaces de noms des processus en cours d'exécution, en particulier dans les environnements conteneurisés.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier les espaces de noms réseau avec ip netns

Dans les étapes précédentes, vous avez appris en général sur les espaces de noms (namespaces) et comment voir les liens d'espaces de noms pour un processus. Maintenant, concentrons - nous spécifiquement sur les espaces de noms réseau et sur la manière de les gérer à l'aide de la commande ip.

Les espaces de noms réseau fournissent une pile réseau distincte pour les processus, y compris les interfaces réseau, les adresses IP, les tables de routage et les règles de pare - feu. Cela est fondamental pour isoler le trafic réseau, comme utilisé dans les conteneurs et la mise en réseau virtuelle.

La commande ip est un outil puissant pour la configuration réseau sous Linux. La sous - commande ip netns est utilisée spécifiquement pour gérer les espaces de noms réseau.

Pour lister les espaces de noms réseau actuellement configurés, utilisez l'option list avec ip netns.

Tapez la commande suivante dans votre terminal et appuyez sur Entrée :

ip netns list

Dans un environnement LabEx typique, qui est souvent un conteneur, vous pourriez ne pas voir de noms d'espaces de noms réseau explicitement créés listés par cette commande au départ. La sortie pourrait être vide :

Cela est dû au fait que l'espace de noms réseau principal dans lequel votre terminal s'exécute est celui par défaut, et ip netns list montre généralement les espaces de noms qui ont été explicitement créés et enregistrés.

Cependant, vous pouvez toujours voir l'espace de noms réseau auquel appartient votre processus actuel en examinant le lien symbolique /proc/self/ns/net, comme vous l'avez fait dans l'étape précédente. La commande ip netns est plus destinée à gérer les espaces de noms réseau nommés que vous pourriez créer à des fins d'isolement spécifiques.

Bien que nous ne créions pas de nouveaux espaces de noms réseau dans ce laboratoire introductif, il est important de comprendre que ip netns list est la commande pour les voir pour vos futures études sur l'isolement réseau.

Vous avez maintenant exploré les espaces de noms à l'aide de lsns, examiné les liens d'espaces de noms spécifiques à un processus dans /proc et appris la commande pour lister les espaces de noms réseau.

Cliquez sur Continuer pour terminer le laboratoire.

Résumé

Dans ce laboratoire, nous avons appris à vérifier les espaces de noms (namespaces) actifs du noyau sous Linux. Nous avons commencé par utiliser la commande lsns pour lister les différents espaces de noms présents sur le système, en comprenant que les espaces de noms offrent une isolation pour les ressources système et sont fondamentaux pour les technologies de conteneurisation. Nous avons vérifié que le paquet util - linux, qui contient lsns, était installé à l'aide de apt.

Après avoir listé les espaces de noms avec lsns, les étapes suivantes, qui n'ont pas été entièrement détaillées dans le contenu fourni, consisteraient à vérifier les liens d'espaces de noms dans le répertoire /proc/self/ns et à vérifier spécifiquement les espaces de noms réseau à l'aide de la commande ip netns. Ces méthodes offrent des moyens alternatifs d'inspecter et de confirmer la présence et l'état des différents types d'espaces de noms du noyau.