2009-06-16 1 views
1

현재, 아래의 코드를 사용하여 주어진 IPAddress의 DNS 이름을 얻습니다. 네트워크의 각 IPAddress에 대해 가져 오는 대신, DNS 서버에서 모든 DNS 항목 (IPAddress-HostName 매핑)을 한 번에 가져 오려고합니다. 가능한가? 그렇다면 어떻게해야합니까?Java 응용 프로그램에서 모든 DNS 항목을 가져 오는 방법은 무엇입니까?

InetAddress addr = InetAddress.getByName(address); 
dnsname = addr.getCanonicalHostName().trim(); 
+0

DNS 서버 설정 방법, 그것은 또는 가능하지 않을 수도 있습니다에 따라. DNS AXFR 요청이 있습니다. – Stobor

+0

"네트워크의 각 IPAddress"를 정의하는 방법은 무엇입니까? 정말로 존 전송을 원하십니까? –

+0

영역 전송이 무엇인지 배웠습니다. 예 존 전송을 찾고 있습니다. – Jay

답변

2

공개 DNS 서버에서 보유하고있는 모든 데이터를 추출 할 방법이 없습니다. 모든 IP 주소를 하나씩 열거하는 것이 유일한 해결책입니다.

DNS 서버와 특별한 관계가있는 경우 (예 : 고용주가 관리하는 경우) DNS 관리자에게 전체 영역 (AXFR이라고하는 DNS 요청)을 전송할 수있는 권한을 요청할 수 있습니다. 그들은 귀하의 IP 주소를 인증하거나 귀하를 인증하기위한 TSIG 키를 제공 할 수 있습니다.

그런 다음 Java에서 영역 전송 (TSIG 인증 포함)을 수행하는 방법을 찾아야합니다. 이 키워드를 사용하여 some codedocumentation을 찾습니다. 사용 사례를 찾으려면 Google Code Search 또는 Krugle과 같은 코드 검색 엔진을 사용하십시오.

은 [DNS 전문가들은 아마도 "사용 영역 NSEC에 걸어"하지만 대부분의 DNS 영역이 NSEC로 서명되지 않은 비명을 것입니다.]

+0

링크를 제공해 주셔서 감사합니다. 초기 링크 읽기 및 일부 테스트 코드는이를 달성 할 수 있음을 보여줍니다. TSIG 키로 아직 시도하지 않았습니다. 내가 성공하면 여기에 올리겠습니다. – Jay