하나의 IP에 연결된 DNS의 모든 호스트 이름을 찾는 방법은 무엇입니까?


24

하나의 컴퓨터에 여러 호스트가 구성되어있는 경우 ( la apache의 VirtualHosts) IP에서 조회를 수행하고 해당 도메인에 도달하도록 구성된 모든 도메인을 어떻게 찾을 수 있습니까?

예를 들어 서버에 연결된 여러 웹 및 이메일 도메인이 있습니다. 해당 도메인을 가리키는 모든 도메인을 어떻게 찾을 수 있습니까?

가능합니까?

내가 소유 한 모든 도메인에 대한 DNS A 항목이 있으며 일부 친구의 도메인이 내 서버를 가리킴을 알고 있습니다. 나는 사람 있다면 내가보고 싶은 것은 하지 않습니다 알고에 대한도가 가리키고있다. (또는 다른 사람이 자신의 도메인을 다른 곳으로 재 지정한 경우 서버에서 '이전'웹 사이트를 삭제할 수 있습니다.)

답변:


30

아니, 아니 이는 정방향 및 역방향 DNS 조회의 차이점에 관한 것입니다.

정방향 조회는 표준 이름-> IP 조회입니다. 따라서 모든 이름을 미리 알아야합니다.

원하는 것은 IP-> 이름 조회를 수행하는 것이지만 Apache 구성 및 DNS에서 A 레코드 (또는 CNAME 또는 기타)로 적용 한 모든 이름을 가져옵니다.

역 조회 (예 : dig @nameserver $ ip -x)를 수행하면 해당 넷 블록을 소유 한 사람들 (ISP 일 수 있음)이 해당 IP에 부여한 호스트 이름을 반환합니다. 45-23-45-231.big-isp.com과 같은 이름을 가질 수 있습니다. 그리고 결정적으로, 하나의 역 기록 만 있지만 잠재적으로 많은 기록이 있습니다.

나는 그것이 질문으로 귀결된다고 가정합니다-리버스 존은 포워드 존의 레코드에 대해 어떻게 알 수 있습니까? 대부분의 설정에서 고객은 순방향 영역을 사용하여 변경할 수 있지만 역방향 영역은 넷 블록 소유자가 유지 관리합니다. 두 시스템은 작동하기 위해 서로에 대해 아무것도 알 필요가 없습니다.


2
나에게 바로 들린다.
einstiien

부끄러운-그것은 또한 매우 유용 할 것입니다
워렌

12

일반적으로 해당 IP 주소를 가리키는 레코드 PTR가 많더라도 각 IP 주소에 대해 하나의 레코드 만 있기 때문에 DNS 프로토콜 자체 로는이를 수행 할 수 없습니다 A.

그러나 일부 회사 (예 : http://www.ip-adress.com/ )는 DNS 조회의 전체로드 결과를 저장 한 다음 자체적으로 역방향 쿼리를 제공하여 사용자가 수행 한 작업이 포함 된 데이터베이스를 컴파일했습니다. 데이터베이스.

이러한 데이터베이스는 결정적인 것은 아니지만 해당 IP를 가리킬 있는 모든 가능한 도메인에 대해 알 수는 없습니다 . 실제로 찾은 도메인 이름에 대한 DNS 세부 정보 만 기록 할 수 있습니다.


그게 내가 무서웠 어 .. darn :-|
warren

1
아직까지 모든 TLD를 처리하는 그러한 조회 서비스를 접하지 않은 헤즈 업. 실제로 내가 시도한 모든 .com 도메인과 동일한 서버에서 호스팅되는 경우에도 .com.au 도메인을 나열하지 못했습니다.
John Gardeniers

1
홀수-이와 같은 서비스가 사이트의 TLD를 관리해야 할 이유가 없습니다. 내가 말했듯이 데이터베이스는 사람들이 묻는 사이트에 대해서만 알고 있습니다. 사람들이 .com.au 도메인에 관심이 없다고 생각합니다. ;-)
Alnitak

4

이를 수행 할 수있는 유일한 방법은 검사하려는 도메인 이름의 컨텐츠 데이터를 보유하는 것입니다.

이 컨텐츠를 사용하면 재귀 스크립트를 개발하여 IP를 기준으로 호스트 이름을 검색 할 수 있습니다 (결국 CNAME으로 인해 재귀 적으로 확인).

일부 도메인 이름 파트너의 데이터를 얻으려면 dig -t axfr을 사용하여 보조 도메인을 요청하고 DATA를 가져 오십시오.


3

나는 당신이 이것을 잘못된 방향에서오고 있다고 생각합니다. a) 가능한 모든 도메인 이름에 대해 존재하는 모든 DNS 서버를 쿼리 한 다음 결과를 저장하거나 b) 관심있는 DNS 서버에서 영역 전송을받는 것 외에는 DNS로이를 수행 할 수있는 방법이 없습니다.

아파치 이름 기반 가상 호스트를 실행하고 있다면 이미 서버에 도달 할 도메인 목록이있다. 기본 가상 호스트 외에 이름 기반 가상 호스트는 이름 만 응답합니다. 따라서 내 상자에서 foobar.com을 가리키고 foobar.com 가상 호스트가 없으면 기본적으로 제공되거나 응답되지 않습니다 (기본 서버가없는 경우).

Apache에는 매우 강력한 로깅 기능이 있습니다. 원하는 요청 라인으로 사용자 정의 로그 형식을 정의하는 것은 문제가되지 않습니다. 또한 항상 리퍼러 필드가 있습니다.

반면에 메일은 약간 더 고통 스럽다. 내가 생각할 수있는 가장 좋은 점은 서버 로그에서 가능한 것을 선택하고 정말로 알아야 할 경우 SMTP에 대한 패킷 캡처를 설정하는 것입니다.


apache vhosts를 사용하면 특정 도메인에 전달하는 경로 만 알 수 있습니다 ... 구성 된 모든 도메인이 아닙니다 .mynewdomain.tld를 내 서버로 지정하면 vhost 항목이 없으므로 apache는 기본 webroot
warren

1
로그를 통한 선택은 작동 할 수 있지만 서버 자체에서 로그를 수행하는 방법으로 생각하지 않았습니다.
warren

LogFormat %{Host}i hostnamelog그런 다음 CustomLog /path/to/log hostnamelog기본 VHost에서 "실제"VHost와 분리되어 있는지 확인하십시오. 그런 다음 때때로 sort /path/to/log | uniq -c | sort -n당신을 때리는 것에 대한 통찰력을 얻습니다.
BMDan

2

RobTex를 확인해야 합니다. 최고의 웹 디자인은 아니지만 매우 유용합니다! IP와 관련된 모든 DNS를 찾을 수 있습니다.

물론 Alnitak이 설명했듯이

DNS 프로토콜 자체로는 할 수 없습니다

즉,이 웹 사이트는 대부분의 DNS / IP 서버로 구성된 방대한 데이터베이스 일뿐입니다. 꽤 효율적이지만 100 % 완전하지는 않습니다.


링크가 끊어 졌거나 SSL이 매우 나쁜 것 같습니다
Adam Nofsinger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.