Create IPv6 guide for Fritz!Box routers

Co-authored-by: Bucking-Horn
Co-authored-by: yubiuser <ckoenig@posteo.de>

Signed-off-by: Alexander Lieret <alexander.lieret@fau.de>
Signed-off-by: DL6ER <dl6er@dl6er.de>
This commit is contained in:
DL6ER
2022-12-30 07:52:16 +01:00
parent fed03f6947
commit 939c378dea
6 changed files with 162 additions and 2 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

+82 -1
View File
@@ -2,7 +2,6 @@ Diese Anleitung soll die grundlegenden Prinzipien für ein reibungsloses Zusamme
!!! note "Hinweis"
Es gibt nicht nur **die eine Art**, ein funktionierendes DNS-System aufzusetzen. Konfiguriert euer Netzwerk nach euren Bedürfnissen.
Diese Anleitung wurde für IPv4 geschrieben und muss für IPv6 Netzwerke entsprechend angepasst werden.
### Erweiterte Ansicht aktivieren
@@ -90,3 +89,85 @@ Folgende Einstellungen müssen dafür vorgenommen werden:
* **Local domain name (optional):** Name der lokalen Domän, für die Fritz!Box **fritz.box**
![Screenshot der Conditional Forwarding Einstellungen](../images/routers/conditional-forwarding.png)
## Pi-hole als DNS Server via IPv6
Mit dieser Konfiguration bekommen alle Clients die IPv6 von Pi-hole als DNS-Server über DHCPv6 und Router Advertisement (RA/RDNSS, SLAAC) angeboten, wenn sie mit Ihrer Fritz!Box verbunden sind.
### Stabile IPv6 Adresse für den Pi-hole
Der folgende Abschnitt hilft dabei, eine geeignete IPv6-Adresse des Pi-hole auszuwählen.
Um alle IPv6 Adressen anzuzeigen, die derzeit von Ihrer Hauptnetzwerkschnittstelle verwendet werden, öffnen Sie ein Terminal, ersetzen Sie `eth0` durch den Namen Ihrer Hauptschnittstelle (kann auch weggelassen werden) und führen Sie den Befehl aus
```bash
ip -6 address show eth0
```
The output should look like this but with different addresses
```bash
$ ip -6 address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet6 fd6f:95dc:3a80:e9b1:503e:b05a:21dc:cf0c/64 scope global temporary dynamic
valid_lft 7159sec preferred_lft 3559sec
inet6 fd6f:95dc:3a80:e9b1:4bc3:7bff:fe67:c175/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 7159sec preferred_lft 3559sec
inet6 2001:db8::1c5e:22fe:490c:1c31/64 scope global temporary dynamic
valid_lft 7159sec preferred_lft 3559sec
inet6 2001:db8::4bc3:7bff:fe67:c175/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 7159sec preferred_lft 3559sec
inet6 fe80::4bc3:7bff:fe67:c175/64 scope link noprefixroute
valid_lft forever preferred_lft forever
```
Bei der Auswahl von der IPv6 Adresse ist folgendes zu beachten:
* Vermeidung von global unicast addresses (GUA) (Bereich `2000::/3`)
Ihr Internetprovider kontrolliert das GUA IPv6 Präfix, so dass es sich entweder regelmäßig oder bei einem Neustart des Routers ändern kann.
In diesem Beispiel sollte die dritte und vierte Adresse, die mit `2001:` beginnen, nicht verwendet werden:
* Vermeidung von Privacy Extension Adressen (markiert mit `temporary`)
Die Schnittstellenkennung einer IPv6-Adresse ist so konzipiert, dass sie sich regelmäßig ändert, auf manchen Systemen sogar jede Stunde.
In diesem Beispiel sollte die erste und die dritte Adresse vermieden werden.
* Bevorzugung von unique local addresses (ULA) (Bereich `fd00::/8`) gegenüber der link-lokalen Adresse (Bereich `fe80::/10`)
Das ULA-Präfix ist kontrollierbar und statisch. Letzteres ist nur in einem Netzwerk gültig und kann nicht geroutet werden.
Dies kann für einfache Heimnetzwerke funkionieren, solange keine Pakete geroutet werden (wie bei Docker, einigen WiFi-Zugangspunkten, L3-Switches, ...).
In diesem Beispiel sind diese beiden Adressen verwendbar: `fd6f:95dc:3a80:e9b1:4bc3:7bff:fe67:c175` und `fe80::4bc3:7bff:fe67:c175` (mit Vorsicht).
Sollte Ihre FritzBox noch kein IPv6 ULA-Präfix vergeben, hilft der folgende Schritt bei der Konfiguration eines ULA-Präfixes.
### (Optional) ULA Adressen aktivieren
Unique local addresses (ULA) sind lokale IPv6-Adressen, die nicht über das Internet geroutet werden. Sie sind vergleichbar mit den privaten IPv4-Netzbereichen.
Zum aktivieren, wähle "Unique Local Addresses (ULA) immer zuweisen" aus in
```bash
Heimnetz/Netzwerk/Netzwerkeinstellungen/IP-Adressen/IPv6-Konfiguration/Unique Local Addresses
```
> Hinweis:
Es wird empfohlen, das ULA-Präfix zu ändern, um Kollisionen mit anderen Netzen zu vermeiden.
Die ersten 40 Bits sollten gemäß RFC4193 oder durch einen einfachen Online-Generator, wie [unique-local-ipv6.com](https://www.unique-local-ipv6.com/), erzeugt werden.
Die restlichen 16 Bits sind die Subnetz-ID und können frei gewählt werden.
Nach dem Auswählen von "ULA-Präfix manuell festlegen" kann man sein eigenes Präfix einstellen.
![Screenshot der Fritz!Box IPv6 Adressen Einstellungen](../images/fritzbox-ipv6-1-de.png)
Um die neue Adressen zu erhalten, muss der Pi-hole Server kurz vom Netzwerk getrennt werden oder neu gestartet werden.
Der [vorherige Schritt](#stabile-ipv6-adresse-für-den-pi-hole) sollte wiederholt werden, um die neue ULA Adresse anzuzeigen.
### Pi-hole als DNS Server verteilen
Nun kann die IPv6 Adresse des Pi-hole als "Lokaler DNSv6-Server" in
```bash
Heimnetz/Netzwerk/Netzwerkeinstellungen/IP-Adressen/IPv6-Konfiguration/DNSv6-Server im Heimnetz
```
eingetragen werden.
> Hinweis:
Es wird empfohlen "DNSv6-Server auch über Router Advertisement bekanntgeben (RFC 5006)" auszuwählen.
![Screenshot der Fritz!Box IPv6 Adressen Einstellungen](../images/fritzbox-ipv6-2-de.png)
+80 -1
View File
@@ -2,7 +2,6 @@ This guide was developed using FRITZ!OS 07.21 but should work for others too. It
!!! note
There is no single way to do it right. Choose the one best fitting your needs.
This guide is IPv4 only. You need to adjust for IPv6 accordingly.
### Enable advanced settings
@@ -85,3 +84,83 @@ The following settings must be made:
* **Local domain name (optional):** Fritz!Box uses **fritz.box**
![Screenshot der Conditional Forwarding Einstellungen](../images/routers/conditional-forwarding.png)
## Distribute Pi-hole as DNS server via IPv6
Using this configuration, your Fritz!Box will offer Pi-hole's IPv6 as local DNS server to its clients via DHCPv6 as well as Router Advertisement (RA/RDNSS, SLAAC).
### Stable IPv6 address for your Pi-hole
The following section will help you picking a suitable IPv6 address of your Pi-hole.
To show all IPv6 addresses currently in use by your main network interface, open a terminal, substitute `eth0` with your main interface name (or omit) and execute the command
```bash
ip -6 address show eth0
```
The output should look like this but with different addresses
```bash
$ ip -6 address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet6 fd6f:95dc:3a80:e9b1:503e:b05a:21dc:cf0c/64 scope global temporary dynamic
valid_lft 7159sec preferred_lft 3559sec
inet6 fd6f:95dc:3a80:e9b1:4bc3:7bff:fe67:c175/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 7159sec preferred_lft 3559sec
inet6 2001:db8::1c5e:22fe:490c:1c31/64 scope global temporary dynamic
valid_lft 7159sec preferred_lft 3559sec
inet6 2001:db8::4bc3:7bff:fe67:c175/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 7159sec preferred_lft 3559sec
inet6 fe80::4bc3:7bff:fe67:c175/64 scope link noprefixroute
valid_lft forever preferred_lft forever
```
When picking an IPv6 address from that list:
* avoid global unicast addresses (GUA) (range `2000::/3`)
Your ISP controls your GUA IPv6 prefix it, so it may change, either regularly or on router restarts.
In this example, don't use the third and fourth address, starting with `2001:`
* avoid Privacy Extension (RFC 4941) addresses which are marked with `temporary`
The interface identifier portion of an IPv6 address is designed to change regularly, on some systems as often as every hour.
In this example, avoid the first and the third address.
* prefer unique local addresses (ULA) (range `fd00::/8`) over the link-local address (range `fe80::/10`)
You can control the ULA prefix and it is static. The later is only valid on a link and cannot be routed.
This can be fine for simple home networks, but will break once packets are routed (like Docker, some WiFi access points, L3 switches, ...).
In this example, these two addresses are usable; `fd6f:95dc:3a80:e9b1:4bc3:7bff:fe67:c175` and `fe80::4bc3:7bff:fe67:c175` (with care).
If your FritzBox doesn't issue an IPv6 ULA prefix yet, refer to the following step which helps you configure an ULA prefix.
### (Optional) Enable ULA addresses
Unique local addresses (ULA) are local IPv6 addresses which are not routed on the internet. They are comparable to the IPv4 private network ranges.
To enable ULA addresses, select "Always assign unique local addresses (ULA)" in
```bash
Home Network/Network/Network Settings/IP Addresses/IPv6 Addresses/Unique Local Addresses
```
> Note:
It is recommended to change the ULA prefix in order to prevent collisions with other networks.
You should generate the first 40 bits according to RFC4193 or use a simple online generator, like [unique-local-ipv6.com](https://www.unique-local-ipv6.com/).
The remaining 16 bits are the subnet id and are free to choose.
Select "Set ULA prefix manually" and enter a custom prefix.
![Screenshot of Fritz!Box IPv6 Addresses Settings](../images/routers/fritzbox-ipv6-1.png)
To obtain the new address, reconnect or reboot your Pi-hole server.
Go back to the [previous step](#stable-ipv6-address-for-your-pi-hole) to display your newly created ULA address.
### Distribute Pi-hole as DNS server
It is now possible to enter Pi-hole's stable IPv6 address as "Local DNSv6 server" in
```bash
Home Network/Network/Network Settings/IP Addresses/IPv6 Addresses/DNSv6 Server in the Home Network
```
> Note:
It is recommended to select "Also announce DNSv6 server via router advertisement (RFC 5006)".
![Screenshot of Fritz!Box IPv6 Addresses Settings](../images/routers/fritzbox-ipv6-2.png)