
Wir haben zwei Maschinen, die regelmäßig verschiedene externe Ressourcen mit cURL abfragen. Seit ein paar Tagen schlagen diese Anfragen zeitweise fehl Could not resolve host: www.example.com
.
Oder über die Befehlszeile:
curl: (6) Could not resolve host: www.example.com
Dies geschieht bei zahlreichen verschiedenen Domänen, aber anscheinend nicht bei ALLEN Domänen. Ich habe ein Skript geschrieben, das alle 5 Sekunden versucht, eine Verbindung zu einer dieser Domänen herzustellen und sie mit dig und getent nachzuschlagen. Der Curl-Aufruf schlägt im Allgemeinen alle paar Minuten für etwa eine Minute fehl, während dig und getent konsistent erfolgreich aufgelöst werden. Hier ist das Skript:
#!/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
Und die Rohausgabe, wenn Curl fehlschlägt:
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
Ich habe versucht, verschiedene öffentliche Nameserver in /etc/resolv.conf anzugeben, darunter 1.1.1.1 und 8.8.8.8, aber ohne Erfolg. Ich habe auch versucht, den Nameserver für Dig und Curl explizit festzulegen, aber Dig funktioniert immer noch, während Curl zeitweise nicht aufgelöst werden kann.
In /etc/nsswitch.conf habe ich
hosts: files dns myhostname
Ich bin nicht sicher, was sonst dazu führen könnte, dass das Auflösen von Hosts bei curl regelmäßig fehlschlägt, während dig
es getent ahosts www.example.com
konsistent funktioniert.