ubuntuusers.de

Präfix-Delegation

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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.

Präfix-Delegation (engl. prefix delegation) ist eine Methode zur Konfiguration eines Routers[1] für IPv6. Diese Methode funktioniert über 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 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 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 dieser Anleitung 🇩🇪 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
  2. 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 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 Handbuchseiten von systemd-networkd entnommen werden:

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
  2. 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 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.

  2. Das Verbindungsprofil für die Schnittstelle DMZ und

  3. 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 hilfreich.

Diese Revision wurde am 17. November 2021 15:44 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Internet, System, IPv6, Router