A network namespace is logically another copy of the network stack, with its own routes, firewall rules, and network devices.
Então você precisa de algo assim: Iptables para redirecionar o IP e a porta de pesquisa de DNS
Eu tentei usar o dnsmasq como o servidor de nomes para máquinas virtuais. Em todos os vm-s, /etc/resolv.conf
indica que vm precisa acessar 192.168.15.3
para resolver os nomes de domínio. No entanto, a interface que contém 192.168.15.3 está dentro de um namespace de rede no host.
Eu posso ping 192.168.15.3
da máquina virtual e do host (dentro do namespace da rede). E lsof -i:53
fora do namespace da rede mostra que o dnsmasq está escutando na porta 53. Se eu executar lsof -i:53
dentro do namespace da rede, não haverá nada.
Se eu alterar o conteúdo em /etc/resolv.conf
para usar qualquer endereço IP da interface no namespace público do host, a resolução de nomes funcionará bem. Parece que o processo dnsmasq não deu errado.
Eu tentei ip netns exec <THE NAMESPACE> systemctl start dnsmasq
após parar o dnsmasq, mas somente o dnsmasq abre sua porta dentro do namespace público.
O que devo fazer se eu não quiser modificar resolv.conf
dentro da vm, mas apenas configurar algo no host? Como tornar a porta 53 acessível dentro do namespace da rede?
A network namespace is logically another copy of the network stack, with its own routes, firewall rules, and network devices.
Então você precisa de algo assim: Iptables para redirecionar o IP e a porta de pesquisa de DNS