답변:
지정된 도메인 이름에 대한 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 .
출력이 끝나면 지정된 도메인의 백업 서버를 포함한 모든 권한이있는 서버가 나열됩니다.
dig
, 나에게는 사용하는 것처럼 보입니다 (아래 답변 참조)
nslookup -type=soa stackoverflow.com
리눅스 오늘 (2019 2 월)을, 권위있는 부분은 비어 있습니다.
귀하의 질문에 단수를 사용했지만 일반적으로 권위있는 이름 서버가 여러 개 있지만 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_soa
Liu & 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
여기에서 두 정식 이름 서버는 동일한 일련 번호를 갖습니다. 좋은.
www.pressero.com
다른 사이트의 CNAME 인 으로 정의 된 사이트 인 dig + short SOA는 CNAME 대상 만 반환합니다.
www.pressero.com
A 레코드 ( dig
지정하지 않으면 기본 레코드 유형)에 대해 생각했을 것입니다 . 그러나 필요한 경우 a tail -1
를 추가 하여 최종 결과를 검색하십시오.
dig +short SOA www.pressero.com
. 이것은 pressero.com
도메인 의 SOA 레코드가 아닌 CNAME 대상 만 반환합니다 . tail -1
문제를 도와주지 않습니다. dig +short SOA
한 줄만 방출합니다.
* nix에서 :
$ dig -t ns <domain name>
나는이 DNS 전파 도구 질문에 이런 종류의 답변을 설계합니다.
소스는 AGPLv3에 따라 릴리스됩니다.
(예, 인터페이스는 현재 기본입니다.)
"host"명령을 사용하여 도메인의 네임 서버를 찾을 수도 있습니다.
[davidp @ supernova : ~] $ 호스트 -t ns stackoverflow.com stackoverflow.com 이름 서버 ns51.domaincontrol.com. stackoverflow.com 이름 서버 ns52.domaincontrol.com.
항상 + trace 옵션을 추가하는 가장 좋은 방법은 다음과 같습니다.
dig SOA +trace stackoverflow.com
다른 공급자에서 호스팅되는 재귀 CNAME 과도 작동합니다. + 추적 추적은 + norecurse를 암시하므로 결과는 지정한 도메인에만 해당됩니다.
인터넷 검색 용어는 "정의 적"이 아니라 "권한"입니다.
리눅스 또는 Mac에서 당신은 명령을 사용할 수 있습니다 whois
, dig
, host
, nslookup
또는 여러 다른 사람을. nslookup
Windows에서도 작동 할 수 있습니다.
예를 들면 :
$ whois stackoverflow.com
[...]
Domain servers in listed order:
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
추가 크레딧에 관해서는 가능합니다.
그의 제안은 일반적으로 호스트 이름의 IP 주소 만 제공하므로 aryeh는 분명히 잘못되었습니다. 를 사용하는 경우 다음 dig
과 같이 NS 레코드를 찾아야합니다.
dig ns stackoverflow.com
이는 로컬 DNS 서버를 요청하여 캐시에있는 잘못되었거나 오래된 답변을 제공 할 수 있습니다.
한 번의 요청으로 도메인의 신뢰할 수있는 네임 서버 와 일반적인 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
후이즈 서비스를 사용할 수 있습니다. UNIX와 같은 운영 체제에서는 다음 명령을 실행합니다. 또는 웹 ( http://www.internic.net/whois.html) 에서이를 수행 할 수 있습니다 .
후이즈 stackoverflow.com
다음과 같은 응답이 나타납니다.
... 여기에서 텍스트가 제거되었습니다 ...
나열된 순서의 도메인 서버 : NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM
nslookup 또는 dig를 사용하여 지정된 도메인의 레코드에 대한 자세한 정보를 찾을 수 있습니다. 이것은 설명 된 충돌을 해결하는 데 도움이 될 수 있습니다.
불행히도 이러한 도구의 대부분은 실제 이름 서버 자체에서 제공 한 NS 레코드 만 반환합니다. 실제로 도메인을 담당하는 이름 서버를보다 정확하게 결정하려면 "whois"를 사용하고 여기에 나열된 도메인을 확인하거나 "dig [domain] NS @ [root name server]"를 사용하여 해당 도메인을 실행해야합니다. 이름 서버 목록을 얻을 때까지 재귀 적으로 ...
이름 서버 자체에서 제공되는 결과뿐만 아니라 신뢰할 수 있고 일관된 형식으로 결과를 얻기 위해 실행할 수있는 간단한 명령 행이 있었으면합니다. 나를 위해 이것의 목적은 내가 관리하는 약 330 개의 도메인 이름을 쿼리 할 수 있도록하여 각 도메인이 어떤 이름 서버를 가리키는 지 정확히 (등록자 설정에 따라) 결정할 수 있습니다.
"dig"또는 "host"또는 * nix에서 다른 것을 사용하는 명령을 아는 사람이 있습니까?
SOA 레코드는 모든 서버에 계층 구조를 넘어서서 도메인 소유자가 제어 할 수 없으며 도메인 소유자가 제어하는 하나의 신뢰할 수있는 이름 서버를 가리 킵니다.
반면, 권한 서버 자체의 SOA 레코드는 해당 도메인을 해결하는 데 반드시 필요하지는 않으며 가짜 정보 (또는 숨겨진 기본 또는 다른 제한된 서버)를 포함 할 수 있으며 권한 이름 서버를 결정하기 위해 의존해서는 안됩니다. 주어진 도메인에 대해
주어진 하위 도메인에 대한 안정적인 SOA 정보를 얻으려면 최상위 도메인 에 대해 권한이있는 서버를 쿼리해야 합니다.
(루트 이름 서버에서 TLD를 조회 할 수있는 권한이있는 서버에 대한 정보)
TLD 신뢰할 수있는 서버에서 SOA에 대한 신뢰할 수있는 정보가 있으면 다른 NS 레코드에 대해 기본 이름 서버 자체 (gTLD 이름 서버의 SOA 레코드에있는 것)를 쿼리 한 다음 모두 확인을 진행할 수 있습니다. NS 레코드를 쿼리하여 얻은 해당 이름 서버는 해당 서버에 다른 특정 레코드와 일치하지 않는지 확인합니다.
이 모든 것이 nslookup / windows보다 Linux 및 dig에서 훨씬 우수하고 안정적으로 작동합니다.
쉬운 방법은 온라인 도메인 도구를 사용하는 것입니다. 내가 가장 좋아하는 것은 Domain Tools (이전의 whois.sc)입니다. 그래도 충돌하는 DNS 레코드를 해결할 수 있는지 확실하지 않습니다. 예를 들어 stackoverflow.com의 DNS 서버는
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
일부 도메인의 경우 위의 답변이 작동하지 않는 것으로 나타났습니다. 내가 찾은 가장 빠른 방법은 먼저 NS 레코드를 확인하는 것입니다. 존재하지 않는 경우 SOA 레코드를 확인하십시오. 존재하지 않는 경우 dig를 사용하여 이름을 재귀 적으로 확인하고 반환 된 마지막 NS 레코드를 가져옵니다. 이에 맞는 예는analyticsdcs.ccs.mcafee.com.
host -t NS analyticsdcs.ccs.mcafee.com.
host -t SOA analyticsdcs.ccs.mcafee.com.
dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1
host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.