DNS-Abfragen mit JNDI

Für unser Java-Projekt benötigen wir genau eine DNS-Abfrage. In der Vergangenheit haben wir dazu dnsjava verwendet, aber eigentlich ist es natürlich Overkill, für eine einzige Abfrage eine komplette zusätzliche Library mitzuschleppen. Deshalb war ich froh zu entdecken, dass DNS mittlerweile mit Java-Bordmitteln funktioniert. Es ist ein bisschen versteckt, weil es Teil der JNDI-Extension ist, die für Verzeichnisdienste aller Art benutzt werden kann.

Wenn man aber erstmal weiß, dass damit auch DNS gemeint ist, geht der Rest ziemlich einfach, wenn man davon absieht, dass man sich das eigentliche Ergebnis mit einer Regular Expression extrahieren muss:

DirContext ictx = new InitialDirContext();
Attribute myAttr = ictx.getAttributes("dns:/_kerberos._udp.ad.uni-koeln.de",
        new String[] {"SRV"}).get("SRV");
NamingEnumeration<?> myEnum = myAttr.getAll();
Pattern p = Pattern.compile(".*\s(\p{Alpha}.*$)");
Matcher m;
while (myEnum.hasMoreElements()) {
      m = p.matcher(myEnum.next().toString());
      if (m.find()) {
   	  myKRB_Servers.append(m.group(1)+":");
      }
}
System.setProperty("java.security.krb5.kdc", myKRB_Servers.toString());

Wir setzen auf diese Weise die Adressen der jeweils aktuellen Kerberos5-Server im Active Directory der Uni. Möglicherweise geht das noch eleganter, aber schon so ist es eine deutliche Verbesserung gegenüber dem vorigen Konstrukt.

5 Gedanken zu „DNS-Abfragen mit JNDI“

  1. Das klingt interessant. Ich benutze recht häufig die Dienste von Stepload. Offenbar sind die vor kurzem mit ihrem Mailserver umgezogen, weswegen die externe IP-Adresse gewechselt hat. Eignet sich das JNDI Tool auch um in solch einem Fall den DNS-Record neu zu setzen?

  2. Hallo,

    ich bin nicht sicher, ob ich die Frage richtig verstehe. JNDI ist kein Tool, sondern ein Java-API, das man in selbstgeschriebene Java-Programm integrieren kann. Wenn man das tut, kann man damit DNS-Abfragen jeder erdenklichen Art durchführen. Hilft das?

  3. Das mit dem JNDI ist mir aber auch relativ neu. Bisher habe ich auch immer die komplette Library mitbenutzt *lol*. Werde aber in Zukunft mal die einzelne Abfrage ausprobieren. Danke für den Tipp !!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert