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. 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: RFC – The Naming Authority Pointer (NAPTR) DNS Resource Record. September 2000 (englisch).