
cURL을 사용하여 다양한 외부 리소스를 주기적으로 쿼리하는 두 대의 컴퓨터가 있습니다. 며칠 전부터 이러한 요청이 간헐적으로 실패하기 시작했습니다 Could not resolve host: www.example.com
.
또는 명령줄에서:
curl: (6) Could not resolve host: www.example.com
이는 다양한 도메인에서 발생하지만 모든 도메인에서 발생하는 것은 아닙니다. 나는 5초마다 이러한 도메인 중 하나에 연결하고 dig 및 getent를 사용하여 검색하는 스크립트를 작성했습니다. 컬 호출은 일반적으로 몇 분마다 약 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
컬이 실패할 경우 원시 출력은 다음과 같습니다.
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
1.1.1.1 및 8.8.8.8을 포함하여 /etc/resolv.conf에 다양한 공개 네임서버를 지정해 보았지만 효과가 없었습니다. 또한 dig 및 컬에 대한 네임서버를 명시적으로 설정하려고 시도했지만 여전히 dig는 항상 성공하지만 컬은 간헐적으로 해결되지 않습니다.
/etc/nsswitch.conf에 나는
hosts: files dns myhostname
dig
컬이 호스트를 주기적으로 확인 하지 못하고 일관되게 작동하는 원인이 무엇인지 잘 모르겠습니다 getent ahosts www.example.com
.