Avec ip netns exec, vous pouvez exécuter une commande dans un espace de noms réseau personnalisé - mais existe-t-il également un moyen d'exécuter une commande dans l'espace de noms par défaut?
Par exemple, après avoir exécuté ces deux commandes:
sudo ip netns add test_ns
sudo ip netns exec test_ns bash
Comment le bash nouvellement créé peut-il exécuter des programmes dans l'espace de noms réseau par défaut? Il n'y a pas d' IP netns exec par défaut ou quelque chose de similaire pour autant que je l'ai trouvé.
Mon scénario est:
Je souhaite exécuter un serveur SSH dans un espace de noms de réseau distinct (pour que le reste du système ne soit pas au courant de la connexion réseau, car le système est utilisé pour les tests de réseau), mais je veux pouvoir exécuter des programmes dans l'espace de noms de réseau par défaut via la connexion SSH.
Ce que j'ai découvert jusqu'à présent:
Les espaces de noms réseau créés sont répertoriés sous forme de fichiers sous / var / run / netns (mais il n'y a pas de fichier pour l'espace de noms par défaut)
Le code exécutable ip netns peut être trouvé ici: http://git.kernel.org/cgit/linux/kernel/git/shemminger/iproute2.git/tree/ip/ipnetns.c#n132 - Je n'ai pas tout compris qu'il fait encore, mais il ne semble pas très prometteur.
ip netns identifie $$ comme suggéré par Howto interroger et changer l'espace de noms du réseau sous linux? ne renvoie rien lorsque dans l'espace de noms du réseau par défaut
nsenter -t 1 -n
mais cela a créé un nouveau processus tout commeip netns exec
et n'a pas changé l'espace de noms du processus actuel.J'ai constaté que vous pouvez revenir à l'espace de noms réseau par défaut avec deux commandes simples:
Cette méthode suppose évidemment que vous pouvez voir les processus en dehors de votre propre espace de noms via le
proc
système de fichiers. Si vous êtes également dans un espace de noms PID distinct, le retour à l'espace de noms par défaut n'est pas aussi simple.Les commandes ci-dessus ont été testées sur Ubuntu 14.04. Je ne sais pas s'il y a quelque chose de spécifique à la distribution dans l'approche.
la source
mount --bind
place deln -s
, car cela signifie que laip
commande peut également le gérer (l'ip monte essentiellement --bind contre ces fichiers d'espace de noms pour configurer des espaces de noms persistants)."ln -s / proc / 1 / ns / net / var / run / netns / default" <----- N'est pas recommandé du tout.
Le compteur du code qui génère le "show ip netns"
si vous avez un shell bash exec, il existe simplement du bash, quittez.
Si vous avez ssh vers un réseau, alors ssh vers l'interface du ns par défaut et faites ce que vous devez faire là-bas.
En dernier recours, le ln comme ci-dessus, mais je suggère de le supprimer dès qu'il est fait et avant que des modifications ne soient apportées à ns. Sinon, le compteur sera corrompu et causera des problèmes.
la source
Vous pouvez obtenir le formulaire pid en faisant 'ps aux' ou même un top si vous le souhaitez.
Personnellement, je ssh toujours vers l'espace de noms principal, puis je peux toujours revenir à la valeur par défaut en tapant exit puis en ressaisissant l'espace de noms si nécessaire.
la source