DNS Lookup

Status
Nicht offen für weitere Antworten.

forfaro

Mitglied
Hallo zusammen,
ich würde gerne mit Java einen DNS Lookup machen (an sich einen reversed Lookup), dazu habe ich jetzt mal als totaler Neuling in Sachen DNS gegoogelt und fand dnsjava, also habe ich mal flott die Lib geholt und das erste Beispiel unter http://www.xbill.org/dnsjava/dnsjava-current/examples.html gemacht.
Hier der Code dazu

Code:
package dnsconnector;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

import org.xbill.DNS.*;

public class Dnstest {

	
	
	public Dnstest() {
	}

	private static String testDns () {
		String teststring = "";
		try {
			InetAddress addr = Address.getByName("www.google.de");
			teststring = "Inet Address : " + addr.getHostAddress();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		
		return teststring;
	}

	public static void main(String[] args) throws IOException {
		
		System.err.println("Test : " + testDns());
	}

}

Leider funktioniert es nicht, er bekommt immer eine UnknownHostException. Ich rufe das Ding ganz simpel als Java Applikation im Eclipse auf. Ich vermute ja mal, das er keine Verbindung kriegt oder etwas in der Art. Kann mir jemand, der Erfahrung mit sowas hat, nen Tip geben, wie ich das bauen muss, das es klappt ?

Schon mal Danke und Gruß
Forfaro
 

Loep

Aktives Mitglied
Copy and Paste aus deinem Post in mein Eclipse und nach dem Ausführen sagt mir die Konsole:
Test : Inet Address : 209.85.135.147

Hast du ne Firewall und Java den Zugang zum Inet entzogen?
 
S

SlaterB

Gast
@Loeb:
hast du denn auch die Klasse Adress, anscheinend aus org.xbill.DNS.*;
?

andererseits sollte forfaro natürlich auch mal den 'normalen' Weg ausprobieren:
InetAddress addr = InetAddress.getByName("www.google.de");
teststring = "Inet Address : " + addr.getHostAddress();
System.out.println(teststring);

ganz ohne externe Library
 

Loep

Aktives Mitglied
Klar hab ich mir die dnsjava-2.0.6.jar geladen und daraus die Address Klasse genutzt. Genau wie forfaro halt.
 

forfaro

Mitglied
Schon mal danke fürs testen, sitze zwar im Firmennetzwerk, aber angeblich soll Firewall das durchlassen, muss ich noch mal Wörtchen mit den Admins reden. Aber es kann nich sein das ich noch irgendwo nen namespace oder sowas einstellen muss, oder ?

Gruß
Forfaro
 

forfaro

Mitglied
Oh man, blöder Fehler, hatte

InetAddress addr = Address.getByName("www.google.com");

anstatt

InetAddress addr = InetAddress.getByName("www.google.com");

geschrieben, mit dem zweiten klappts ohne Probleme :)

Also danke euch und alles ist grün,

Gruß
Forfaro
 

forfaro

Mitglied
So jetzt gibts doch noch ein Problem, mein Script DnsConnectorMain.jar ist fertig und funzt eigentlich auch, holt mir zu gegebener IP den hostname, nur kommt folgendes Ergebnis:

[mustermann@localhost ~]$ host 10.99.99.1
1.99.99.10.in-addr.arpa domain name pointer 4917712345678.
[mustermann@localhost ~]$ java -jar DnsConnectorMain.jar 10.99.99.1
Test : 10.99.99.1
[mustermann@localhost ~]$ host 209.85.135.147
147.135.85.209.in-addr.arpa domain name pointer mu-in-f147.google.com.
[mustermann@localhost ~]$ java -jar DnsConnectorMain.jar 209.85.135.147
Test : mu-in-f147.google.com

Also beim Aufruf der Google IP läuft alles richtig, beim internen Testsystem allerdings liefert er mir nich den Hostname, sondern stumpf die IP wieder zurück (laut Admin soll das richtig eingestellt sein und korrekt laufen).

Jemand eine Idee, was da falsch laufen könnte ?

Hier noch mal der Code der DNS Connector Klasse:

Code:
package dnsconnector;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

import org.xbill.DNS.*;

public class DnsConnector {

	
	
	public DnsConnector() {
	}

	public static String getDnsNameByIp (String ip) {
		String dnsname = "";
		try {
//			InetAddress addr = InetAddress.getByName("www.google.com");
			InetAddress addr = InetAddress.getByName(ip);
			dnsname = addr.getHostName();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		
		return dnsname;
	}

	public static void main(String[] args) throws IOException {
		if (args.length > 0 && args[0] != null) {
			// 209.85.135.147
			System.out.println("Test : " + getDnsNameByIp(args[0]));
		} else {
			System.out.println("Please give an IP as argument");
		}
	}

}

Schon mal danke und Gruß
vom Forfaro[/code]
 
T

tuxedo

Gast
Für den Fall dass du an einem Windows-PC sitzt kannst du mal folgendes ausprobieren:

START -> Ausführen -> "cmd" eingeben, OK -> "nslookup 10.99.99.1" und Eingaetaste drücken. Wenn da der korrekte Hostname rauskommt, stimmt was mit deinem Tool nicht. Kommt da auch nicht der richtige Hostname raus, darfst du deinen Admin nochmal anhauen. Dann hat er wohl was falsch gemacht oder dein System verwendet den falschen DNS.

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben