도메인 이름에 대한 권한이있는 이름 서버는 어떻게 찾습니까?


317

충돌하는 DNS 레코드의 출처를 어떻게 찾을 수 있습니까?

답변:


413

지정된 도메인 이름에 대한 SOA (권한 시작) 레코드가 필요하며, 이것이 보편적으로 사용 가능한 nslookup 명령 줄 도구를 사용하여이를 달성하는 방법입니다 .

command line> nslookup
> set querytype=soa
> stackoverflow.com
Server:         217.30.180.230
Address:        217.30.180.230#53

Non-authoritative answer:
stackoverflow.com
        origin = ns51.domaincontrol.com # ("primary name server" on Windows)
        mail addr = dns.jomax.net       # ("responsible mail addr" on Windows)
        serial = 2008041300
        refresh = 28800
        retry = 7200
        expire = 604800
        minimum = 86400
Authoritative answers can be found from:
stackoverflow.com       nameserver = ns52.domaincontrol.com.
stackoverflow.com       nameserver = ns51.domaincontrol.com.

기원 (또는 주 이름 서버 라인 Windows에서)이 있음을 알려줍니다 ns51.domaincontrol가 의 주요 이름 서버입니다 stackoverflow.com .

출력이 끝나면 지정된 도메인의 백업 서버를 포함한 모든 권한이있는 서버가 나열됩니다.


158
nslookup -type = soa stackoverflow.com
Ben Amada 2011

6
그러나 Windows에서는 "Authoritative answers"응답을 볼 수 없습니다. Windows 8과 Ubuntu 12가 나란히 있고 동일한 도메인에 대해 동일한 명령이 Ubuntu에서 제대로 작동하지만 Windows에서는 작동하지 않습니다.
Mario Awad

1
이 쇼가 반드시 DNS 설정에 대한 최근 변경 사항을 보여주지는 않지만 dig, 나에게는 사용하는 것처럼 보입니다 (아래 답변 참조)
rogerdpack

6
정식 답변은 없지만 비 정식 답변은 괜찮다면 무엇을 의미합니까?
Overmind

6
당신이 실행하는 경우 nslookup -type=soa stackoverflow.com리눅스 오늘 (2019 2 월)을, 권위있는 부분은 비어 있습니다.
simpleuser

174

귀하의 질문에 단수를 사용했지만 일반적으로 권위있는 이름 서버가 여러 개 있지만 RFC 1034는 적어도 두 가지를 권장합니다.

"정식 이름 서버"가 아니라 "기본 이름 서버"를 의미하지 않는 한. 보조 이름 서버 권한이 있습니다.

Unix에서 도메인의 네임 서버를 찾으려면 :

  % dig +short NS stackoverflow.com
 ns52.domaincontrol.com.
 ns51.domaincontrol.com.

주 서버로 나열된 서버를 찾으려면 ( "주"개념은 요즘 꽤 애매하고 일반적으로 좋은 대답이 없습니다) :

% dig +short  SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.

네임 서버 간의 불일치를 확인하기 위해 check_soaLiu & Albitz "DNS & BIND"책 (O'Reilly editor)에 설명 된대로 이전 도구 를 선호 합니다. 소스 코드는 http://examples.oreilly.com/dns5/ 에 있습니다 .

% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300

여기에서 두 정식 이름 서버는 동일한 일련 번호를 갖습니다. 좋은.


5
dig + short는 항상 내가 기대하는 대답을하지는 않습니다. 예를 들어, www.pressero.com다른 사이트의 CNAME 인 으로 정의 된 사이트 인 dig + short SOA는 CNAME 대상 만 반환합니다.
Ross Presser

NS는 어떻게 권위있게 행동합니까?
Overmind

1
@ NS는 "정식"을 만들지 않습니다. 이름 서버가 일부 도메인에 대해 권한을 갖도록 구성된 경우 도메인에 로컬 영역 파일 (일반적으로 플랫 텍스트 파일이지만 다르게 수행 될 수 있음)이 있으며 해당 도메인에 대한 쿼리에 응답합니다. 유용하려면 권한이있는 각 도메인의 상위 영역에 NS 레코드로 NS 레코드로 표시되어야합니다. 그렇지 않으면 기본적으로 아무도 쿼리하지 않습니다.
Patrick Mevzek

@RossPresser 대답은 NS / SOA 레코드에 대해 말하고 있으며 www.pressero.comA 레코드 ( dig지정하지 않으면 기본 레코드 유형)에 대해 생각했을 것입니다 . 그러나 필요한 경우 a tail -1를 추가 하여 최종 결과를 검색하십시오.
Patrick Mevzek

@PatrickMevzek 내 의견에서 언급했듯이을 사용했습니다 dig +short SOA www.pressero.com. 이것은 pressero.com도메인 의 SOA 레코드가 아닌 CNAME 대상 만 반환합니다 . tail -1문제를 도와주지 않습니다. dig +short SOA한 줄만 방출합니다.
Ross Presser

40

* nix에서 :

$ dig -t ns <domain name>

3
그는 IPv4 주소가 아닌 이름 서버를 요청했습니다. 그래서 유형 (-t) NS하지 A.해야한다
bortzmeyer

1
왜 SOA @bortzmeyer를 입력하지 않습니까?
랜디 L

NS 결과 대신 SOA를 반환하기 때문에?
트리플

17

나는이 DNS 전파 도구 질문에 이런 종류의 답변을 설계합니다.

소스는 AGPLv3에 따라 릴리스됩니다.

(예, 인터페이스는 현재 기본입니다.)

"host"명령을 사용하여 도메인의 네임 서버를 찾을 수도 있습니다.

[davidp @ supernova : ~] $ 호스트 -t ns stackoverflow.com
stackoverflow.com 이름 서버 ns51.domaincontrol.com.
stackoverflow.com 이름 서버 ns52.domaincontrol.com.

@cacho 사실입니다. 기회가된다면 그걸 추가 할 수도 있습니다.
David Precious

1
"502 Bad Gateway nginx / 1.14.2"가
표시됨

8

항상 + trace 옵션을 추가하는 가장 좋은 방법은 다음과 같습니다.

dig SOA +trace stackoverflow.com

다른 공급자에서 호스팅되는 재귀 CNAME 과도 작동합니다. + 추적 추적은 + norecurse를 암시하므로 결과는 지정한 도메인에만 해당됩니다.


dnsmasq + trace와 같은 로컬 NS 서버를 실행하는 경우 아무 것도 반환하지 않습니다 ...
Daniel Sokolowski

이 명령은 53 개의 라인, 3652 바이트의 출력을 제공하며 그 중 대부분은 임의의 값입니다. 신뢰할 수있는 네임 서버가 무엇인지 판단하기 위해 출력을 어떻게 해석해야합니까?
theferrit32

나는 그것을 아래에서 위로 읽습니다. SOA 레코드는 검색 대상입니다. 적은 데이터를 갖도록 SOA를 grep 할 수 있습니다.
Alex

6

인터넷 검색 용어는 "정의 적"이 아니라 "권한"입니다.

리눅스 또는 Mac에서 당신은 명령을 사용할 수 있습니다 whois, dig, host, nslookup또는 여러 다른 사람을. nslookupWindows에서도 작동 할 수 있습니다.

예를 들면 :

$ whois stackoverflow.com
[...]
   Domain servers in listed order:
      NS51.DOMAINCONTROL.COM
      NS52.DOMAINCONTROL.COM

추가 크레딧에 관해서는 가능합니다.


그의 제안은 일반적으로 호스트 이름의 IP 주소 만 제공하므로 aryeh는 분명히 잘못되었습니다. 를 사용하는 경우 다음 dig과 같이 NS 레코드를 찾아야합니다.

dig ns stackoverflow.com

이는 로컬 DNS 서버를 요청하여 캐시에있는 잘못되었거나 오래된 답변을 제공 할 수 있습니다.


6
이 명령은 동일 하지 않습니다 . whois가 제공 한 정보가 최신 정보라고 아무 것도 말하지 않습니다. 사람들이 레지스트리 나 등록 기관에 알리지 않고 영역 파일의 NS 레코드를 업데이트하기 때문이 아닙니다.
bortzmeyer

나는 그들이 결코 말하지 않았다;) 부모 영역이 업데이트되지 않는 한, 당신의 영역에서 NS 레코드를 변경할 수 있습니다. 그리고 부모 영역의 업데이트는 일반적으로 (최소한 내 공급자와 함께) 후이즈 데이터의 업데이트와 함께 진행됩니다.

5

한 번의 요청으로 도메인의 신뢰할 수있는 네임 서버 와 일반적인 DNS 레코드 를 제공 하는 DNS 조회 도구 를 만들었습니다 .

예 : https://www.misk.com/tools/#dns/stackoverflow.com

Google의 도구는 루트 네임 서버에서 실시간 (미치) DNS 조회를 수행 한 후 권위있는 네임 서버에 도달 할 때까지 네임 서버 조회를 수행하여 권위있는 네임 서버를 찾습니다. 이것은 dns 확인자가 정식 답변을 얻는 데 사용하는 것과 동일한 논리입니다. 임의의 신뢰할 수있는 네임 서버가 각 쿼리에서 선택되고 식별되므로 여러 요청을 수행하여 충돌하는 DNS 레코드를 찾을 수 있습니다.

위 예에서 dns 조회 결과의 맨 아래에있는 "Authoritative Nameservers"를 클릭하여 네임 서버 위임 경로를 볼 수도 있습니다.

예 : https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net


2

후이즈 서비스를 사용할 수 있습니다. UNIX와 같은 운영 체제에서는 다음 명령을 실행합니다. 또는 웹 ( http://www.internic.net/whois.html) 에서이를 수행 할 수 있습니다 .

후이즈 stackoverflow.com

다음과 같은 응답이 나타납니다.

... 여기에서 텍스트가 제거되었습니다 ...

나열된 순서의 도메인 서버 : NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM

nslookup 또는 dig를 사용하여 지정된 도메인의 레코드에 대한 자세한 정보를 찾을 수 있습니다. 이것은 설명 된 충돌을 해결하는 데 도움이 될 수 있습니다.


2
whois가 제공 한 정보가 최신 정보라고 아무 것도 말하지 않습니다. 사람들이 레지스트리 나 등록 기관에 알리지 않고 영역 파일의 NS 레코드를 업데이트하기 때문이 아닙니다.
bortzmeyer

질문에 대한 직접적인 대답은 아니지만 "whois"는 어딘가에 이름 서버가 될 사람을 알려주기 때문에 유용합니다 (현재 어떤 이유에서든 그렇지 않더라도).
누군가

1

불행히도 이러한 도구의 대부분은 실제 이름 서버 자체에서 제공 한 NS 레코드 만 반환합니다. 실제로 도메인을 담당하는 이름 서버를보다 정확하게 결정하려면 "whois"를 사용하고 여기에 나열된 도메인을 확인하거나 "dig [domain] NS @ [root name server]"를 사용하여 해당 도메인을 실행해야합니다. 이름 서버 목록을 얻을 때까지 재귀 적으로 ...

이름 서버 자체에서 제공되는 결과뿐만 아니라 신뢰할 수 있고 일관된 형식으로 결과를 얻기 위해 실행할 수있는 간단한 명령 행이 있었으면합니다. 나를 위해 이것의 목적은 내가 관리하는 약 330 개의 도메인 이름을 쿼리 할 수 ​​있도록하여 각 도메인이 어떤 이름 서버를 가리키는 지 정확히 (등록자 설정에 따라) 결정할 수 있습니다.

"dig"또는 "host"또는 * nix에서 다른 것을 사용하는 명령을 아는 사람이 있습니까?


2
단순한. 도메인이 example.org라고 가정 해 봅시다. 먼저 'dig + short NS org'와 함께 ".org"의 네임 서버를 찾아야합니다. 그런 다음 그 중 하나를 쿼리합니다 (모두 신뢰할 수 있음). d0.org.afilias-nst.org를 선택합시다. 'dig @ d0.org.afilias-nst.org NS example.org.'로 쿼리하십시오.
bortzmeyer

리졸버가 기본적으로 도메인 자체에 의해 나열된 이름 서버를 반환한다는 사실이 좋습니다. 이것이 정식 정보입니다. 부모 영역의 위임은 신뢰할 수 없습니다.
bortzmeyer

그리고 whois에 대한 포인터는 붉은 청어입니다. 후이즈 이름 서버 정보는 종종 부실합니다. 신뢰할 수있는 리소스는 DNS입니다.
tripleee

1
Whois는 완전히 임의적입니다. whois 목록에 표시되는 값은 DNS와 기술적 관련이 없습니다. 종종 오래되거나 잘못되었습니다. 후이즈 데이터는 거의 절대 신뢰할 수 없다고 말할 수 있습니다. '얇고'두꺼운 레지스트리가 있습니다. 잘 알려진 두 가지 두꺼운 레지스트리는 .com 및 .net 레지스트리입니다. 이러한 레지스트리에는 모든 DNS 데이터가 포함되며 whois 응답을 신뢰할 수 있습니다. 거의 다른 다른 레지스트리는 '사물'이며 자체 whois 레지스트리를 운영합니다. 이 데이터는 종종 틀립니다.
Mark

1

SOA 레코드는 모든 서버에 계층 구조를 넘어서서 도메인 소유자가 제어 할 수 없으며 도메인 소유자가 제어하는 ​​하나의 신뢰할 수있는 이름 서버를 가리 킵니다.

반면, 권한 서버 자체의 SOA 레코드는 해당 도메인을 해결하는 데 반드시 필요하지는 않으며 가짜 정보 (또는 숨겨진 기본 또는 다른 제한된 서버)를 포함 할 수 있으며 권한 이름 서버를 결정하기 위해 의존해서는 안됩니다. 주어진 도메인에 대해

주어진 하위 도메인에 대한 안정적인 SOA 정보를 얻으려면 최상위 도메인 에 대해 권한이있는 서버를 쿼리해야 합니다.

(루트 이름 서버에서 TLD를 조회 할 수있는 권한이있는 서버에 대한 정보)

TLD 신뢰할 수있는 서버에서 SOA에 대한 신뢰할 수있는 정보가 있으면 다른 NS 레코드에 대해 기본 이름 서버 자체 (gTLD 이름 서버의 SOA 레코드에있는 것)를 쿼리 한 다음 모두 확인을 진행할 수 있습니다. NS 레코드를 쿼리하여 얻은 해당 이름 서버는 해당 서버에 다른 특정 레코드와 일치하지 않는지 확인합니다.

이 모든 것이 nslookup / windows보다 Linux 및 dig에서 훨씬 우수하고 안정적으로 작동합니다.


0

쉬운 방법은 온라인 도메인 도구를 사용하는 것입니다. 내가 가장 좋아하는 것은 Domain Tools (이전의 whois.sc)입니다. 그래도 충돌하는 DNS 레코드를 해결할 수 있는지 확실하지 않습니다. 예를 들어 stackoverflow.com의 DNS 서버는

  NS51.DOMAINCONTROL.COM
  NS52.DOMAINCONTROL.COM

0

일부 도메인의 경우 위의 답변이 작동하지 않는 것으로 나타났습니다. 내가 찾은 가장 빠른 방법은 먼저 NS 레코드를 확인하는 것입니다. 존재하지 않는 경우 SOA 레코드를 확인하십시오. 존재하지 않는 경우 dig를 사용하여 이름을 재귀 적으로 확인하고 반환 된 마지막 NS 레코드를 가져옵니다. 이에 맞는 예는analyticsdcs.ccs.mcafee.com.

  1. NS 레코드 확인

host -t NS analyticsdcs.ccs.mcafee.com.

  1. NS를 찾을 수 없으면 SOA 레코드를 확인하십시오.

host -t SOA analyticsdcs.ccs.mcafee.com.

  1. NS 또는 SOA가 아닌 경우 전체 재귀를 수행하고 마지막으로 반환 된 NS를 가져옵니다.

dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1

  1. 이름 서버가 작동하는지 테스트

host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.

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