
当社には、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
dig
curl が定期的にホストの解決に失敗する一方で、一貫して動作する原因が他に何なのかはわかりませんgetent ahosts www.example.com
。