cURL はドメインの解決に断続的に失敗するが、dig は常に正常に解決する

cURL はドメインの解決に断続的に失敗するが、dig は常に正常に解決する

当社には、cURL を使用してさまざまな外部リソースを定期的にクエリする 2 台のマシンがあります。数日前から、これらのリクエストが断続的に失敗し始めましたCould not resolve host: www.example.com

またはコマンドラインから: curl: (6) Could not resolve host: www.example.com

これは多数の異なるドメインで発生していますが、すべてのドメインで発生しているわけではないようです。私は、これらのドメインの 1 つに 5 秒ごとに接続し、dig と getent を使用して検索するスクリプトを作成しました。curl 呼び出しは通常、数分ごとに約 1 分間失敗しますが、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

digcurl が定期的にホストの解決に失敗する一方で、一貫して動作する原因が他に何なのかはわかりませんgetent ahosts www.example.com

関連情報