Inkrementeller Zonentransfer
# Inkrementeller Zonentransfer

Der inkrementelle Zonentransfer (vom englischen Incremental Zone Transfer, kurz IXFR genannt) ist ein Verfahren, das im Domain Name System des Internets zum Aktualisieren von Zonendateien verwendet wird. Es regelt die Kommunikation zwischen einem Master-Nameserver, der über die aktuellen Daten verfügt, und den Slave-Nameservern, deren Daten aktualisiert werden sollen.

## Ziele

Ziel des inkrementellen Zonentransfers ist es, die Menge der zu übertragenden Daten zu minimieren. Im Gegensatz zum vollständigen Zonentransfer Asynchronous Xfer Full Range (AXFR) werden deshalb nur die geänderten Sätze vom Master zu den Slaves kopiert. Die Einsparungen können besonders beim Notify-Verfahren erheblich sein. Bei einer Zone mit 10.000 Resource Records, die häufig geändert wird und von einem Master an vier Slaves verteilt werden muss, wäre der Aufwand, mit AXFR bei jeder Änderung die komplette Zone zu übertragen, unverhältnismäßig groß.

Um sicherzustellen, dass zwischen Master und Slaves keine Inkonsistenzen des Datenbestands entstehen, ist auf dem Master eine aufwändige Buchführung aller Änderungen erforderlich. Informationen über neue oder gelöschte RRs werden zunächst gesammelt und in einer Datei gesichert. Je nach DNS-Servertyp existieren dazu unterschiedliche Verfahren. Der freie DNS-Server BIND zum Beispiel speichert alle (dynamischen) Änderungen in sogenannten Journal-Files.

## Einschränkungen

Der inkrementelle Zonentransfer ist praktisch nur beim Notify-Verfahren sinnvoll. Beim Einsatz von BIND-Nameservern ist zu beachten, dass nur dynamische Updates einbezogen werden. Bei manuellen Änderungen eines Zonefiles muss nämlich ein BIND-Server zurückgesetzt werden, was einen kompletten Zonentransfer nach sich zieht.

## Weitere Details

Der IXFR wird vom Slave mit einer UDP-Message (DNS-Query-Typ 251) eingeleitet. Der Master sendet daraufhin eine Liste mit allen Änderungen. Ein Listenelement enthält dabei den SOA-RR und den geänderten RR (u. U. auch mehrere RRs). Bei einem gelöschten RR wird der SOA-RR vor dem Löschen und bei einem hinzugefügten RR der SOA nach dem Hinzufügen verwendet. Der Slave arbeitet die empfangene Liste ab und synchronisiert sich so mit dem Master.

Pro Änderung wird also ein Listenelement mit mindestens zwei RRs übertragen. Bei sehr vielen Änderungen kann ein inkrementeller Zonentransfer umfangreicher sein als ein vollständiger. Ein Master darf in derartigen Fällen auf einen IXFR-Request eines Slaves mit einem AXFR reagieren. In anderen Fällen heben sich Änderungen auf. So kann es etwa vorkommen, dass ein neuer Name hinzugefügt und wenig später wieder entfernt wird. Der Master kann dann diese irrelevanten Zwischenschritte bei der Übertragung der Liste weglassen.

