DNS-NSLOOKUP 비 정식 답변의 의미는 무엇입니까?


117

일부 도메인의 nslookup경우 Non-authoritative answer섹션이 있습니다. 이것은 무엇을 의미 하는가?

Got answer:
    HEADER:
        opcode = QUERY, id = 3, rcode = NXDOMAIN
        header flags:  response, want recursion, recursion avail.
        questions = 1,  answers = 0,  authority records = 1,  additional =

    QUESTIONS:
        www.ssss.com.SME, type = AAAA, class = IN
    AUTHORITY RECORDS:
    ->  (root)
        ttl = 1787 (29 mins 47 secs)
        primary name server = a.root-servers.net
        responsible mail addr = nstld.verisign-grs.com

------------
Non-authoritative answer:
------------

------------
Name:    example.com
Address:  93.184.216.34
Aliases:  www.example.com

14
www.xxx.com은 실제 도메인 이름이 아닙니다. haha;) ... RFC는 example.com을 사용하도록 제안합니다. iana.org/domains/reserved
Mzn

답변:


99

기본적으로 이름이 말하는 것입니다. 신뢰할 수있는 답변은 레코드를 반환하는 도메인에 대해 신뢰할 수있는 것으로 간주되는 네임 서버 (자신을 조회 한 도메인의 목록에있는 네임 서버 중 하나)에서 비롯된 것으로, 권위없는 답변은 다른 곳 ( 조회 한 도메인 목록에없는 nameserver).

기본적으로 쿼리하는 도메인의 공식 네임 서버 인 네임 서버와 그렇지 않은 네임 서버의 구별입니다. 신뢰할 수없는 네임 서버는 응답을 두 번째 (또는 세 번째 또는 네 번째로) 받고 있습니다. 정보를 다른 곳에서 전달하기 만하면됩니다.

예를 들어, maps.google.com지금 nslookup을 수행 한 경우 구성된 이름 서버 중 하나에서 응답을받습니다. (ISP 또는 도메인 중 하나입니다.) ISP의 네임 서버 나 내 네임 서버가에 대한 네임 서버 목록에 없기 때문에 권한이없는 것으로 다시 나타납니다 google.com. 그들은 구글의 네임 서버가 아니기 때문에 NS 레코드를 생성하는 권위있는 소스가 아닙니다.

Google의 신뢰할 수있는 네임 서버 목록은 아래 (whois.internic.net)입니다.

도메인 이름 : GOOGLE.COM

등록 기관 : MARKMONITOR INC.

후이즈 서버 : whois.markmonitor.com

이름 서버 : NS1.GOOGLE.COM

이름 서버 : NS2.GOOGLE.COM

이름 서버 : NS3.GOOGLE.COM

이름 서버 : NS4.GOOGLE.COM

업데이트 날짜 : 2011 년 7 월 20 일

작성 날짜 : 1997 년 9 월 15 일

만료 날짜 : 14-sep-2020

구성된 DNS 서버를 해당 목록에있는 DNS 서버 중 하나로 변경 한 후에 대한 nslookup조치 maps.google.com를 취하면 정식 답변을받습니다. 이러한 서버는 Google 도메인에서 유효한 이름과 그렇지 않은 이름에 대한 권한 (또는 소스)입니다. 권한이없는 이름 서버 인 다른 모든 이름 서버는 신뢰할 수있는 서버에서 NS 레코드를 줄 아래로 가져옵니다.


35

귀하가받은 답변은 기본적으로 로컬 DNS 서버에서 캐시되거나 전달 된 응답입니다. 기본적으로 비인증 네임 서버는 쿼리되는 영역에 대한 레코드를 포함하지 않는 네임 서버입니다. 예를 들어 로컬 DNS에 Google 이름 레코드가 없을 수 있습니다.

host -t ns example.comexample.com에서 NS 레코드를 검색하도록 실행 하여 지정된 도메인에 대해 권한이있는 이름 서버를 얻을 수 있습니다 .

Google의 경우 다음과 같습니다.

$ host -t ns google.com
google.com name server ns4.google.com.
google.com name server ns1.google.com.
google.com name server ns2.google.com.
google.com name server ns3.google.com.

나중에 nslookup해당 서버 중 하나에 대해 명령을 실행 하면 정식 답변을 얻을 수 있습니다.

$ nslookup www.google.com ns1.google.com
Server:         ns1.google.com
Address:        216.239.32.10#53

www.google.com  canonical name = www.l.google.com.
Name:   www.l.google.com
Address: 173.194.43.49
Name:   www.l.google.com
Address: 173.194.43.50
Name:   www.l.google.com
Address: 173.194.43.48
Name:   www.l.google.com
Address: 173.194.43.52
Name:   www.l.google.com
Address: 173.194.43.51

을 사용하는 경우 nslookupNS 레코드 유형을 얻으려면 대화식 모드에서 다음과 같이 실행할 수 있습니다.

$ nslookup
> set querytype=ns
> google.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
google.com      nameserver = ns3.google.com.
google.com      nameserver = ns4.google.com.
google.com      nameserver = ns1.google.com.
google.com      nameserver = ns2.google.com.

Authoritative answers can be found from:
ns1.google.com  internet address = 216.239.32.10

따라서 설정 querytype=ns은 위의 host명령이 수행 한 작업을 수행합니다.


그냥 궁금해서 ... 무슨 #Address: 127.0.0.1#53이야?
cwhsu

청취 포트가 맞기 때문에 그것을 추측? 여기에 명시된 것과 같이 nlp.stanford.edu/IR-book/html/htmledition/dns-resolution-1.html
cwhsu

24

비 정식 답변은 쿼리 된 도메인 이름에 대한 정식 DNS 서버에서 답변을 가져 오지 않음을 의미합니다.

먼저 DNS 시스템의 작동 방식을 이해해야합니다. DNS 시스템은 세 개의 계층으로 나눌 수 있습니다. 그들은:

  • 루트 DNS 서버
  • 최상위 도메인 DNS 서버
  • 신뢰할 수있는 DNS 서버

일반적으로 운영 체제에 IP 주소가 지정된 로컬 DNS 서버라고하는 다른 종류의 DNS 서버가 있습니다.

브라우저가 example.com과 같은 웹 사이트에 연결되면 브라우저는 먼저 로컬 DNS 서버에 쿼리하여 example.com의 IP 주소를 얻습니다.

  • 로컬 DNS 서버에 example.com의 A 레코드가 없으면 루트 DNS 서버 중 하나를 쿼리합니다.

  • 루트 DNS 서버는 다음과 같이 말합니다. A 레코드는 없지만 .com 도메인을 담당하는 최상위 도메인 DNS 서버를 알고 있습니다.

  • 그런 다음 로컬 DNS 서버는 .com 도메인을 담당하는 최상위 도메인 DNS 서버를 쿼리합니다. TLD DNS 서버가 응답합니다. 나도 모르지만 example.com에 대해 권한이있는 DNS 서버는 알고 있습니다.

  • 따라서 로컬 DNS 서버는 신뢰할 수있는 DNS 서버를 쿼리합니다. 실제 DNS 레코드는 신뢰할 수있는 DNS 서버에 저장되므로 로컬 DNS 서버에 응답을 제공합니다.

그런 다음이 쿼리 결과는 로컬 DNS 서버에 캐시되지만 오래 될 수 있습니다. TTL 시간이 만료되면 로컬 DNS 서버는 신뢰할 수있는 DNS 서버의 쿼리 결과를 업데이트합니다. 로컬 DNS 서버에서 DNS 레코드를 쿼리 할 때마다 비 정식 (비공식) 답변이 반환됩니다. 신뢰할만한 답변을 원한다면 nslookup 또는 기타 유틸리티를 사용할 때 신뢰할만한 DNS 서버를 명시 적으로 지정해야합니다. 로컬 DNS 서버를 캐싱 DNS 서버라고해야한다고 생각합니다.

누군가 도메인 이름을 등록하면 권한있는 DNS 서버 인 DNS 서버를 지정할 수 있습니다. 이 정보를 NS 레코드라고합니다. NS 레코드는 최상위 도메인 DNS 서버에 네임 서버가 도메인의 A 레코드, MX 레코드 등을 보유하고 있음을 알려줍니다.


4
이것은 다른 모든 답변을 합한 것보다 훨씬 많은 것을 설명했습니다. DNS 작동 방식의 토폴로지를 설명하면이 문제에 대한 컨텍스트를 제공하는 데 매우 유용합니다.
Levi Roberts

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