staging.inyokaproject.org

Mini-Howto: aktivieren von IPv6 auf dem heimischen Netzwerkserver

Status: Gelöst | Ubuntu-Version: Server 25.04 (Plucky Puffin)
Antworten |

Sonie

Avatar von Sonie

Anmeldungsdatum:
1. Mai 2012

Beiträge: Zähle...

Ich hoffe, es ist für jemand hilfreich, ich habe ein kleines Howto zusammengestellt, wie man IPv6 als DualStack konfiguriert. Mit dieser Config verteile ich auf meine VLANs im Netz auf jedes Netz eine separate PD mit der jeweiligen SLA-ID. Hier sind keine Firewall-Rules enthalten, dafür erstelle ich bei Gelegenheit eine anderes Mini-Howto.

Basiswissen (Sehr vereinfacht, sollte aber zum Einstieg helfen) eine fe80:: ist in IPv6 etwa das gleiche wie eine 127.0.0.x also nur local erreichbar. eine fd00:: ist eine nicht ins Internet routebare IP wie etwa 192.168.178.0 (Hallo Fritzbox) eine 2a00:: ist eine Internet erreichbare Addresse. IPv6 ist generell darauf ausgelegt, das ein Adapter mehrere IPs hat, diese haben eine Leastime und werden zur Laufzeit ausgetauscht.

Gegeben ist folgende Config: für den Internet Zugang eth0: Der Provider stellt folgendes bereit: - DHCP für IPv4 - SLAAC für Gateway IPv6 - PD für das LAN

cat /etc/network/interfaces

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
	address 192.168.172.10/24

auto eth2
iface eth2 inet static
	address 192.168.174.10/24

auto eth3
iface eth3 inet static
	address 192.168.173.10/24

auto eth4
iface eth4 inet static
	address 192.168.175.10/24

auto eth5
iface eth5 inet static
	address 192.168.178.10/24

iface eth1 inet6 static
	address fd00:0:0:172::10/64

iface eth2 inet6 static
	address fd00:0:0:174::10/64

iface eth3 inet6 static
	address fd00:0:0:173::10/64

iface eth4 inet6 static
	address fd00:0:0:175::10/64

iface eth5 inet6 static
	address fd00:0:0:178::10/64

iface eth0 inet6 auto

Das PD ist das Präfix der IPv6, hier ein /56. bei manchen Anbietern auch ein /60. Um das PD vom Provider zu erhalten ist eine geeignete Clientsoftware notwendig, ich fand hier wide-dhcpv6-client am einfachsten. Das PD über wide-dhcpv6-client holen

cat /etc/wide-dhcpv6/dhcp6c.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# /etc/wide-dhcpv6/dhcp6c.conf
# Standard DHCPv6-PD-Konfiguration

interface eth0 {
    send ia-pd 0;
    send rapid-commit;
    request domain-name-servers;
    script "/etc/wide-dhcpv6/dhcp6c-script";
};

id-assoc pd 0 {
    prefix-interface eth1 {
        sla-id 1;
        sla-len 8;
    };
    prefix-interface eth2 {
        sla-id 2;
        sla-len 8;
    };
    prefix-interface eth3 {
        sla-id 3;
        sla-len 8;
    };
    prefix-interface eth4 {
        sla-id 4;
        sla-len 8;
    };
    prefix-interface eth5 {
        sla-id 5;
        sla-len 8;
    };
};

für das Ipv6 ist auch ein Gateway notwendig, dies erhalten wir per SLAAC. Slaac im Netz verteilen über radvd
cat /etc/radvd.config

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
interface eth1 {
    AdvSendAdvert on;
    RDNSS fd00:0:0:172::10 { }; #AdGuard-IPv6
    AdvManagedFlag off;       # Kein DHCPv6 für Adressen
    AdvOtherConfigFlag off;   # Kein DHCPv6 für DNS/Options (falls nicht benötigt)
    
    # ULA (fd00:...)
    prefix fd00:0:0:172::/64 {
        AdvOnLink on;
        AdvAutonomous on;     # SLAAC aktivieren
        AdvValidLifetime 86400;
        AdvPreferredLifetime 14400;
    };
    
    # GUA (2a0d:... vom ISP)
    prefix ::/0 {            # Dynamisches Prefix von eth0
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;     # Router-IP als Gateway bekanntgeben
    };
};

interface eth2 {
    AdvSendAdvert on;
    RDNSS fd00:0:0:174::10 { }; #AdGuard-IPv6
    AdvManagedFlag off;       # Kein DHCPv6 für Adressen
    AdvOtherConfigFlag off;   # Kein DHCPv6 für DNS/Options (falls nicht benötigt)
    
    # ULA (fd00:...)
    prefix fd00:0:0:174::/64 {
        AdvOnLink on;
        AdvAutonomous on;     # SLAAC aktivieren
        AdvValidLifetime 86400;
        AdvPreferredLifetime 14400;
    };
    
    # GUA (2a0d:... vom ISP)
    prefix ::/0 {            # Dynamisches Prefix von eth0
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;     # Router-IP als Gateway bekanntgeben
    };
};

interface eth3 {
    AdvSendAdvert on;
    RDNSS fd00:0:0:173::10 { }; #AdGuard-IPv6
    AdvManagedFlag off;       # Kein DHCPv6 für Adressen
    AdvOtherConfigFlag off;   # Kein DHCPv6 für DNS/Options (falls nicht benötigt)
    
    # ULA (fd00:...)
    prefix fd00:0:0:173::/64 {
        AdvOnLink on;
        AdvAutonomous on;     # SLAAC aktivieren
        AdvValidLifetime 86400;
        AdvPreferredLifetime 14400;
    };
    
    # GUA (2a0d:... vom ISP)
    prefix ::/0 {            # Dynamisches Prefix von eth0
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;     # Router-IP als Gateway bekanntgeben
    };
};

interface eth4 {
    AdvSendAdvert on;
    RDNSS fd00:0:0:175::10 { }; #AdGuard-IPv6
    AdvManagedFlag off;       # Kein DHCPv6 für Adressen
    AdvOtherConfigFlag off;   # Kein DHCPv6 für DNS/Options (falls nicht benötigt)
    
    # ULA (fd00:...)
    prefix fd00:0:0:175::/64 {
        AdvOnLink on;
        AdvAutonomous on;     # SLAAC aktivieren
        AdvValidLifetime 86400;
        AdvPreferredLifetime 14400;
    };
    
    # GUA (2a0d:... vom ISP)
    prefix ::/0 {            # Dynamisches Prefix von eth0
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;     # Router-IP als Gateway bekanntgeben
    };
};
interface eth5 {
    AdvSendAdvert on;
    RDNSS fd00:0:0:178::10 { }; #AdGuard-IPv6
    AdvManagedFlag off;       # Kein DHCPv6 für Adressen
    AdvOtherConfigFlag off;   # Kein DHCPv6 für DNS/Options (falls nicht benötigt)
    
    # ULA (fd00:...)
    prefix fd00:0:0:178::/64 {
        AdvOnLink on;
        AdvAutonomous on;     # SLAAC aktivieren
        AdvValidLifetime 86400;
        AdvPreferredLifetime 14400;
    };
    
    # GUA (2a0d:... vom ISP)
    prefix ::/0 {            # Dynamisches Prefix von eth0
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;     # Router-IP als Gateway bekanntgeben
    };
};

Und dann noch ein paar kleine Anpassungen für die Kernel-Optionen. IPv6 Forward erlauben
cat /etc/sysctl.d/99-sysctl.conf

1
2
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.eth0.accept_ra=2

Moderiert von redknight:

Verschoben

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

Sonie schrieb:

Ich hoffe, es ist für jemand hilfreich, ich habe ein kleines Howto zusammengestellt, wie man IPv6 als DualStack konfiguriert.

Voraussetzungen dafür wären, dass es inhaltlich richtig ist und auf Ubuntu anwendbar ist.

[…] Basiswissen […] eine fe80:: ist in IPv6 etwa das gleiche wie eine 127.0.0.x also nur local erreichbar.

Das ist falsch. Richtig ist:

  • ::1/128 bei IPv6 entspricht funktional 127/8 bei IPv4. scope host

  • fe80::/64 bei IPv6 entspricht funktional 169.254/16 bei IPv4. scope link

eine fd00:: ist eine nicht ins Internet routebare IP wie etwa 192.168.178.0 (Hallo Fritzbox)

Das ist auch falsch, obwohl es besser wäre, wenn Deine falsche Aussage zutreffen würde. Richtig ist, dass fc00::/7 im Internet (leider) routebar sind. Man muss als Betreiber eines (Border-) Routers selbst absichern, dass man keine Pakete an solche Adressen sendet.

eine 2a00:: ist eine Internet erreichbare Addresse.

Ja, aber nicht die einzige. Momentan werden 2000::/3 dafür verwendet. Und es gibt auch noch für Multicast im Internet ff00::/8.

[…] cat /etc/network/interfaces

Ubuntu verwendet standardmäßig ifupdown nicht mehr, weshalb man am besten diese Datei löscht bzw. nicht anlegt.

[…]

Ubuntu ist übrigens standardmäßig so konfiguriert, dass für Arbeitsstationen wie für Server IPv6 out of the Box funktioniert, lediglich für Router muss man ggf selbst Hand anlegen.

Was hat ein Server (Deine Überschrift) mit einem Router zu tun (Dein Text)?

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18245

kB schrieb:

eine fd00:: ist eine nicht ins Internet routebare IP wie etwa 192.168.178.0 (Hallo Fritzbox)

Das ist auch falsch, obwohl es besser wäre, wenn Deine falsche Aussage zutreffen würde. Richtig ist, dass fc00::/7 im Internet (leider) routebar sind. Man muss als Betreiber eines (Border-) Routers selbst absichern, dass man keine Pakete an solche Adressen sendet.

fc00::/8 wird nicht im Internet geroutet, ist aber weltweit eindeutig, daher der Scope.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

DJKUhpisse schrieb:

[…] fc00::/8 wird nicht im Internet geroutet

fc00::/7 (beachte den feinen kleinen Unterschied!) hat den scope global und wird deshalb geroutet, sofern man es nicht selbst explizit verbietet – was man als Administrator des Routers tun muss, wenn man nicht geächtet werden will.

ist aber weltweit eindeutig

Das soll zwar so sein, ist es aber in der Praxis nicht. Was der Grund dafür ist, dass man (d.h. die Betreiber des Internets) im Internet entgegen der ursprünglichen Absicht nicht haben will und dem Administrator des Routers Arbeit macht.

Sonie

(Themenstarter)
Avatar von Sonie

Anmeldungsdatum:
1. Mai 2012

Beiträge: 135

kB schrieb:

Sonie schrieb:

Ich hoffe, es ist für jemand hilfreich, ich habe ein kleines Howto zusammengestellt, wie man IPv6 als DualStack konfiguriert.

Voraussetzungen dafür wären, dass es inhaltlich richtig ist und auf Ubuntu anwendbar ist.

[…] Basiswissen […] eine fe80:: ist in IPv6 etwa das gleiche wie eine 127.0.0.x also nur local erreichbar.

Das ist falsch. Richtig ist:

  • ::1/128 bei IPv6 entspricht funktional 127/8 bei IPv4. scope host

  • fe80::/64 bei IPv6 entspricht funktional 169.254/16 bei IPv4. scope link

eine fd00:: ist eine nicht ins Internet routebare IP wie etwa 192.168.178.0 (Hallo Fritzbox)

Das ist auch falsch, obwohl es besser wäre, wenn Deine falsche Aussage zutreffen würde. Richtig ist, dass fc00::/7 im Internet (leider) routebar sind. Man muss als Betreiber eines (Border-) Routers selbst absichern, dass man keine Pakete an solche Adressen sendet.

eine 2a00:: ist eine Internet erreichbare Addresse.

Ja, aber nicht die einzige. Momentan werden 2000::/3 dafür verwendet. Und es gibt auch noch für Multicast im Internet ff00::/8.

[…] cat /etc/network/interfaces

Ubuntu verwendet standardmäßig ifupdown nicht mehr, weshalb man am besten diese Datei löscht bzw. nicht anlegt.

[…]

Ubuntu ist übrigens standardmäßig so konfiguriert, dass für Arbeitsstationen wie für Server IPv6 out of the Box funktioniert, lediglich für Router muss man ggf selbst Hand anlegen.

Was hat ein Server (Deine Überschrift) mit einem Router zu tun (Dein Text)?

Ich will ja nicht meckern, aber als ich nach Hilfe gesucht habe, habe ich nichts gefunden. Und der Beitrag ist für alle Einsteiger generell erstmal eine funktionierende Konfig.

DJKUhpisse Team-Icon

Supporter, Wikiteam
Avatar von DJKUhpisse

Anmeldungsdatum:
18. Oktober 2016

Beiträge: 18245

Der Scope hat die Bedeutung eines Gültigkeitsbereiches, welcher die Eindeutigkeit betrifft.

Kein ISP der Welt wird fc00::/7 per BGP als Route annehmen, weil das Routing nur innerhalb eines AS stattfinden soll (site-local). fc00::/8 (Acht) wurde aber meines Wissens mal so geplant, dass die Adressen ähnlich wie 2000::/3 koordiniert rausgegeben werden und somit niemals ein Konflikt entstehen kann.

Ich habe aber bisher von keiner produktiven Nutzung mitbekommen. Bei fd00::/8 wählt man bis /48 die Bits selbst zufällig.

Antworten |