특정 이름 서버를 쿼리 할 때`dig`와`host`의 차이점은 무엇입니까?


11

이 명령을 사용하여 DNS 공급자와 올바르게 설정했는지 확인했습니다.

host hostname.example.com ns1.example-nameserver.com

내가 알 수있는 한, 이것은 답 ns1.example-nameserver.com을 찾아보고 요청 합니다 hostname.example.com. 호스트를 찾을 수없는 응답을 얻었으므로 내가 잘못했다고 생각했습니다. 그러나, 그들의 이름 서버를 지정하지 않고 내가 올바른 응답을 (가지고 (따라서 내 ISP의 네임 서버를 허용하는 것은 그것을 찾기 위해) hostname하는 CNAME것이 중요한 경우). 나는 이것을 추측 할 수 없으므로 주변을 검색하고 dig명령을 찾았습니다 .

dig @ns1.example-nameserver.com hostname.example.com

내가 말할 수있는 한 이것은 host명령 과 같은 일을합니다 -특정 이름 서버에 호스트를 찾도록 요청합니다. 따라서 그들은 어떻게 든 다르게 수행해야하며 이름 서버 캐싱은와 동일한 방법을 사용해야한다고 결론을 내립니다 dig.

내 결론은 옳고 그른 것입니다.

이 두 가지 검색 방법의 차이점은 무엇입니까?

틀린 경우 :

이 결론에 이르게 한 DNS hostdig명령 에 대한 나의 오해는 무엇입니까 ?

출력 예 :

$ host cardiff.tzmchapters.org ns1.livedns.co.uk
Using domain server:
Name: ns1.livedns.co.uk
Address: 213.171.192.250#53
Aliases: 

Host cardiff.tzmchapters.org not found: 3(NXDOMAIN)

$ dig @ns1.livedns.co.uk cardiff.tzmchapters.org

; <<>> DiG 9.8.3-P1 <<>> @ns1.livedns.co.uk cardiff.tzmchapters.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23620
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;cardiff.tzmchapters.org.   IN  A

;; ANSWER SECTION:
cardiff.tzmchapters.org. 3600   IN  CNAME   ghs.google.com.

;; AUTHORITY SECTION:
google.com.     3600    IN  SOA ns1.livedns.co.uk. admin.google.com. 1354213742 10800 3600 604800 3600

;; Query time: 27 msec
;; SERVER: 213.171.192.250#53(213.171.192.250)
;; WHEN: Mon Apr 22 23:47:05 2013
;; MSG SIZE  rcvd: 128

이 경우 두 명령 모두 동일한 방식으로 작동해야합니다. 각 명령의 전체 출력을 보여줄 수 있습니까?
Renan

방법 dighost보고 방법에 주목하십시오 NXDOMAIN. 으로 dig당신은 헤더 (출력의 5 비 빈 줄)과 함께 그것을 볼 수 host는 더 분명하다. NXDOMAIN도메인이 존재하지 않음을 의미합니다. 그러나 CNAME답변 섹션에 a 가 반환됩니다! 나는 그것이 DNS 서버의 버그라고 생각합니다!
Celada

그래서 경우에, 않습니다 dighost모두 (모든 타임 스탬프 제외) 동일한 응답 패킷을 얻을, 동일한 쿼리 패킷을 보내지 만 다르게 해석? host그것이 보자 마자 구제 됩니까 NXDOMAIN?
jhabbott

FWIW 특정 하위 도메인에서 정확히 반대의 문제가 있습니다. 이 특정 서브 도메인에서 호스트를 사용하면이 특정 서브 도메인이 예상되는 표준 호스트 이름으로 해석됨을 보여주는 예상 레코드를 제공합니다. 그러나이 특정 하위 도메인에서 dig를 사용할 때-레코드가 존재하지 않는다는 응답을받습니다. 또한 브라우저를 사용하여이 하위 도메인으로 이동해도 작동하지 않습니다. 철자 실수 등을 확인하면서 여러 번 시도했지만 명령이 같은 방식으로 작동하지 않습니다.
user12345

답변:


13

host, dignslookup모두 동일한 기능을 대부분 공유합니다. 경우에 당신은 (특정 네임 서버에 특정 DNS의 질문)에 대해 묻는 있습니다 dighost(실제로 nslookup) 정확히 동일하게 동작합니다.

DNS 문제 해결의 경우 dig출력 형식이 "원시"이기 때문에 선호됩니다. 출력에서 ​​DNS 응답의 4 개 필드 (질문, 답변, 권한 및 추가 섹션 (플러스의 플래그))의 모든 4 개 내용을 직접 표시합니다. 또한 더 많은 옵션이 있습니다. host반면에보다 사용자 친화적 인 출력 형식을 가지고 있습니다.

명령 중 하나에 있고 다른 명령에는없는 옵션이나 명령 중 하나가 출력하고 다른 정보는 그렇지 않은 옵션이 필요하지 않은 경우에는 우선적으로 문제가 발생합니다.


2
그들이 네트워크 측 (실제 쿼리)에서 똑같은 일을하면 어떻게 사용할 때 호스트를 찾을 수 host없지만 사용할 때 정답을 얻을 수 dig있습니까? 서버가 특정 설정을 사용하여 (선택 또는 실수로) 구성하더라도 요청을 차별화 할 수 있어야합니다.
jhabbott

아니! 귀하의 질문에 제공하는 두 가지 명령은 동일하며 동일한 답변을 생성해야합니다! 당신은 확실 dig당신에게 실제 준 대답 이 아닌 추가 또는 권한 섹션에서 기록을? Renan이 제안 했듯이 출력을 표시하는 것이 도움이 될 수 있습니다.
Celada

좋아, 나는 예제 출력을 추가했다. 나는 집과 직장에서 같은 결과를 얻습니다. 사용할 네임 서버를 지정하지 않고 ISP가 쿼리를 처리하면 제대로 host작동합니다. 직접 시도하고 결과를 알려주십시오.
jhabbott

ISP는 결국 서버가 직접 클라이언트 쿼리에 응답하지 않고 정보 전송을 요청하는 다른 네임 서버에만 응답하도록 구성되었다고 말했으며 네임 서버 dig와는 다른 방식으로 쿼리를 수행합니까?
jhabbott

1
dig는 정기 질문 (AXFR을 제외한 모든 유형)과 영역 전송 (AXXFR 유형)을 모두 수행 할 수 있지만 DNS 운영자는 일반적으로 영역 전송을 승인 된 슬레이브로 제한하므로 규칙적인 질문을 사용하고 싶을 것입니다.
Celada

0

당신이 아닌 FQDN 호스트 이름을 사용하는 경우, 결과는 다른 때문에이 될 수 host있는 검색 도메인을 사용하는 resolv.conf반면, dig기본적으로하지 않습니다.

사용하려면 +search옵션 dig을 사용해야합니다 resolv.conf(또는에 추가 ~/.digrc).

예를 들면 다음과 같습니다.

$ host foo
foo.myfqdn.com has address 10.1.2.3

$ dig +short foo
# (no result)

$ dig +short +search foo
10.1.2.3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.