cURL falla intermitentemente al resolver dominios, mientras que dig siempre se resuelve exitosamente

cURL falla intermitentemente al resolver dominios, mientras que dig siempre se resuelve exitosamente

Tenemos dos máquinas que consultan periódicamente varios recursos externos usando cURL. Desde hace un par de días, estas solicitudes han comenzado a fallar de forma intermitente con Could not resolve host: www.example.com.

O desde la línea de comando: curl: (6) Could not resolve host: www.example.com

Esto está sucediendo en numerosos dominios diferentes, pero aparentemente no en TODOS los dominios. Escribí un script para intentar conectarme a uno de estos dominios cada 5 segundos, además de buscarlo usando dig y getent. La llamada curl generalmente fallará durante aproximadamente un minuto cada pocos minutos, mientras que dig y getent consistente se resuelven exitosamente. Aquí está el guión:

#!/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

Y la salida sin procesar cuando falla curl:

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

Intenté especificar varios servidores de nombres públicos en /etc/resolv.conf, incluidos 1.1.1.1 y 8.8.8.8, sin ningún efecto. También intenté configurar explícitamente el servidor de nombres para dig y curl, pero aun así dig siempre tiene éxito mientras curl falla intermitentemente para resolverse.

En /etc/nsswitch.conf tengo hosts: files dns myhostname

No estoy seguro de qué más podría causar que curl deje de resolver periódicamente los hosts digy getent ahosts www.example.comfuncione de manera consistente.

información relacionada