Zusätzlich zu der im letzten Abschnitt vorgestellten Konfiguration von IPv4-Netzwerken ist es auch möglich, den fli4l-Router in vielerlei Hinsicht IPv6-tauglich zu machen. Dazu gehören Angaben über die IPv6-Adresse des Routers, die verwalteten IPv6-(Sub-)Netze sowie vordefinierte IPv6-Routen und Firewall-Regeln bzgl. IPv6-Paketen. IPv6 ist der Nachfolger des Internet-Protokolls IPv4. Hauptsächlich wurde es entwickelt, um die relativ kleine Menge von eindeutigen Internet-Adressen zu vergrößern: Während IPv4 ungefähr 232 Adressen unterstützt,3.2 sind es bei IPv6 bereits 2128 Adressen. Dadurch kann mit IPv6 jedem kommunizierenden Host eine eindeutige Adresse zugeordnet werden, und man ist nicht mehr auf Techniken wie NAT, PAT, Masquerading etc. angewiesen.
Neben diesem Aspekt spielten bei der Entwicklung des IPv6-Protokolls auch Themen wie Selbstkonfiguration und Sicherheit eine Rolle. Dies wird in späteren Abschnitten aufgegriffen.
Das größte Problem bei IPv6 ist dessen Verbreitung: Momentan wird IPv6 – verglichen mit IPv4 – nur sehr spärlich verwendet. Das liegt daran, dass IPv6 und IPv4 technisch nicht miteinander kompatibel sind und somit alle Software- und Hardware-Komponenten, die an der Paket-Weiterleitung im Internet beteiligt sind, für IPv6 nachgerüstet werden müssen. Auch bestimmte Dienste wie DNS (Domain Name System) müssen für IPv6 entsprechend aufgebohrt werden.
Hier tut sich also ein Teufelskreis auf: Die geringe Verbreitung von IPv6 bei Dienstanbietern im Internet führt zu Desinteresse seitens der Router-Hersteller, ihre Geräte mit IPv6-Funktionalität auszustatten, was wiederum dazu führt, dass Dienstanbieter die Umstellung auf IPv6 scheuen, weil sie fürchten, dass sich der Aufwand nicht lohnt. Erst langsam wendet sich das Blatt zugunsten von IPv6, nicht zuletzt unter dem immer stärkeren Druck der knappen Adressvorräte.3.3
Eine IPv6-Adresse besteht aus acht Zwei-Byte-Werten, die hexadezimal notiert werden:
Beispiel 1: 2001:db8:900:551:0:0:0:2
Beispiel 2: 0:0:0:0:0:0:0:1
(IPv6-Loopback-Adresse)
Um die Adressen etwas übersichtlicher zu gestalten, werden aufeinander folgende Nullen zusammengelegt, indem sie entfernt werden und lediglich zwei unmittelbar aufeinander folgende Doppelpunkte verbleiben. Die obigen Adressen können also auch so geschrieben werden:
Beispiel 1 (kompakt): 2001:db8:900:551::2
Beispiel 2 (kompakt): ::1
Eine solche Kürzung ist aber nur höchstens einmal erlaubt, um Mehrdeutigkeiten
zu vermeiden. Die Adresse 2001:0:0:1:2:0:0:3
kann also entweder zu
2001::1:2:0:0:3
oder zu 2001:0:0:1:2::3
verkürzt werden, nicht
aber zu 2001::1:2::3
, da jetzt unklar wäre, wie die vier Nullen jeweils
auf die zusammengezogenen Bereiche verteilt werden sollen.
Eine weitere Mehrdeutigkeit existiert, wenn eine IPv6-Adresse mit einem Port (TCP oder UDP) kombiniert werden soll: In diesem Fall darf man den Port nicht unmittelbar mit Doppelpunkt und Wert anschließen, weil der Doppelpunkt bereits innerhalb der Adresse verwendet wird und somit in manchen Fällen unklar wäre, ob die Port-Angabe nicht vielleicht doch eine Adress-Komponente darstellt. Deshalb muss in solchen Fällen die IPv6-Adresse in eckigen Klammern angegeben werden. Dies ist auch die Syntax, wie sie in URLs gefordert wird (etwa wenn im Web-Browser eine numerische IPv6-Adresse verwendet werden soll).
Beispiel 3: [2001:db8:900:551::2]:1234
Ohne die Verwendung von Klammern entsteht die Adresse
2001:db8:900:551::2:1234
, die unverkürzt der Adresse
2001:db8:900:551:0:0:2:1234
entspricht und somit keine Port-Angabe
besitzt.
Wenn Sie keinen Internet-Zugang mit nativer IPv6-Anbindung nutzen können, benötigen Sie einen IPv6-Tunnel zu einem IPv6-Anbieter. Dies wird durch das Paket “ipv6” ermöglicht. Bitte lesen Sie die Dokumentation des “ipv6”-Pakets für Details.
Die allgemeinen Einstellungen beinhalten zum einen die Aktivierung der IPv6-Unterstützung und zum anderen die optionale Vergabe einer IPv6-Adresse an den Router.
Standard-Einstellung:
OPT_IPV6='no'
Beispiel:
HOSTNAME_IP6='IPV6_NET_1_IPADDR'
In diesem Abschnitt wird die Konfiguration von einem oder mehreren IPv6-Subnetzen vorgestellt. Ein IPv6-Subnetz ist ein IPv6-Adressraum, der über ein so genanntes Präfix spezifiziert wird und an eine bestimmte Netzwerk-Schnittstelle gebunden ist. Weitere Einstellungen betreffen das Veröffentlichen des Präfixes und des DNS-Dienstes innerhalb des Subnetzes sowie einen optionalen Router-Namen innerhalb dieses Subnetzes.
Standard-Einstellung:
IPV6_NET_N='0'
Wichtig: Soll in dem Subnetz die zustandslose Selbstkonfiguration (siehe
den Abschnitt zu IPV6_NET_x_ADVERTISE weiter unten) aktiviert werden,
dann muss die Länge des Subnetz-Präfixes 64 Bit betragen!
Ist das Subnetz an einen Tunnel angeschlossen oder wird DHCPv6 zum Ermitteln eines Präfixes verwendet, dann darf hier nur der Teil der Router-Adresse angegeben werden, der nicht zum dem Tunnel zugeordneten bzw. vom DHCPv6-Server erhaltenen Subnetz-Präfixes gehört, da jenes Präfix und diese Adresse miteinander kombiniert werden! Siehe die Dokumentation der “ipv6”- (Tunnel) bzw. “dns_dhcp”-Pakete (DHCPv6) für Details.
Beispiele:
IPV6_NET_1='2001:db8:1743:42::1/64' # statisch: komplette Adresse IPV6_NET_2='{he}+0:0:0:42::1/64' # HE-Tunnel: partielle Adresse IPV6_NET_3='{dhcpv6}+0:0:0:43::1/64' # DHCPv6: partielle Adresse
Beispiel:
IPV6_NET_1_DEV='eth0'
Es ist empfehlenswert, diese Einstellung zu aktivieren, es sei denn, alle Adressen im Netz werden statisch vergeben oder ein anderer Router ist bereits dafür zuständig, das Subnetz-Präfix anzukündigen.
Wichtig: Die automatische Verteilung des Subnetzes funktioniert nur, wenn das
Subnetz ein /64-Netz ist, d.h. wenn die Länge des Subnetz-Präfixes 64 Bit
beträgt! Der Grund hierfür ist, dass die anderen Hosts im Netzwerk ihre
IPv6-Adresse aus dem Präfix und ihrer Host-MAC-Adresse berechnen und dies nicht
funktioniert, wenn der Host-Anteil nicht 64 Bit beträgt. Wenn die
Selbstkonfiguration fehlschlägt, sollte also geprüft werden, ob das
Subnetz-Präfix nicht vielleicht falsch angegeben worden ist (z.B. als /48).
Standard-Einstellung:
IPV6_NET_1_ADVERTISE='yes'
Standard-Einstellung:
IPV6_NET_1_ADVERTISE_DNS='no'
Beispiel:
IPV6_NET_1_NAME='fli4l-subnet1'