С ip netns exec вы можете выполнить команду в пользовательском сетевом пространстве имен - но есть ли способ выполнить команду в пространстве имен по умолчанию?
Например, после выполнения этих двух команд:
sudo ip netns add test_ns
sudo ip netns exec test_ns bash
Как только что созданные bash могут выполнять программы в сетевом пространстве имен по умолчанию? Насколько я нашел, там нет ip netns exec default или чего-то подобного.
Мой сценарий:
Я хочу запустить сервер SSH в отдельном сетевом пространстве имен (чтобы остальная часть системы не знала о сетевом подключении, так как система используется для тестирования сети), но хочу иметь возможность выполнять программы в сетевом пространстве имен по умолчанию через соединение SSH.
Что я узнал до сих пор:
Созданные сетевые пространства имен отображаются в виде файлов в / var / run / netns (но нет файла для пространства имен по умолчанию)
Код exec ip netns можно найти здесь: http://git.kernel.org/cgit/linux/kernel/git/shemminger/iproute2.git/tree/ip/ipnetns.c#n132 - я не все понял что он еще делает, но выглядит не очень многообещающе.
ip netns идентифицирует $$ в соответствии с рекомендациями Howto для запроса и изменения сетевого пространства имен в linux? ничего не возвращает, когда в пространстве имен сети по умолчанию
nsenter -t 1 -n
но он создал новый процесс так же, какip netns exec
и не изменил пространство имен текущего процесса.Я обнаружил, что вы можете вернуться к сетевому пространству имен по умолчанию с помощью двух простых команд:
Этот метод, очевидно, предполагает, что вы можете видеть процессы вне вашего собственного пространства имен через
proc
файловую систему. Если вы также находитесь в отдельном пространстве имен PID, возврат к пространству имен по умолчанию не так прост.Вышеуказанные команды были протестированы на Ubuntu 14.04. Я не знаю, есть ли что-то конкретное в подходе.
источник
mount --bind
вместоln -s
, так как это означает, чтоip
команда тоже может управлять этим (ip в основном монтирует --bind для этих файлов пространств имен для настройки постоянных пространств имен)."ln -s / proc / 1 / ns / net / var / run / netns / default" <----- Не рекомендуется вообще.
Счетчик кода, который выводит «ip netns show»
если у вас есть исполняющая оболочка bash, просто выйдите из bash, выйдите.
Если у вас есть ssh к netns, тогда ssh к интерфейсу ns по умолчанию и делайте то, что вам нужно сделать там.
В крайнем случае так же, как и выше, но я бы посоветовал удалить его, как только это будет сделано, и до того, как произойдут какие-либо изменения. В противном случае счетчик будет поврежден и вызовет проблемы.
источник
Вы можете получить форму pid, используя ps aux или даже top, если хотите.
Лично я всегда ssh к основному пространству имен, тогда я всегда могу вернуться к настройкам по умолчанию, напечатав exit и затем повторно введя пространство имен, если требуется.
источник