cURL периодически не может разрешить домены, в то время как dig всегда разрешает успешно

cURL периодически не может разрешить домены, в то время как dig всегда разрешает успешно

У нас есть две машины, которые периодически запрашивают различные внешние ресурсы с помощью cURL. Начиная с пары дней назад, эти запросы начали периодически давать сбои с Could not resolve host: www.example.com.

Или из командной строки: curl: (6) Could not resolve host: www.example.com

Это происходит для множества разных доменов, но, по-видимому, не для ВСЕХ доменов. Я написал скрипт, чтобы попытаться подключиться к одному из этих доменов каждые 5 секунд, а также искать его с помощью dig и getent. Вызов curl обычно терпит неудачу около минуты каждые несколько минут, в то время как dig и getent последовательно разрешаются успешно. Вот скрипт:

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

И необработанный вывод при сбое 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

Я пробовал указывать различные публичные серверы имен в /etc/resolv.conf, включая 1.1.1.1 и 8.8.8.8, но безрезультатно. Я также пробовал явно указывать сервер имен для dig и curl, но dig всегда успешно справляется, а curl периодически не может разрешить.

В /etc/nsswitch.conf у меня есть hosts: files dns myhostname

Я не уверен, что еще может привести к тому, что curl периодически не может разрешить хосты, хотя digи getent ahosts www.example.comработают стабильно.

Связанный контент