Configurei vários namespaces de rede em meu sistema Linux (kernel versão 3.10) e agora desejo configurar cada namespace de rede para ter suas próprias configurações de DNS.
Criei resolv.conf
arquivos em cada /etc/netns/[namespace]
diretório, e agora quero fazer meu sistema funcionar da seguinte forma:
Na linha de comando bash, sempre que entro no contexto de um namespace de rede específico com nsenter --net=/run/netns/[namespace name]
, desejo que todos os processos iniciados na linha de comando (como nslookup, ping) sejam executados com as configurações de DNS que configurei com o /etc/netns/[namespace name]/resolv.conf
.
Se eu executar meus comandos assim:
"ip netns exec [namespace name] [command]"
então as configurações de DNS do namespace se aplicam.
No entanto, ao executar os comandos sem "ip netns exec", as configurações de DNS são obtidas de /etc/resolv.conf
, embora a execução de "netns get cur" indique que o contexto está definido para o namespace de rede desejado.
Tentei fazer mount --bind /etc/netns/[namespace name]/resolv.conf /etc/resolv.conf
no contexto do namespace de rede apropriado, mas isso aplica a montagem em todo o sistema, e não apenas no contexto desse namespace de rede.
Suspeitei que o uso de namespaces de montagem pode ajudar, então tentei ler a página de manual dos namespaces de montagem, mas não consegui entender nada no pouco tempo que dediquei a isso.
Existe uma maneira fácil e elegante de atingir esse objetivo?
Qualquer ajuda/orientação para a solução será muito apreciada!