Eu tenho uma máquina Ubuntu com um namespace de rede (ns1) conectado ao namespace da rede host via veth. Criei uma regra MASQUERADE no iptables para acessar a internet e consigo executar ping em 8.8.8.8 no namespace da rede.
Quando faço isso dig google.com
no host, funciona e vejo na interface principal:
08:03:02.376478 IP 10.0.10.40.51566 > 10.0.10.2.53: 48449+ [1au] A? google.com. (39)
08:03:02.378335 IP 10.0.10.2.53 > 10.0.10.40.51566: 48449 1/0/1 A 216.58.204.110 (55)
Porém, quando executo dig no namespace da rede: sudo ip netns ns1 dig google.com
, não funciona e é isso que vejo na interface principal do host:
08:03:09.033958 IP 10.0.10.40.50888 > 10.0.10.2.53: 32798+ [1au] A? ip-10-0-10-40.eu-west-3.compute.internal. (69)
08:03:09.034152 IP 10.0.10.40.36297 > 10.0.10.2.53: 43961+ [1au] AAAA? ip-10-0-10-40.eu-west-3.compute.internal. (69)
08:03:09.034460 IP 10.0.10.2.53 > 10.0.10.40.50888: 32798 NXDomain 0/1/1 (144)
08:03:09.034460 IP 10.0.10.2.53 > 10.0.10.40.36297: 43961 NXDomain 0/1/1 (144)
08:03:09.034559 IP 10.0.10.40.50888 > 10.0.10.2.53: 32798+ A? ip-10-0-10-40.eu-west-3.compute.internal. (58)
08:03:09.034639 IP 10.0.10.40.36297 > 10.0.10.2.53: 43961+ AAAA? ip-10-0-10-40.eu-west-3.compute.internal. (58)
08:03:09.034837 IP 10.0.10.2.53 > 10.0.10.40.50888: 32798 NXDomain 0/1/0 (133)
08:03:09.034906 IP 10.0.10.2.53 > 10.0.10.40.36297: 43961 NXDomain 0/1/0 (133)
Por que a solicitação vinda do namespace da rede não está tentando resolver hostname, google.com
mas hostname ip-10-0-10-40.eu-west-3.compute.internal
? Este último é aparentemente o nome do host da minha máquina Ubuntu
EDITAR
Se eu parar o systemd-resolve e adicionar o servidor de nomes upstream, ele funcionará. Portanto, deve ser um problema com o systemd-resolve
Responder1
systemd-resolve
reescreverá seu DNS para apontar para 127.0.0.53 por padrão. Não é acessível no namespace que você criou, portanto as pesquisas de DNS falham.
Tente usar dig google.com. @1.1.1.1
e deve funcionar, esteja systemd-resolve
em execução ou não.