dnsmasq não disponível no namespace da rede no primeiro

3

ubuntu 16.04, dnsmasq 2.75

NOTA: Eu tenho o dnsmasq rodando com a opção --hostsdir , então o dnsmasq deve pegar as entradas do host gravadas naquele diretório.

Etapas para reproduzir:

... fresh machine boot ...
$> echo 'MY-IP test.domain.com' > $DNSMASQ_HOSTS_DIR/test
$> sudo ip netns add test
$> sudo ip link add veth-test type veth peer name test-eth0
$> sudo ip link set test-eth0 netns test
$> sudo ip addr add 10.0.4.1/24 dev veth-test
$> sudo ip link set veth-test up
$> sudo ip netns exec "test" ip addr add "10.0.4.2/24" dev "test-eth0"
$> sudo ip netns exec "test" ip link set test-eth0 up
$> sudo ip netns exec "test" ip link set lo up
$> sudo ip netns exec "test" ip route add default via "10.0.4.1"
$> sudo ip route add "10.0.4.2/32" via default dev "veth-test"
$> sudo mkdir -p /etc/netns/test
$> sudo bash -c "cat > /etc/netns/test/resolv.conf" << EOL
    nameserver MY_IP
    EOL
$> sudo ip netns exec test bash
test-ns$> host test.domain.com
    ;; connection timed out; no servers could be reached

Então, criei o namespace de rede, mas não consigo acessar meu servidor de DNS. As duas etapas a seguir corrigem o problema e resultam em minha confusão.

... return to the default global namespace ...
$> sudo service dnsmasq restart
$> sudo ip netns exec test bash
test-ns~# host test.domain.com
    test.domain.com has address MY_IP
    ... WORKS! WHAT?!

No meu entender, reiniciar o dnsmasq não deve afetar a rede do namespace da minha rede. Antes da reinicialização não consigo acessar o servidor dns, após a reinicialização (e uma nova instância do shell de namespace da rede), consigo acessar e obter respostas do dnsmasq. Não consigo entender por que o dns não está funcionando sem o reinício dnsmasq e por que ele funciona depois (embora eu tenha a sensação de que eles estão relacionados: =]).

Qualquer ajuda seria muito apreciada.

    
por user1797466 23.05.2017 / 08:55

0 respostas