История изменений
Исправление intelfx, (текущая версия) :
Насколько понимаю, дело в PrivateTmp=true.
Сетевые неймспейсы выглядят как файлик, который ядро выдаёт процессу в /proc/<pid>/ns/net
при входе процесса в неймспейс. Добавить другой процесс в неймспейс значит как-либо открыть (из него) тот же файл и передать полученный fd в setns(2). Пока этот файлик имеет имя (т. е. либо в неймспейсе есть хотя бы один процесс, либо файлик куда-то прибинжен) — неймспейс живёт.
Соответственно, ip netns add
создаёт неймспейс и биндит /proc/<свой-pid>/ns/net
в /var/tmp/netns/<имя>
. Ключевое слово — биндит. А у тебя каждый процесс выполняется в отдельном mount namespace.
Это «особенность» работы PrivateTmp=. Оно не использует один mount namespace на все запускаемые процессы, а создаёт отдельный для каждого.
intelfx судя по всему в выходные решил и от ЛОРа заодно отдохнуть.
Не то чтобы. :] Просто вчера весь день развлекался с велосипедом (что подразумевает определённую степень усталости вечером, хе-хе).
Исправление intelfx, :
Насколько понимаю, дело в PrivateTmp=true.
Сетевые неймспейсы выглядят как файлик, который ядро выдаёт процессу в /proc/<pid>/ns/net
при входе процесса в неймспейс. Добавить другой процесс в неймспейс значит как-либо открыть (из него) тот же файл и передать полученный fd в setns(2). Пока этот файлик имеет имя (т. е. либо в неймспейсе есть хотя бы один процесс, либо файлик куда-то прибинжен) — неймспейс живёт.
Соответственно, ip netns add
создаёт неймспейс и биндит /proc/<свой-pid>/ns/net
в /var/tmp/netns/<имя>
. Ключевое слово — биндит. А у тебя каждый процесс выполняется в отдельном mount namespace.
Это «особенность» работы PrivateTmp=. Оно создаёт отдельный mount namespace для каждого запускаемого процесса, а не использует общий для всех.
intelfx судя по всему в выходные решил и от ЛОРа заодно отдохнуть.
Не то чтобы. :] Просто вчера весь день развлекался с велосипедом (что подразумевает определённую степень усталости вечером, хе-хе).
Исходная версия intelfx, :
Насколько понимаю, дело в PrivateTmp=true.
Сетевые неймспейсы выглядят как файлик, который ядро выдаёт процессу в /proc/<pid>/ns/net
при входе процесса в неймспейс. Добавить другой процесс в неймспейс значит как-либо открыть (из него) тот же файл и передать полученный fd в setns(2). Пока этот файлик имеет имя (т. е. либо в неймспейсе есть хотя бы один процесс, либо файлик куда-то прибинжен) — неймспейс живёт.
Соответственно, ip netns add
создаёт неймспейс и биндит /proc/<свой-pid>/ns/net
в /var/tmp/netns/<имя>
. Ключевое слово — биндит. А у тебя каждый процесс выполняется в отдельном mount namespace.
intelfx судя по всему в выходные решил и от ЛОРа заодно отдохнуть.
Не то чтобы. :] Просто вчера весь день развлекался с велосипедом (что подразумевает определённую степень усталости вечером, хе-хе).