Wie man prüft, ob ein Kernel-Namespace in Linux aktiv ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob Kernel-Namespaces (Kern-Namensräume) in Linux aktiv sind. Wir werden verschiedene Methoden untersuchen, um die Existenz von Namespaces zu identifizieren und zu verifizieren. Namespaces sind für die Prozessisolierung und Containerisierung von entscheidender Bedeutung.

Sie beginnen damit, den Befehl lsns zu verwenden, um die verschiedenen Namespaces auf Ihrem System aufzulisten und deren Typen und zugehörige Prozesse zu verstehen. Als Nächstes werden Sie die Namespace-Links im Verzeichnis /proc/self/ns untersuchen, um zu sehen, wie Prozesse an bestimmte Namespaces gebunden sind. Abschließend werden Sie speziell Netzwerk-Namespaces mit dem Befehl ip netns verifizieren, einem gängigen Werkzeug zur Verwaltung der Netzwerkisolierung.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL 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(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) 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{{"Wie man prüft, ob ein Kernel-Namespace in Linux aktiv ist"}} linux/ls -.-> lab-558722{{"Wie man prüft, ob ein Kernel-Namespace in Linux aktiv ist"}} linux/ps -.-> lab-558722{{"Wie man prüft, ob ein Kernel-Namespace in Linux aktiv ist"}} linux/ip -.-> lab-558722{{"Wie man prüft, ob ein Kernel-Namespace in Linux aktiv ist"}} linux/apt -.-> lab-558722{{"Wie man prüft, ob ein Kernel-Namespace in Linux aktiv ist"}} end

Auflisten von Namespaces mit lsns

In diesem Schritt lernen Sie, wie Sie die auf Ihrem System vorhandenen Namespaces (Namensräume) mit dem Befehl lsns auflisten können. Namespaces sind ein grundlegendes Konzept in Linux, das die Isolierung verschiedener Systemressourcen wie Prozesse, Netzwerkschnittstellen, Mountpunkte und vieles mehr ermöglicht. Diese Isolierung ist der Schlüssel für Technologien wie Container.

Der Befehl lsns ist Teil des Pakets util-linux und wird verwendet, um Informationen über die Namespaces auf Ihrem System aufzulisten.

Zunächst stellen wir sicher, dass das Paket util-linux installiert ist. Obwohl es normalerweise vorhanden ist, ist es eine gute Praxis, dies zu prüfen. Hierfür können wir apt verwenden.

Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist. Sie können das Symbol für das Xfce Terminal auf der linken Seite Ihres Desktops finden.

Geben Sie jetzt den folgenden Befehl ein, um Ihre Paketliste zu aktualisieren:

sudo apt update

Drücken Sie die Eingabetaste. Möglicherweise sehen Sie eine Ausgabe ähnlich der folgenden:

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

Als Nächstes installieren wir util-linux. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

sudo apt install util-linux

Möglicherweise sehen Sie eine Ausgabe, die darauf hinweist, dass das Paket bereits installiert ist, was in Ordnung ist. Wenn es installiert wird, sehen Sie Fortschrittsbalken und eine Bestätigung.

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.

Jetzt, da wir sicher sind, dass lsns verfügbar ist, verwenden wir es, um die Namespaces aufzulisten. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

lsns

Sie werden eine Ausgabe ähnlich der folgenden sehen, die verschiedene Arten von Namespaces und die damit verbundenen Prozesse anzeigt:

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

Die Ausgabe zeigt Spalten wie NS (Namespace-ID), TYPE (Art des Namespaces, z.B. cgroup, pid, user, uts, ipc, mnt, net), NPROCS (Anzahl der Prozesse im Namespace), PID (Prozess-ID), PPID (ID des übergeordneten Prozesses) und CMD (Befehl).

Dieser Befehl gibt Ihnen einen Überblick über die auf Ihrem System aktiven Namespaces und die darin laufenden Prozesse.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Im vorherigen Schritt haben Sie lsns verwendet, um eine Liste der Namespaces (Namensräume) auf dem System anzuzeigen. Jetzt wollen wir untersuchen, wie ein laufender Prozess mit diesen Namespaces verknüpft ist.

Jeder Prozess in Linux hat ein spezielles Verzeichnis unter /proc/<pid>/ns/, das symbolische Links zu den Namespaces enthält, zu denen er gehört. Das Verzeichnis /proc/self/ ist ein symbolischer Link zum Verzeichnis /proc/<pid>/ des aktuell laufenden Prozesses (in diesem Fall Ihrer Terminal-Sitzung).

Lassen Sie uns den Inhalt des Verzeichnisses /proc/self/ns/ auflisten, um die Namespace-Links für Ihren aktuellen Terminal-Prozess zu sehen.

Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:

ls -l /proc/self/ns/

Sie werden eine Ausgabe ähnlich der folgenden sehen:

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]"

Jede Zeile repräsentiert einen anderen Typ von Namespace (cgroup, ipc, mnt, net, pid, user, uts) und ist ein symbolischer Link (->), der auf die tatsächliche Namespace-Datei in der internen Darstellung des Kernels zeigt. Die Zahl in den eckigen Klammern (z.B. [4026532720]) ist die eindeutige ID dieses bestimmten Namespaces, die Sie in der Ausgabe des lsns-Befehls im vorherigen Schritt gesehen haben.

Dies zeigt Ihnen, dass Ihr aktueller Terminal-Prozess Teil mehrerer verschiedener Namespaces ist, was ihm eine eigene isolierte Ansicht bestimmter Systemressourcen gibt.

Das Verständnis von /proc/<pid>/ns/ ist entscheidend für das Debugging und die Inspektion der Namespace-Konfiguration laufender Prozesse, insbesondere in containerisierten Umgebungen.

Klicken Sie auf Weiter, um fortzufahren.

Überprüfen von Netzwerk-Namespaces mit ip netns

In den vorherigen Schritten haben Sie im Allgemeinen über Namespaces (Namensräume) gelernt und wie Sie die Namespace-Links für einen Prozess anzeigen können. Jetzt wollen wir uns speziell auf Netzwerk-Namespaces konzentrieren und erfahren, wie Sie sie mit dem ip-Befehl verwalten können.

Netzwerk-Namespaces stellen einen separaten Netzwerkstapel für Prozesse bereit, einschließlich Netzwerkschnittstellen, IP-Adressen, Routingtabellen und Firewall-Regeln. Dies ist grundlegend für die Isolierung von Netzwerkverkehr, wie es in Containern und virtuellen Netzwerken verwendet wird.

Der ip-Befehl ist ein leistungsfähiges Werkzeug für die Netzwerkkonfiguration in Linux. Der Unterbefehl ip netns wird speziell für die Verwaltung von Netzwerk-Namespaces verwendet.

Um die derzeit konfigurierten Netzwerk-Namespaces aufzulisten, verwenden Sie die Option list mit ip netns.

Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:

ip netns list

In einer typischen LabEx-Umgebung, die oft ein Container ist, werden Sie möglicherweise zunächst keine explizit erstellten Netzwerk-Namespaces in der Ausgabe dieses Befehls sehen. Die Ausgabe kann leer sein:

Das liegt daran, dass der primäre Netzwerk-Namespace, in dem Ihr Terminal läuft, der Standard-Namespace ist, und ip netns list zeigt normalerweise nur Namespaces an, die explizit erstellt und registriert wurden.

Sie können jedoch immer noch den Netzwerk-Namespace sehen, zu dem Ihr aktueller Prozess gehört, indem Sie den symbolischen Link /proc/self/ns/net untersuchen, wie Sie es im vorherigen Schritt getan haben. Der ip netns-Befehl dient eher zur Verwaltung von benannten Netzwerk-Namespaces, die Sie möglicherweise für bestimmte Isolierungszwecke erstellen.

Obwohl wir in diesem Einführungslabor keine neuen Netzwerk-Namespaces erstellen werden, ist es wichtig zu verstehen, dass ip netns list der Befehl ist, um sie anzuzeigen, für das zukünftige Lernen über Netzwerkisolierung.

Sie haben nun Namespaces mit lsns untersucht, prozessspezifische Namespace-Links in /proc geprüft und den Befehl zum Auflisten von Netzwerk-Namespaces gelernt.

Klicken Sie auf Weiter, um das Labor abzuschließen.

Zusammenfassung

In diesem Labor haben wir gelernt, wie man aktive Kernel-Namespaces (Namensräume) in Linux prüft. Wir haben begonnen, indem wir den lsns-Befehl verwendet haben, um die verschiedenen Namespaces auf dem System aufzulisten. Wir haben verstanden, dass Namespaces die Isolierung von Systemressourcen ermöglichen und für Container-Technologien grundlegend sind. Wir haben sichergestellt, dass das util-linux-Paket, das lsns enthält, mit apt installiert ist.

Nachdem wir die Namespaces mit lsns aufgelistet haben, wären die folgenden Schritte, die in den bereitgestellten Inhalten nicht vollständig detailliert wurden, das Prüfen der Namespace-Links im Verzeichnis /proc/self/ns und das Überprüfen speziell der Netzwerk-Namespaces mit dem ip netns-Befehl. Diese Methoden bieten alternative Möglichkeiten, das Vorhandensein und den Zustand verschiedener Arten von Kernel-Namespaces zu untersuchen und zu bestätigen.