2009-06-16 2 views
1

Ab sofort verwende ich den folgenden Code, um den DNS-Namen der angegebenen IP-Adresse abzurufen. Anstatt es für jede IP-Adresse im Netzwerk abzurufen, möchte ich alle DNS-Einträge (IP-Adresse - HostName-Zuordnung) vom DNS-Server auf einmal abrufen. Ist es möglich? Wenn ja, wie?Wie alle DNS-Einträge von JAVA-Anwendung abrufen?

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

Je nachdem, wie der DNS-Server eingerichtet ist, kann es oder nicht möglich sein kann. Was Sie suchen, ist eine DNS AXFR-Anfrage. – Stobor

+0

Wie definieren Sie "jede IP-Adresse im Netzwerk"? Sind Sie wirklich auf der Suche nach einem Zonen-Transfer, oder was? –

+0

gelernt, was ist Zonentransfer. Ja, ich suche nach Zonenübertragung. – Jay

Antwort

2

Von einem öffentlichen DNS-Server gibt es keine Möglichkeit, alle Daten, die es enthält, herauszuholen. Das Aufzählen aller IP-Adressen einzeln ist die einzige Lösung.

Wenn Sie eine spezielle Beziehung mit dem DNS-Server haben (z. B. wird er von Ihrem Arbeitgeber verwaltet), können Sie beim DNS-Administrator das Recht beantragen, die gesamte Zone zu übertragen (die DNS-Anfrage AXFR). Sie können Ihre IP-Adresse autorisieren oder erhalten einen TSIG-Schlüssel, um sich zu authentifizieren.

Dann müssen Sie eine Möglichkeit finden, eine Zonenübertragung (möglicherweise mit TSIG-Authentifizierung) in Java durchzuführen. Unter Verwendung dieser Schlüsselwörter finde ich some code und documentation. Verwenden Sie eine Codesuchmaschine wie Google Code Search oder Krugle, um Anwendungsbeispiele zu finden.

[DNS-Experten wahrscheinlich schreien „Use Zone auf NSEC zu Fuß“, aber die meisten DNS-Zonen werden mit NSEC nicht unterzeichnet.]

+0

Danke für die Links. Das anfängliche Lesen von Links und einiger Testcodes zeigt, dass dies erreicht werden kann. Ich muss es noch mit TSIG-Schlüssel versuchen. Ich werde hier posten, sobald ich erfolgreich bin. – Jay