
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 dig
y getent ahosts www.example.com
funcione de manera consistente.