ubuntu 16.04, dnsmasq 2.75
NOTA: Tengo dnsmasq ejecutándose con --hostsdir
la opción, por lo que dnsmasq debería recoger las entradas del host escritas en ese directorio.
Pasos para reproducir:
... 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
Entonces, creé el espacio de nombres de la red pero no puedo acceder a mi servidor DNS. Los siguientes 2 pasos solucionan el problema y generan confusión.
... 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?!
Según tengo entendido, reiniciar dnsmasq no debería tener ningún efecto en la red de mi espacio de nombres de red. Antes del reinicio no puedo acceder al servidor DNS, después del reinicio (y una nueva instancia del shell del espacio de nombres de la red) puedo acceder y obtener respuestas de dnsmasq. No puedo entender por qué dns no funciona sin reiniciar dnsmasq y por qué funciona después (aunque tengo la sensación de que están relacionados :=]).
Cualquier ayuda sería muy apreciada.