
У нас есть две машины, которые периодически запрашивают различные внешние ресурсы с помощью 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
работают стабильно.