bind mounts são removidos com namespaces de rede?

0

O daemon Strongswan coloca seus arquivos .pid e .ctl em / var / run para detectar se já está em execução.

Eu quero executar vários desses daemons na mesma máquina em namespaces de rede diferentes. Eu estou tentando conseguir isso por bind de montagem de diretórios diferentes (digamos / etc / namespace1 para / var / run e / etc / namespace2 de namespace1 para / var / run de namespace2). / var / run é um link simbólico para / run, então eu vinculo mount a / run como abaixo.

Eu quase posso conseguir isso assim:

"" No namespace padrão ""

$:~ sudo echo "red" >> /etc/red/run/pidfile
$:~ sudo echo "blue" >> /etc/blue/run/pidfile
$:~ sudo ip netns exec red

"" No namespace vermelho ""

$:~ mount --bind /etc/red/run/ /run/
$:~ cat /var/run/pidfile

vermelho

"" No namespace azul ""

 $:~ mount --bind /etc/blue/run/ /run/
 $:~ cat /var/run/pidfile

azul

Então isso funciona bem. Desta forma, o daemon quando cria /var/run/charon.pid enquanto dentro do vermelho não irá confundir com /var/run/charon.pid do namespace azul e duas instâncias podem começar.

No entanto, aqui está o problema: se eu "sair" do namespace vermelho e, em seguida, entrar novamente via "ip netns exec red bash", a montagem não estará mais presente. Isto é, não existe / var / run / redfile.

Então, a questão é como eu posso fazer isso pegajoso? Preciso de alterações no / etc / fstab? Mas isso não funciona. Se perguntado, posso fornecer detalhes de "não funciona".

Estou perdido. Apreciará alguma ajuda.

Obrigado!

    
por Samar 29.04.2017 / 00:54

2 respostas

1

A solução simples seria instruir cada instância do strongswan a usar um diretório diferente para armazenar o arquivo PID, definindo o valor correto do IPSEC_PIDDIR variável de ambiente em seu script de início e parada.

    
por 29.04.2017 / 05:22
0

ip netns exec já vincular as montagens /etc/netns/<netns name>/* ao arquivo / diretório correspondente em /etc . Então você pode compilar strongSwan com, e. --with-piddir=/etc/ipsec.d/run e, em seguida, crie os diretórios necessários para que cada instância crie seus arquivos PID em diretórios separados:

# mkdir -p /etc/ipsec.d/run
# mkdir -p /etc/netns/<netns name 1>/ipsec.d/run
# mkdir -p /etc/netns/<netns name 2>/ipsec.d/run

Mais detalhes podem ser encontrados no wiki strongSwan .

    
por 01.05.2017 / 11:06