[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Router:] [:Router/Multifunktionsgerät:Router-Multifunktionsgerät] [:Terminal: Ein Terminal öffnen] [:Programme_starten: Starten von Programmen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] [#Links Präfix-Delegation] (engl. ''prefix delegation'') ist eine Methode zur Konfiguration eines Routers[1] für [:IPv6:]. Diese Methode funktioniert über [#Links DHCPv6]. Dabei gibt ein Router seine Autorität über einen IPv6-Adressbereich ab an einen anderen Router. Der delegierende Router wird in der Literatur gerne mit der Abkürzung DR (engl. ''delegating router'') und der anfragende Router als RR (engl. ''requesting router'') bezeichnet. Dafür benötigt der DR einen DHCPv6-Server und der RR einen DHCPv6-Client; beide Programme müssen die DHCPv6-Option IA_PD beherrschen. Die Internet-Provider (ISP, engl. ''internet service provider''] benutzen diese Methode zur Verteilung von Adressbereichen an ihre Kunden. Man kann diese Methode aber auch als Endkunde verwenden zur Konfiguration seiner eigenen Router, indem man den vom ISP zugeteilten Adressbereich aufteilt und einen Teilbereich an einen internen Router delegiert. Dies kann beispielsweise angewendet werden bei einem für die [:Internetverbindungsfreigabe:] eingerichteten Rechner. Der eigene Border-Router an der Grenze zwischen dem ISP und dem eigenen Verantwortungsbereich funktioniert zunächst in der Rolle eines RR und fragt über DHCPv6 einen IPv6-Adressbereich in Form eines IPv6-Präfix an. In diesem Artikel wird angenommen, dass ihm der Präfix `2001:0db8:caff:ee00::/56` zugeteilt wird. Die ISPs verwenden unterschiedliche Strategien bei der Zuteilung: Manche gönnen ihren Kunden z.B. ein `/48`-, andere ein `/56`-Präfix und einige auch nur ein einziges `/64`-Netzwerk. Wesentlich für die Weitergabe eines Teil-Präfixes ist natürlich die Verfügungsgewalt über ein größeren Adressbereich als ein einziges IPv6-Netzwerk. Wer vom ISP nur ein `/64`-Präfix erhält, kann per Präfix-Delegation nichts weitergeben. = Installation auf dem DR = Der DR muss über einen DHCPv6-Server verfügen, welcher die Option `IA_PD` beherrscht. Wer mit Ubuntu ein Router-Multifunktionsgerät[2] einrichten möchte, kann den in [:systemd/networkd:systemd-networkd] eingebauten DHCPv6-Server verwenden. systemd-networkd ist als Bestandteil von [:systemd:] bei jedem Ubuntu-System bereits installiert. Weitere DHCP-Server sind im Artikel [:Router/DHCP-Server:] aufgelistet; hier muss jedoch die Verfügbarkeit der Option IA_PD in der jeweiligen Version geprüft werden. = Installation auf dem RR = Der RR benötigt einen DHCPv6-Client, welcher die Option `IA_PD` beherrscht. Dies ist der Fall bei dem in systemd-networkd und dem in [:Dnsmasq:] eingebauten Client, jedoch bei Ubuntu 20.04 nicht beim internen Client des [:NetworkManager:NetworkManagers] (Version 1.22.10). Zur Installation von dnsmasq lies dessen Hauptartikel. = Einrichtung auf dem DR = Als DR kann man einen [:Hardware-Router:] wie beispielsweise eine Fritzbox verwenden. Wie man hier den DHCPv6-Server und speziell die Option IA_PD aktiviert, ist natürlich abhängig vom Hersteller und konkreten Modell. Bei einer Fritzbox kann man nach [https://avm.de/service/wissensdatenbank/dok/FRITZ-Box-7270/1239_IPv6-Subnetz-in-FRITZ-Box-einrichten/ dieser Anleitung] {de} vorgehen, welche auch noch bei aktuellen Modellen wie der 7490 funktioniert. Bei einem auf Ubuntu basierenden Router-Multifunktionsgerät mit den beiden Netzwerkschnittstellen `ISP` zum Internetprovider und `DMZ` als internem Netz kann man als root [3][4][5] mit systemd-networkd so konfigurieren: 1. Für die Schnittstelle `ISP` legt man z.B. eine Datei '''/etc/systemd/network/20-ISP.network''' an: \\ {{{# /etc/systemd/network/20-ISP.network [Match] Name = ISP [Network] Description = IPv6-Präfix vom ISP per DHCPv6-Client anfordern #IPForward = yes IPForward = ipv6 IPv6AcceptRA = yes DHCP = ipv6 #DHCP = yes }}} 1. Für die Schnittstelle `DMZ` (''demilitarized zone'') benötigt man z.B. eine Datei '''/etc/systemd/network/20-DR-DMZ.network''': \\ {{{# /etc/systemd/network/20-DR-DMZ.network [Match] Name = DMZ [Network] Description = IPv6-Präfix per DHCPv6-Server den Clients ankündigen IPv6PrefixDelegation = dhcpv6 [IPv6PrefixDelegation] Managed = true OtherInformation = true }}} * `IPForward = ipv6` schaltet die [:Router/Routing-Funktion:Routing-Funktionalität] für IPv6 ein. Alternativ kann man auch den Wert `yes` verwenden, um sie für beide IP-Protokolle einzuschalten. * `IPv6AcceptRA = yes` sorgt dafür, dass die vom vorgeschalteten Router ausgesendeten Konfigurationsdaten für IPv6 übernommen werden. * `DHCP = ipv6` bzw. alternativ `DHCP = yes` für beide IP-Protokolle ist nicht unbedingt erforderlich, da der DHCPv6-Client schon wegen `IPv6AcceptRA = yes` gestartet wird. * `IPv6PrefixDelegation = dhcpv6` schaltet die Weitergabe des per DHCP auf einer anderen erhaltenen Präfixes auf dieser Schnittstelle ein. Die Details hierfür müssen in einem weiteren Abschnitt `[IPv6PrefixDelegation]` konfiguriert werden. Alternativ kann man auch `IPv6PrefixDelegation = static` verwenden, dann wird der weiterzugebende Präfix nicht per DHCP gelernt, sondern man muss ihn in einem Abschnitt `[IPv6Prefix]` definieren. * Die Beispieldateien sind ggf. noch um Konfigurationsangaben für IPv4 zu ergänzen, wenn man einen Router für beide IP-Protokolle haben will. Weitere Details können den [:Manpage:Handbuchseiten] von systemd-networkd entnommen werden: {{{#!vorlage Befehl man systemd.network man systemd-networkd }}} = Einrichtung auf dem RR = Der dem Border-Router nachgeschaltete Router verfügt z.B. über die Schnittstellen `DMZ` zum Border-Router und `LAN` als internem Netz. == … per systemd-networkd == 1. Die Konfigurationsdatei für `DMZ` auf dem RR entspricht technisch genau der der Datei für `ISP` auf dem DR, man muss nur Name und Beschreibung anpassen: \\ {{{# /etc/systemd/network/20-RR-DMZ.network [Match] Name = DMZ [Network] Description = IPv6-Präfix vom Border-Router per DHCPv6-Client anfordern IPForward = ipv6 IPv6AcceptRA = yes DHCP = ipv6 }}} 1. Die Konfigurationsdatei für `LAN` entspricht technisch genau der der Datei für `DMZ` auf dem DR, auch hier muss man nur Name und Beschreibung anpassen. == … per NetworkManager == Bei der Verwendung von NetworkManager zur Konfiguration des Netzwerks mit Präfix-Delegation sind drei Teilaufgaben zu lösen: 1. Da der interne DHCPv6-Client des NetworkManager bei Ubuntu 20.04, vielleicht auch anderer Versionen, jedenfalls die Option `IA_PD` nicht beherrscht, muss man NetworkManager auf die [#Links Verwendung eines anderen DHCPv6-Client] um konfigurieren. Dieser Schritt 1 ist bei der Verwendung des Paketes '''network-manager''' in der Version `1.22.10-1ubuntu2.2` (ab 20.04.3) nicht mehr erforderlich. * Dazu erstellt man als `root` im Verzeichnis '''/etc/NetworkManager/conf.d/''' eine Datei '''dhcpv6-client.conf''' mit folgendem Inhalt[3][4][5]: \\ {{{# /etc/NetworkManager/conf.d/dhcpv6-client.conf [main] # dhcp=internal dhcp=systemd # dhcp=dnsmasq }}} * Der Wert `systemd` ist undokumentiert und funktioniert (nur?) bei NetworkManager Version 1.22 (Ubuntu 20.04); die Alternative `dnsmasq` funktioniert bei NetworkManager Versionen 1.20 und 1.22. Die bei den verschiedenen Ubuntu-Versionen verwendeten Versionen des NetworkManager haben unterschiedliche Voreinstellungen bzgl. des DHCP-Clients, und die Clients haben auch versionsabhängig unterschiedliche Fähigkeiten; deshalb führen bei anderen Versionen des NetworkManagers möglicherweise die anderen Optionen zum Erfolg. * Die Datei muss `root` gehören und nur `root` darf sie beschreiben dürfen. * NetworkManager neu starten. 1. Das Verbindungsprofil für die Schnittstelle `DMZ` und 1. ebenso das Verbindungsprofil für die Schnittstelle `LAN` muss im Abschnitt `[ipv6]` mit der Option `method=shared` konfiguriert werden. Über GUI-Werkzeuge ist dies als Einstellung ''„Gemeinsam mit anderen Rechnern“'' möglich. Dieser Abschnitt ist insbesondere bei der Einrichtung einer [:Internetverbindungsfreigabe/ICS_mit_NetworkManager:Internetverbindungsfreigabe] hilfreich. = Links = * [wikipedia_en:Prefix_delegation:Prefix Delegation] * [https://datatracker.ietf.org/doc/html/rfc8415 RFC 8415] {en} – Internet-Standard zu DHCPv6 * [https://datatracker.ietf.org/doc/html/rfc3633 RFC 3633] {en} – Ursprüngliche Spezifikation der Präfix-Delegation, veraltet wegen RFC 8415 * [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/375 Support IPv6 Prefix Delegation / NetworkManager] {en} – Für IPv6 Präfix-Delegation beim NetworkManager anderen DHCPv6-Client benutzen. #tag: Netzwerk, Internet, System, Router, IPv6