NAPTR Resource Record

Mit NAPTR (Naming Authority Pointer) Resource Records werden DNS-Namen Adressen von Servern und weitere Informationen zugeordnet.

Hintergrund

Traditionell werden über den DNS-Dienst Namen in IP-Adressen aufgelöst. Man sendet einen Namen zu einem DNS-Server und erhält eine IP-Adresse zurück (hinter der sich dann meist ein Server verbirgt). Dieses einfache und bewährte Verfahren ist heute in vielen Fällen unzureichend, da die Anfragenden oft weitere Information benötigen.

NAPTR-Records liefern diese zusätzlichen Informationen auf sehr flexible Art und Weise. Unter anderem wird das Protokoll angegeben, das der Server verwendet. Über die Gewichtung kann, falls mehrere NAPTR-Records zu einem Namen existieren, eine Priorisierung festgelegt werden. Außerdem kann, falls mehrere NAPTR-Records gleicher Priorität zu einem Namen existieren, per Präferenz eine Lastverteilung erreicht werden.

Der NAPTR-Record-Typ kann damit als eine Erweiterung des klassischen A-Records (oder auch SRV-Records) aufgefasst werden.

Aufbau

Die Struktur von NAPTR-Records ist kompliziert, da eine Vielzahl von Fällen abgedeckt werden muss. Eine Hauptschwierigkeit besteht darin, dass oft nicht direkt ein Server-Name zurückgeliefert wird, sondern ein Regulärer Ausdruck, der zunächst aufgelöst werden muss.

Einfaches Beispiel eines NAPTR-Records (ohne regulären Ausdruck):

  dienst.example.com.  IN  NAPTR  100  10  "A"  ""  ""  prodserver.example.com.

Links steht hier ein DNS-Name und ganz rechts ein Verweis auf den Namen eines Servers, der den gewünschten Dienst bereitstellt. Das "A" bedeutet: Der ganz rechts stehende Ausdruck "prodserver.example.com" ist ein A-Record. Um die IP-Adresse zu erhalten, ist damit noch ein weiterer Schritt erforderlich: Dieser A-Record muss aufgelöst werden (einige Name-Server wie BIND erledigen das aber selbständig und liefern die IP-Adresse in der Additional-Section mit).

DNS-Name
Aufzulösender Name (auf den ggf. der reguläre Ausdruck angewendet wird)
IN
Internet
NAPTR
Naming Authority Pointer (Record-Typ)
Priorität
Einträge mit niedrigeren Nummern müssen zuerst verwendet werden (vgl. MX-Priorität)
Präferenz
Einträge mit niedrigeren Nummern sollen stärker gewichtet werden (Gewichtung zwischen zwei Einträgen mit gleicher Priorität)
Flag
Definiert den Record-Typ, der zurückgeliefert wird
Dienst
gibt den Dienst oder das Protokoll an, den/das der Server bereitstellt
Regulärer Ausdruck
Dieser wird auf den DNS-Namen angewandt
Ersetzung
Zeichenkette, die vom regulären Ausdruck verwendet werden kann, oder "."

Zurzeit sind folgende Flags definiert:

  • A – das Ergebnis ist ein A-Record
  • S – das Ergebnis ist ein SRV-Record
  • U – das Ergebnis ist ein URI
  • leer – das Ergebnis ist ein NAPTR-Record.

Um die IP-Adresse des gesuchten Servers zu erhalten, muss also in jedem Fall mindestens eine weitere DNS-Anfrage gestellt oder eine URL aufgelöst werden. Bei leerem Flag ist eine weitere NAPTR-Anfrage erforderlich. Man spricht in diesem Fall von einer Verkettung.

Beispiel mit regulärem Ausdruck

Das oben aufgeführte Beispiel wird durch Einbeziehung eines regulären Ausdrucks realisiert:

  dienst.example.com.  IN  NAPTR  100  10  "A"  ""  "!^.*$!prodserver.example.com!".

Der reguläre Ausdruck entspricht einer Posix Extended Regular Expression.[1] Das erste im regulären Ausdruck vorkommende Zeichen (hier "!") dient als Begrenzer. Es ist sinnvoll als Begrenzer z. B. das "!" anstelle des gewöhnlich genutzten Begrenzers "/" zu wählen, da URLs häufig bereits "/" beinhalten und der reguläre Ausdruck so einfacher zu lesen ist. Im ersten von den Begrenzern definierten Feld (^.*$) befinden sich Informationen, die definieren, welche Teile des Eingangsstrings (dienst.example.com.) durch den rechts vom Begrenzer stehenden String (prodserver.example.com) ersetzt werden sollen. "^.*$" bedeutet: Es soll alles ersetzt werden.

Weblinks

  • M. Mealling, R. Daniel: RFC2915 – The Naming Authority Pointer (NAPTR) DNS Resource Record. September 2000 (englisch).

Einzelnachweise

  1. https://www.gs1.org/sites/default/files/docs/epc/ons_2_0_1-standard-20130131.pdf