DNS64
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
DNS64 kann mithilfe von NAT64 genutzt werden, um reinen IPv6-Rechnern Zugang zu reinen IPv4-Rechnern zu geben.
Wenn ein Client einen Host unter example.org
erreichen will, fragt er den DNS-Server nach dem A(IPv4)- und AAAA(IPv6)-Record. Rechner, welche nur über IPv4 zu erreichen sind, haben keinen AAAA-Record. Bei DNS64 wird ein solcher künstlich erzeugt und dem Client als Antwort gegeben. Der Traffic wird über ein NAT64-Gateway geroutet, der Router lauscht auf dem Traffic des NAT64-Präfixes.
Konfiguration in BIND¶
Die Datei /etc/bind/named.conf.options muss erweitert werden.
dns64 64:ff9b::/96 { clients { any; }; recursive-only yes; mapped { !10/8; any; }; //10.0.0.0/8 wird nicht übersetzt, alles andere schon. };
Mit clients kann der Adressbereich eingeschränkt werden, der DNS64-Antworten erhält. Diesen sollte man auf die eigenen IPv4- und IPv6-Netze einschränken. Hier können ganz normal ACLs genutzt werden. recursive-only gibt an, dass nur bei rekursiven Antworten (Anfragen vom Client sind immer rekursiv) DNS64 genutzt werden soll. So wird verhindert, dass der eigene autoritative DNS-Server DNS64-AAAA-Records für Hostnamen ohne AAAA-Record schickt, wenn ihn andere DNS-Server fragen. mapped gibt an, welche IPv4-Adressen übersetzt werden sollen. Hier muss am Ende alles erlaubt sein und unerwünschte Bereiche (auch ACLs) können mit einem Ausrufezeichen am Anfang ausgenommen werden.
Das verwendete Präfix kann ebenso angepasst werden.
Test¶
Testen kann man den Server mit dig. Hierbei sollte man darauf achten, dass dies nur aus den eigenen Netzen funktioniert und nicht aus dem kompletten Internet. Bei Domainnamen, die einen AAAA-Record haben, darf kein DNS64-AAAA-Record generiert werden.
Domainname ohne AAAA-Record
m@test:~$ dig ipv4.l.google.com @::1 aaaa ; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> ipv4.l.google.com @::1 aaaa ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17238 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 2905631d4a4689a80100000062f0d5dbf555ea0fdc1426e8 (good) ;; QUESTION SECTION: ;ipv4.l.google.com. IN AAAA ;; ANSWER SECTION: ipv4.l.google.com. 43 IN AAAA 64:ff9b::d83a:d0ce ;;Präfix inkl. gemappter IPv4-Adresse ;; Query time: 0 msec ;; SERVER: ::1#53(::1) (UDP) ;; WHEN: Mon Aug 08 09:22:35 UTC 2022 ;; MSG SIZE rcvd: 102 m@test:~$
Domainname mit AAAA-Record
m@test:~$ dig ubuntuusers.de @::1 aaaa ; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> ubuntuusers.de @::1 aaaa ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40821 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: c4580b1634cba5bc0100000062f0d68cdde1ab662751001c (good) ;; QUESTION SECTION: ;ubuntuusers.de. IN AAAA ;; ANSWER SECTION: ubuntuusers.de. 86400 IN AAAA 2001:4dd0:f100:0:dead:beef:cafe:1 ;; nur der AAAA-Record vom autoritativen Server, kein DNS64 ;; Query time: 543 msec ;; SERVER: ::1#53(::1) (UDP) ;; WHEN: Mon Aug 08 09:25:32 UTC 2022 ;; MSG SIZE rcvd: 99 m@test:~$