HTTP 프록시를 통해 Google Public DNS의 JSON API 조회하기
프록시를 거치는 HTTPS 요청으로 DNS 레코드를 가져오되, 리졸버 API는 프록시 자체의 호스트 이름 조회와 분리해 두세요.
HTTP 프록시는 DNS-over-HTTPS 서비스로 요청을 전달할 수 있습니다. Google Public DNS의 JSON 인터페이스에서는 명시적인 쿼리가 다음과 같을 수 있습니다.
curl --fail --proxy http://proxy.example.net:8080 --noproxy "" \
--get --data-urlencode "name=example.net" \
--data-urlencode "type=A" \
https://dns.google/resolve
프록시가 HTTPS 연결을 dns.google까지 전달합니다. HTTP 프록시 목록은 공개 프록시 접근이 허용된 경우 이 공개 쿼리에 사용할 후보를 고르는 장소 중 하나입니다. Google의 리졸버가 name 매개변수에 응답합니다. 이는 프록시가 자체 DNS 캐시를 반환하라는 요청도 아니고, 다른 애플리케이션이 사용하는 DNS 설정을 바꾸는 것도 아닙니다.
HTTP 상태만 보지 말고 JSON의 Status와 반환된 레코드를 읽으세요. 성공적으로 전달된 HTTP 응답이 DNS 실패를 설명할 수도 있습니다. type을 필요한 레코드(예: AAAA 또는 MX)로 바꾸세요. A 쿼리 하나는 모든 레코드 유형의 전체 목록이 아닙니다.
이 엔드포인트의 JSON 형식은 문서화된 Google API입니다. 표준 DoH 와이어 형식 클라이언트는 대신 DNS 메시지와 application/dns-message를 사용합니다. 일반적인 nslookup 호출은 HTTPS_PROXY가 설정되어 있다는 이유만으로 두 HTTP 인터페이스 중 어느 것도 얻지 못합니다.