Dynamisches DNS-Update im lokalen IPv4/IPv6-Netzwerk
DNS64 NAT64
Falls die Systeme, die nur mit IPv6 eingebunden werden, auch Zugriff auf das IPv4-Internet bekommen sollen, ist auf dem Server lediglich ein weiterer Daemon zu installieren und die Datei /etc/named.conf zu ergänzen.
Die hierfür eingesetzten Techniken lauten DNS64 und NAT64.
DNS64 liefert zusätzlich zu der IPv4-Adresse eine IPv6-Adresse des eigenen Netzwerks, allerdings in einem anderen Subnetz, zurück. Damit können Anfragen wie zum Beispiel »liefere die Seite http://pro-linux.de/« des Browsers über die vom Nameserver zurückgegebene IPv6-Adresse und das NAT64-Verfahren erreicht werden.
$ host www.pro-linux.de www.pro-linux.de has address 78.46.83.99 www.pro-linux.de has IPv6 address 2001:db8:cafe:beef::4e2e:5363
Wie im Beispiel ersichlich, bekommt Pro-Linux eine IPv6-Adresse, die im eigenen IP-Bereich liegt. Der Browser kann damit als Ziel seiner Anfrage diese Adresse setzen, auf dem Server wird über NAT64 dafür gesorgt, dass die Daten den richtigen Weg nehmen.
Named ab Version 9.8 unterstützt DNS64 und eine kleine Ergänzung der Datei /etc/named.conf bewirkt das »Wunder«. Im Abschnitt option
ist nachstehendes einzutragen:
dns64 2001:db8:cafe:beef::/96 { clients { any; }; mapped { any; }; };
Das Adressenpräfix 2001:db8:cafe:beef::
ist natürlich anzupassen. Die IPv6-Adresse unseres lokalen Netzwerks lautet 2001:db8:cafe:dead::
, siehe /etc/radvd.conf bzw. /etc/named.conf. Das Subnetz ist in dem Fall dead
, die DNS64-Adressen sind im Subnetz beef
angesiedelt.
Bei manchen Distributionen wie z.B. Ubuntu 11.04 ist eine ältere Version von named als Paket vorhanden. In diesem Fall ist named in einer neueren Version herunterzuladen, zu kompilieren und installieren oder man verwendet totd als DNS-Proxy für DNS64.
NAT64 übernimmt die Übersetzung der per IPv6-Protokoll gesendeten Nachrichten in IPv4 und natürlich auch die Übersetzung von IPv4 nach IPv6 für die zurückgesendeten Antworten.
Als NAT64-Komponenten stehen entweder tayga oder ptrtd zu Verfügung. Tayga bedarf einiges an Konfiguration und ist nicht sehr leicht zu bedienen. Ptrtd ist dagegen sehr einfach einzurichten, eine einzige Option muss dem Programm übergeben werden. Der Aufruf ptrtd -p 2001:db8:cafe:beef::
reicht aus, um die Verbindung der IPv6-Systemen zum IPv4-Netz zu ermöglichen.
Mit ein wenig mehr Arbeit ist es auch möglich, tayga zu verwenden, zumal ptrtd laut dem Autor der Programme fehlerhaft sein soll.
Mit tayga wird ist eine Konfigurationsdatei anzulegen und einige Kommandos müssen abgesetzt werden. Die Dokumentation von tayga ist leider nicht so gut, so dass die gewünschten Ergebnisse erst nach einigen Versuchen erreicht wurden. Die Konfiguration des Server-Rechners sieht wie folgt aus:
Router 192.168.0.1 Internes LAN an eth0 2001:db8:cafe:dead::1 / 10.0.0.1 Externes LAN an wlan0 192.168.0.2
Die Konfiguration von eth0 erfolgt per Skript wie folgt:
# Setup internal LAN and access to the www EXT_IF=wlan0 EXT_IP=192.168.0.2 INT_IF=eth0 IPV4_PREFIX=10.0.0 IPV6_PREFIX=2001:db8:cafe:dead ip ad add $IVP4_PREFIX.1/24 dev $INT_IF ip route add $IVP4_PREFIX.0 via $IVP4_PREFIX.1 dev $INT_IF ip -6 addr add $IPV6_PREFIX::1/64 dev $INT_IF ip ro ad $IPV6_PREFIX::/64 via $IPV6_PREFIX::1 dev $INT_IF iptables -t nat -s $IPV4_PREFIX.0/24 -A SNAT --o $EXT_IF –-to $EXT_IP iptables -A FORWARD -i $INT_IF -j ACCEPT
Adressen und Routen sind statisch vergeben. Für die IPv6-Domain sind keine weitere Vorkehrung vonnöten, die Adressen sind alle öffentlich. In der IPv4-Welt sieht es aber anders aus, die Adressen müssen beim Transport von einen Netz zum anderen verändert werden (NAT, Network Address Translation). Die Zeile iptables -t nat ...
sorgt dafür. Die nächste Zeile dient der Überwindung der Firewall.
Die Initialisierung des lokalen Netzwerks wird durch die Initialisierung von tayga ergänzt:
IPV64=2001:db8:cafe:beef::/96 IPV4_TAYGA=10.1.255.0/24 tayga –mktun ip addr add $EXT_IP dev nat64 ip addr add IPV6_PREFIX::1 dev nat64 ip route add $IPV4_TAYGA/24 dev nat64 ip route add $IPV64::/96 dev nat64 iptables -t nat $IPV4_TAYGA -A SNAT --o $EXT_IF –-to $EXT_IP iptables -A FORWARD -i nat64 -j ACCEPT tayga
Ein Tap-Device wird aufgebaut und die Adresszuweisung bindet das Gerät mit der Netzwerkschnittstelle (Internes IPv6-Gerät/externes IPv4-Gerät). Routen zu den Schnittstellen von Tayga werden danach angelegt.
Die iptables-Zeilen sorgen dafür, dass eine Verbindung des IPv4-Subnetzes zur Außenwelt vorhanden ist.
Die Konfigurationsdatei von tayga sieht so aus:
tun-device nat64 ipv4-addr 10.1.255.1 prefix 2001:db8:cafe:beef::/96 dynamic-pool 10.1.255.0/24
Die Programm-interne IPv4-Adresse lautet 10.1.255.1 und befindet sich in einem nicht öffentlichen Subnetz. Die Programm-interne Adresse wird mittels des Präfix und der IPv4-Adresse gebildet (2001:db8:cafe:beef::10.1.255.1). Jedem Host, der sich im lokalen Netz anmeldet, wird eine IPv4 Adresse dynamisch zugeordnet. Dies ermöglicht es tayga, ICMP-Nachrichten, die für einen IPv6-Host bestimmt sind, richtig weiterzuleiten. Bei unserem lokalen Netz könnten wir ins gesamt 255 Clients anbinden, dies dürfte für den Heimgebrauch mehr als ausreichend sein.
Nach dem Start sollte nun von Rechnern, die nur IPv6 verwenden, Zugriff auf sämtliche IPv4-Adressen des Heimnetzwerks und der Außenwelt vorhanden sein.
Sollte eine Verbindung von einer IPv6- zu einer IPv4-Adresse nicht möglich sein, dürfte die Firewall des Servers verantwortlich sein. Dementsprechend ist die Kette der Filter anzupassen. Wie dies geschieht, ist abhängig vom Aufbau der Firewall. Die Dokumentation des eingesetzten Firewalls muss hier zu Rate gezogen werden.