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
- RFC 2915 – The Naming Authority Pointer (NAPTR) DNS Resource Record