cURL kann Domänen zeitweise nicht auflösen, während dig dies immer erfolgreich tut

cURL kann Domänen zeitweise nicht auflösen, während dig dies immer erfolgreich tut

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 diges getent ahosts www.example.comkonsistent funktioniert.

verwandte Informationen