내부 DNS 항목을 쿼리하여 특정 서버를 가리키는 모든 CNAME 항목을 검색하는 방법이 있습니까?
편집 : 우리는 Windows 2003 환경입니다.
답변
환경을 지정하지 않았지만 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 이외의 호스트 이름을 별칭으로 지정하는 다른 방법이 있습니다. 다시 말하지만, 상황에 대한 인식이 필요합니다.
답변
DNS 구성에 액세스 할 수 있으면이 데이터를 발견하는 것이 쉽지 않습니다. 그러나 누구나 서버를 가리키는 CNAME을 가질 수 있습니다. 이를 추적 할 수 없습니다.
@wombie가 지적했듯이 CNAMES에 대한 역방향 조회를 수행 할 수 없습니다. CNAMES에 해당하는 PTR은 없으며 일부 레코드 만 존재할 가능성이있는 경우에도 마찬가지입니다. 임의의 도메인 선택을 빠르게 확인하면 PTR 레코드가 종종 A 레코드를 가리 키지 않음을 알 수 있습니다. 마찬가지로 임의 주소에 대한 PTR 레코드의 역방향 조회를 수행해도 해당 A 레코드를 찾지 못하는 경우가 많습니다.
편집 : CNAME이 시스템을 별칭으로 만드는 유일한 방법은 아닙니다. DNS를 사용하면 여러 A 레코드가 동일한 주소를 가리킬 수 있습니다. 기능적으로 이것은 CNAME을 추가하는 것과 동일하지만 방법이 다릅니다. 도메인 외부에서도 동일한 문제가 발생합니다. 다양한 A 레코드를 검색하려면 해당 시스템의 IP 주소를 검색하십시오.
답변
DNS 프로토콜을 사용하면 이러한 “역방향”조회를 수행 할 수 없습니다. kce에서 제공하는 grep 제안을 사용하는 등 프로토콜을 벗어나야합니다.
답변
파워 쉘 사용 :
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
답변
- 컴퓨터에서 제공하는 모든 영역을 찾으십시오.
- 각 영역에
dnscmd
대해 영역 데이터를 내보내려면 사용 하십시오.dnscmd a.ns.example.com / zoneexport zone.example.com some-filename-for-this-zone
- 내 보낸 파일
CNAME
에서 대상 도메인 이름을 가리키는 리소스 레코드를 검색하십시오 .