Mit ip netns exec können Sie einen Befehl in einem benutzerdefinierten Netzwerknamespace ausführen. Gibt es jedoch auch eine Möglichkeit, einen Befehl im Standardnamespace auszuführen?
Zum Beispiel nach dem Ausführen dieser beiden Befehle:
sudo ip netns add test_ns
sudo ip netns exec test_ns bash
Wie kann die neu erstellte Bash Programme im Standard-Netzwerk-Namespace ausführen? Es gibt keine IP Netns Exec Standard oder etwas ähnliches, soweit ich gefunden habe.
Mein Szenario ist:
Ich möchte einen SSH-Server in einem separaten Netzwerk-Namespace ausführen (damit der Rest des Systems nicht über die Netzwerkverbindung informiert wird, da das System zum Testen des Netzwerks verwendet wird), möchte jedoch Programme im Standard-Netzwerk-Namespace über ausführen können die SSH-Verbindung.
Was ich bisher herausgefunden habe:
Die erstellten Netzwerknamespaces werden unter / var / run / netns als Dateien aufgelistet (für den Standardnamespace gibt es jedoch keine Datei).
Den ip netns exec- Code finden Sie hier: http://git.kernel.org/cgit/linux/kernel/git/shemminger/iproute2.git/tree/ip/ipnetns.c#n132 - Ich habe nicht alles verstanden das tut es noch, aber es sieht nicht sehr vielversprechend aus.
IP-Netze identifizieren $$, wie von Howto vorgeschlagen. Netzwerk-Namespace unter Linux abfragen und ändern? Gibt im Standardnetzwerk-Namespace nichts zurück
nsenter -t 1 -n
aber es wurde ein neuer Prozess erstellt,ip netns exec
und der Namespace des aktuellen Prozesses wurde nicht geändert.Ich habe festgestellt, dass Sie mit zwei einfachen Befehlen zum Standardnetzwerk-Namespace zurückkehren können:
Diese Methode setzt natürlich voraus, dass Sie Prozesse außerhalb Ihres eigenen Namespaces über das
proc
Dateisystem sehen können. Wenn Sie sich ebenfalls in einem separaten PID-Namespace befinden, ist die Rückkehr zum Standardnamespace nicht so einfach.Die obigen Befehle wurden unter Ubuntu 14.04 getestet. Ich weiß nicht, ob der Ansatz eine bestimmte Verteilung aufweist.
quelle
mount --bind
stattdessen zu tunln -s
, da dies bedeutet, dass derip
Befehl es auch verwalten kann (ip hängt im Grunde genommen --bind an diese Namespace-Dateien an, um persistente Namespaces einzurichten)."ln -s / proc / 1 / ns / net / var / run / netns / default" <----- Wird überhaupt nicht empfohlen.
Der Zähler für den Code, der die "ip netns show" ausgibt
Wenn Sie eine Bash-Shell ausgeführt haben, die einfach aus der Bash-Shell besteht, beenden Sie sie.
Wenn Sie ssh zu einem Netz haben, dann ssh zur Schnittstelle des Standard-ns und tun, was Sie dort tun müssen.
Als letztes Mittel also das ln wie oben, aber ich würde vorschlagen, es zu entfernen, sobald es fertig ist und bevor irgendwelche Änderungen an irgendwelchen ns auftreten. Andernfalls ist der Zähler beschädigt und verursacht Probleme.
quelle
Sie können die PID-Form dazu bringen, 'ps aux' oder sogar ein Top zu machen, wenn Sie möchten.
Persönlich gehe ich immer zum Haupt-Namespace, dann kann ich immer zum Standard zurückkehren, indem ich exit eingebe und dann den Namespace erneut eingebe, falls erforderlich.
quelle