cURL falhando intermitentemente na resolução de domínios, enquanto dig sempre resolve com êxito

cURL falhando intermitentemente na resolução de domínios, enquanto dig sempre resolve com êxito

Temos duas máquinas que consultam periodicamente vários recursos externos usando cURL. Há alguns dias, essas solicitações começaram a falhar intermitentemente com o Could not resolve host: www.example.com.

Ou na linha de comando: curl: (6) Could not resolve host: www.example.com

Isso está acontecendo em vários domínios diferentes, mas aparentemente não em TODOS os domínios. Escrevi um script para tentar me conectar a um desses domínios a cada 5 segundos, além de pesquisar usando dig e getent. A chamada curl geralmente falhará por cerca de um minuto a cada poucos minutos, enquanto dig e getent consistente são resolvidos com êxito. Aqui está o roteiro:

#!/bin/bash

for i in {1..500}
do
    printf "\ndig short:\n"
    dig +short www.example.com
    printf "\ngetent:\n"
    getent ahosts www.example.com
    printf "\ncURL v4:\n"
    curl -sSI -4 https://www.example.com

    sleep 5
done

E a saída bruta quando o curl falha:

dig short:
r9fe7.x.incapdns.net.
107.154.108.172

getent:
107.154.108.172 STREAM r9fe7.x.incapdns.net
107.154.108.172 DGRAM
107.154.108.172 RAW

cURL v4:
curl: (6) Could not resolve host: www.example.com

Tentei especificar vários servidores de nomes públicos em /etc/resolv.conf, incluindo 1.1.1.1 e 8.8.8.8, sem efeito. Também tentei definir explicitamente o servidor de nomes para dig e curl, mas ainda assim dig sempre é bem-sucedido, enquanto curl falha intermitentemente na resolução.

Em /etc/nsswitch.conf eu tenho hosts: files dns myhostname

Não tenho certeza do que mais poderia fazer com que o curl falhasse periodicamente na resolução dos hosts, enquanto digand getent ahosts www.example.comfuncionava de forma consistente.

informação relacionada