ip netns
создает ссылку на пространство имен имен (named) в /var/run/ns
, которое можно легко отследить. То же самое можно было бы определить через /proc/[pid]/ns/net
. Тем не менее, для некоторых пользовательских программ можно создать сеть ns и сохранить соответствующий индекс в другом нетрадиционном месте. Это может затруднить определение наличия или отсутствия сетей, которые мы могли бы перечислять.
Во-вторых, unshare <cmd>
уничтожает сеть ns, когда процесс завершается, и это нормально. Однако ip netns exec <netns> <cmd>
будет поддерживать ns даже после выхода команды/процесса. Поэтому я считаю, что любая пользовательская программа может сделать то же самое.
Следовательно, возникает вопрос: возможно ли, что пользовательская программа создает неназванную сеть ns, и она не связана с каким-либо процессом?
Кроме того, можно ли перечислять такие (скрытые) сети ns из пользовательского пространства, учитывая, что мы не знаем пути к inodes? (Ядро, конечно, имеет связанный список net ns). Фрагмент кода будет полезен.