Login
Newsletter
Werbung

Do, 5. April 2012, 15:00

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.

Kommentare (Insgesamt: 3 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung