Как я могу переместить интерфейс из сетевого пространства имен?
Если я временно переместить интерфейс в сеть с
ip link set eth10 netns myns
тогда он больше не виден в корне, только в пространстве имен myns.
Как мне переместить его обратно, что-то вроде (этого, очевидно, не существует):
ip link unset eth10
или возможно
ip link set eth10 netns root
или похожие?
3 ответа
Я нашел ответ. Конечно, вы не можете сделать это изнутри. Но, если вы выполните ip netns exec ....
из пространства имен корневой сети все работает.
ip netns exec <PID> ip link set eth10 netns 1
Тогда это работает! Он берет PID (в данном случае 1), которому мы назначаем его в контексте выполняемой команды (оболочки), прежде чем мы введем netns. Готово!
Вы используете ip netns delete
функция. Со страницы руководства:
ip [-all] netns delete [NAME] - удалить имя сетевого пространства имен
Если NAME присутствует в /var/run/netns, он монтируется и точка монтирования удаляется. Если это последний пользователь сетевого пространства имен, то сетевое пространство имен будет освобождено, и все физические устройства будут перемещены к стандартному, в противном случае сетевое пространство имен будет сохраняться до тех пор, пока у него не останется больше пользователей. ip netns delete может завершиться ошибкой, если точка монтирования используется в другом пространстве имен монтирования.
Он не может быть использован для всех целей, но если вы можете использовать эту опцию, он кажется самым чистым.
Что сработало для меня, основываясь на ответе deitch, так это выполнить команду из пользовательских сетей:
ip netns exec myns ip link set eth10 netns 1