Isso foi causado por um conjunto de regras excessivamente restritivo em um firewall da Juniper que fica em frente à infraestrutura VMware.
Eu construí um resolvedor de teste para que eu pudesse ver os dois lados da conversa, e o pacote ausente identificado por Kempniu em sua excelente resposta estava de fato sendo lançado em algum lugar ao longo do caminho. Conforme observado nessa resposta, getaddrinfo()
sem nenhuma família de endereços especificada aguardará respostas relativas a todas famílias suportadas antes de retornar (ou, no meu caso, expirar).
Meu colega que gerencia a rede observou que
The default behavior on the Juniper firewall is to close a DNS-related session as soon as a DNS reply matching that session is received.
Assim, o firewall estava vendo a resposta do IPv4, observando que ela respondeu à consulta da VM e fechando o caminho de entrada dessa porta. O seguinte pacote de resposta IPv6 foi descartado. Não faço ideia de porque os dois pacotes passaram pela segunda vez, mas a desativação desse recurso no firewall resolveu o problema.
Este é um extrato relacionado do KB do Juniper:
Here's a scenario where DNS Reply packets are dropped:
- A session for DNS traffic is created when the first DNS query packet hits the firewall and there is a permitting policy configured. The default timeout is 60 sec.
- Immediately before the session is closed, a new DNS query is transmitted, and since it matches an existing session (since source and destination port/IP pair is always the same), it is forwarded by the firewall. Note that the session timeout is not refreshed according to any newly arriving packet.
- The created DNS session is aged out when the first DNS query response (reply) hits the device, regardless how much the timeout remains.
- When a DNS reply is passed through the firewall, the session is aged out.
- All subsequent DNS replies are dropped by the firewall, since no session exists.
Se você está pensando em avaliar esta resposta, por favor também revele a resposta de Kempniu. Sem isso eu ainda estaria se debatendo tentando encontrar algum problema de configuração na VM.