서버의 CNAME에 대한 DNS 쿼리


답변:


6

환경을 지정하지 않았지만 Unix를 사용하는 경우 발굴과 grep의 조합이 작동해야한다고 생각합니다. ns.example.com이름 서버의 호스트 이름이어야하고 호스트 example.com가 속한 도메인이며 HOST는 모든 CNAME 레코드를 찾으려는 호스트입니다. 이것은 실제로 grep 명령의 탭 문자이며 문자 그대로는 아닙니다 <TAB>(grep 문자열을 조정해야 할 수도 있습니다).

또한 영역 전송을 허용하도록 네임 서버를 구성해야하며, 특정 영역은 구현에 따라 다릅니다.

dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'

또는 Windows를 사용하는 경우 nslookup을 사용할 수 있습니다 .

C:\> nslookup
> name ns.example.com
> ls -a example.com FILE

이것은 "알고 example.com있는 ns.example.com" 도메인에 대한 모든 레코드 를 FILE에 출력해야합니다 . 그런 다음 해당 CNAMES를 찾기 위해 텍스트 파일을 정렬하려는 도구를 사용할 수 있습니다.

또는이 테스트되지 않은 (그러나 올바르게 보이는 것처럼 보이는) 펄 스크립트 :

#!/usr/bin/perl

use Net::DNS;

($target, $zone) = @ARGV;

$res = new Net::DNS::Resolver;
foreach $rr ($res->axfr($zone)) {
     print $rr->name."\n" if (($rr->type eq "CNAME") && ($rr->rdatastr eq $target."."));
}

완전성을위한 몇 가지 사항 :

  • @womble이 언급했듯이 CNAME에 대한 PTR 레코드와 동등한 것은 없습니다. 호스트의 A 레코드에 해당하는 CNAMES에 대한 모든 영역 정보를 정렬하여 상황에 맞는 인식을 사용해야합니다.
  • 이것은 DNS 서버에서만 작동합니다 (영역 정보를 볼 수있는 권한이있는 경우). 다른 영역에 속하는 호스트의 CNAME을 "추적"할 방법이 없습니다.
  • @BillThor가 말했듯이 CNAMES 이외의 호스트 이름을 별칭으로 지정하는 다른 방법이 있습니다. 다시 말하지만, 상황에 대한 인식이 필요합니다.

질문이 업데이트되었습니다. Windows를 사용 중입니다.
PhilPursglove

4

DNS 구성에 액세스 할 수 있으면이 데이터를 발견하는 것이 쉽지 않습니다. 그러나 누구나 서버를 가리키는 CNAME을 가질 수 있습니다. 이를 추적 할 수 없습니다.

@wombie가 지적했듯이 CNAMES에 대한 역방향 조회를 수행 할 수 없습니다. CNAMES에 해당하는 PTR은 없으며 일부 레코드 만 존재할 가능성이있는 경우에도 마찬가지입니다. 임의의 도메인 선택을 빠르게 확인하면 PTR 레코드가 종종 A 레코드를 가리 키지 않음을 알 수 있습니다. 마찬가지로 임의 주소에 대한 PTR 레코드의 역방향 조회를 수행해도 해당 A 레코드를 찾지 못하는 경우가 많습니다.

편집 : CNAME이 시스템을 별칭으로 만드는 유일한 방법은 아닙니다. DNS를 사용하면 여러 A 레코드가 동일한 주소를 가리킬 수 있습니다. 기능적으로 이것은 CNAME을 추가하는 것과 동일하지만 방법이 다릅니다. 도메인 외부에서도 동일한 문제가 발생합니다. 다양한 A 레코드를 검색하려면 해당 시스템의 IP 주소를 검색하십시오.


3

DNS 프로토콜을 사용하면 이러한 "역방향"조회를 수행 할 수 없습니다. kce에서 제공하는 grep 제안을 사용하는 등 프로토콜을 벗어나야합니다.


2

파워 쉘 사용 :

Microsoft DNS 서버에서 기본 이름을 확인하십시오.

Get-WmiObject-네임 스페이스 'root \ MicrosoftDNS'-Class MicrosoftDNS_AType-필터 "IPAddress = 'xx.xx.xx.xx (IP)'"-ComputerName mydnsservername

Microsoft DNS 서버에서 해당 호스트의 모든 cname을 가져옵니다.

Get-WmiObject-네임 스페이스 'root \ MicrosoftDNS'-Class MicrosoftDNS_CNAMEType -Filter "primaryname = '첫 번째 쿼리의 기본 이름은 점으로 종료됩니다.'"-ComputerName mydnsservername | select ownername, primaryname


1
  1. 컴퓨터에서 제공하는 모든 영역을 찾으십시오.
  2. 각 영역에 dnscmd대해 영역 데이터를 내보내려면 사용 하십시오.
    dnscmd a.ns.example.com / zoneexport zone.example.com some-filename-for-this-zone
  3. 내 보낸 파일 CNAME에서 대상 도메인 이름을 가리키는 리소스 레코드를 검색하십시오 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.