AdGuard unter Unraid hinter FRITZ!Box und OPNSense mit IPv6 und ULA nutzen
Inhaltsverzeichnis:
Einleitung
In diesem Artikel erkläre ich, wie man Ad-Guard home als Docker Container auf Unraid betreibt, das hinter einer OPNsense steht und per IPv6 eine feste IP-Adresse erhalten soll. IPv4 wurde bereits konfiguriert, hier geht es nur um den IPv4-Teil. Wir wollen also einen funktionierenden Dual-Stack Betrieb.
Was ist das Ziel?
Wir möchten unseren Clients per DHCPv6 einen festen DNS-Server zuweisen, um die Ad-Block Möglichkeit nicht nur per IPv4, sondern auch per IPv6 nutzen zu können.
Der Ad-Guard Container bekommt dabei eine ULA (Unique Local Address) zugewiesen, die auch über mehrere Subnetze (VLANs) erreichbar ist.
Zielgruppe dieses Artikels
Dieser Artikel ist an alle gerichtet, die ihre OPNSense mit IPv4 bereits fertig konfiguriert haben und in der Konfiguration mit VLANs vertraut sind. Ebenso solltet ihr euch mit Unraid auskennen, was die dortige Konfiguration der Netzwerke angeht.
Die Umgebung
In diesem Szenario haben wir einen Dual-Stack Internet-Anschluss von der Telekom. Vom Provider erhalten wir ein delegiertes IPv6-Subnet, das wir an unsere OPNsense weitergeben, und dahinter an die entspr. VLANs. IPv4 wurde in diesem Beispiel bereits fertig konfiguriert. Ich werde hier also nicht erklären, wie ihr die OPNsense generell hinter der FRITZ!Box einrichten müsst.
Wir werden ULA (Unique Local Addresses) aus dem Adressbereich fc00::/7 an unserer OPNSense konfigurieren, um dem Ad-Guard Container eine feste IP zuweisen zu können. Das öffentliche Subnetz das wir von unserem ISP erhalten, ändert sich regelmäßig. Deswegen ist es nicht geeignet, dem Ad-Guard eine feste IP-Adresse zuzuweisen.
Warum ULA?
Wie bereits erwähnt ändert sich das zugewiesene öffentliche IPv6-Präfix regelmäßig, weswegen dieser Adressbereich leider nicht in Frage kommt für unseren Ad-Guard. Schließlich sollen unsere Clients den Container immer unter derselben IP erreichen können.
Wenn wir IPv6 nutzen, haben wir immer auch automatisch link-lokale Adressen (fe80::/10) im Einsatz, aber diese werden nicht über Subnetze geroutet. Da wir mehrere VLANs verwenden, ist dies auch keine Option.
Bedeutet also auch: Wer nur ein Subnetz verwendet, kann alternativ auch eine Link-Lokale Adresse für den Ad-Guard verwenden.
Netzbereiche / VLANs
Wir verwenden in diesem Beispiel folgende Netzbereiche, bzw. VLANs:
- FRITZ!Box: Subnetz 192.168.20.0/24
- OPNSense:
- Management Subnetz: 192.168.21.0/24
- VLAN 22 für interne Geräte: Subnetz 192.168.22.0/24
- VLAN 23 für Gäste: Subnetz 192.168.23.0/24
Eingesetzte Hard- und Software-Versionen
- FRITZ!Box 7590 mit FRITZ!OS 8.21 (Webinterface auf Deutsch)
- OPNsense 25.7.7_4 (Webinterface auf Englisch)
- Unraid 7.20 (Webinterface auf Englisch)
Zur FRITZ!Box findet man die meisten Anleitungen auf Deutsch, da diese im deutschsprachigen Raum einfach sehr verbreitet ist. Deshalb ist das Webinterface meiner FRITZ!Box auf Deutsch eingestellt.
Hinweis: Damit Unraid dem Ad-Guard Container eine Adresse aus dem ULA-Bereich zuweisen kann, wird mindestens Unraid 7.20 benötigt. Siehe Release Notes.
Schaubild
Das Bild habe ich mit mermaid erstellt, so ganz zufrieden bin ich damit noch nicht ;-)
architecture-beta
group group_server(server)[Unraid Server]
group group_vlan22(server)[VLAN22_Intern]
group group_vlan23(server)[VLAN23_Gast]
service wan(internet)[ISP Deutsche Telekom]
service fritzbox(internet)[FRITZBox 7590]
service opnsense(internet)[OPNSense]
service unraid(server)[Unraid] in group_server
service dhcp(server)[DHCP] in group_server
service adguard(logos:docker-icon)[AdGuard VLAN22] in group_server
service client1(logos:linux-tux)[Client 1] in group_vlan22
service client2(logos:linux-tux)[Client 2] in group_vlan23
wan:R --> L:fritzbox
fritzbox:R --> L:opnsense
opnsense:R --> L:unraid
unraid:B --> T:adguard
unraid:R --> L:dhcp
dhcp:T --> B:client1
client1:L --> R:adguard
dhcp:B --> T:client2
client2:L --> R:adguard
Konfiguration der FRITZ!Box
Im ersten Schritt stellen wir sicher, dass IPv6 an der FRITZ!Box korrekt konfiguriert ist.
- Öffne das Webinterface der FRITZ!Box
- Heimnetz > Netzwerk > Netzwerkeinstellungen > Erweiterte Netzwerkeinstellungen ändern > IPv6
Passe die Einstellungen entspr. an:
(Ohne Sektion):
- Router Advertisement im LAN aktiv
- Unique Local Addresses (ULA) immer zuweisen
- Auch IPv6-Präfixe zulassen, die andere IPv6-Router im Heimnetz bekanntgeben
- Diese FRITZ!Box stellt den Standard-Internetzugang zur Verfügung
Sektion “DNSv6-Server im Heimnetz”:
- DNSv6-Server auch über Router Advertisement bekanntgeben (RFC 5006)
Sektion “DHCPv6-Server im Heimnetz”:
- DHCPv6-Server in der FRITZ!Box für das Heimnetz aktivieren
- DNS-Server und IPv6-Präfix (IA_PD) zuweisen
Navigiere jetzt nochmal zu: Heimnetz > Netzwerk > Netzwerkeinstellungen > Erweiterte Netzwerkeinstellungen ändern > IPv6
Scrolle auf der Seite ganz nach unten, hier solltest du die Überschrift “Verwendete IPv6 Präfixe” sehen können.
Ganz unten sind drei Subnetze zu sehen:
- Heimnetz: 2003:de:…/64
- Delegiert: 2003:de:…/60
- WAN: 2003:de:…/64
Das Netzerk das uns delegierte wurde, benötigen wir dann nachher.
Bei mir hat es etwas gedauert, bis der "Delegiert"-Teil aufgetaucht ist. Sollte er auch nach einigen
Minuten noch nicht erscheinen, hat es bei mir geholfen die OPNsense einmal neu zu starten.
Konfiguration der OPNsense
IPv6 auf dem WAN Interface aktivieren
Das Interface kann bei dir ggf. anders heißen, es ist das WAN-Interface gemeint welches mit deiner FRITZ!Box verbunden ist.
- Interfaces > [WAN]
- IPv6 Configuration Type: DHCPv6
- Prefix delegation size: 60
- Request prefix only
- Send prefix hint
Weitere Interfaces konfigurieren
Diesen Schritt führst du bei beiden Interfaces durch: VLAN22_Intern, VLAN23_Gast.
- Interfaces > [INTERFACE_NAME]
- IPv6 Configuration Type: Track Interface
- Parent interface: WAN
- Assign prefix ID: 2
- Manual configuration: Allow manual adjustment of DHCPv6 and Router Advertisements
Bei der Prefix-ID fange ich bei 2 an zu zählen, da dies zu meinem 22er VLAN passt. Ihr könnt hier natürlich
auch mit 1 anfangen und dann hochzählen.
Router Advertisements (RA) konfigurieren
Diesen Schritt führst du bei beiden Interfaces durch: VLAN22_Intern, VLAN23_Gast.
- Services > Router Advertisements > [INTERFACE_NAME]
- Router Advertisements: Assisted
- Router Priority: Normal
- Source Address: Automatic
- Advertise Default Gateway
- Advertise Routes: Nichts eintragen
- DNS options
- Use the DNS configuration of the DHCPv6 server
- Do not send any DNS configuration to clients
Firewall-Regel für WAN anlegen
Hier ist es jetzt wichtig, die ICMPv6-Pakete durch zu lassen, da darüber z.B. die Router Advertisements (RA) von der Fritz!Box empfangen werden können. Darin steckt z.B. die Info über den IPv6-Gateway.
- Firewall > Rules > [DEIN_WAN_INTERFACE] > Neue Regel anlegen
- Interface: [DEIN_WAN_INTERFACE]
- Direction: in
- TCP/IP Version: IPv6
- Protocol: IPV6-ICCMP
- ICMP6 Type: any
- Source: [DEIN WAN Netzwerk, z.B. WAN net]
- Destination: any
- Description: Erlaube eingehendes ICMPv6 für Router Advertisements (RA)
ULA Subnet generieren
Nun müssen wir uns ein ULA-Subnet generieren. Ich habe dafür die Webseite https://unique-local-ipv6.com verwendet. Da dieses Subnetz nicht im Internet geroutet wird, haben wir freie Auswahl.
In meinem Beispiel ist es über den Generator dieses Subnet geworden: fdb8:003d:eb48::/48
Daraus werden diese Subnets, die wir für unsere VLANs verwenden:
- LAN (VLAN22): fdb8:003d:eb48:2::1/64
- Gast (VLAN23): fdb8:003d:eb48:3::1/64
Du kannst hier natürlich auch mit fdb8:003d:eb48:1::1/64 anfangen.
Ich fange hier wieder mit der 2 an, damit es zu meinem VLAN22 dazu passt. Macht es für mich einfach weniger verwirrend.
Virtual IPs anlegen
Nun legen wir für beiden Netzbereiche virtuelle IP-Adressen an, d.h. du führst diesen Schritt zweimal aus (für VLAN22_Intern und VLAN23_Gast). Für jedes VLAN benötigen wir eine entspr. virtuelle IP.
-
Interfaces –> Virtual IPs –> Settings –> Auf das Plus-Symbol (+)
- Mode: IP Alias
- Interface: [INTERFACE_NAME]
- Network / Address: [fdb8:003d:eb48:2::1/64], bzw. [fdb8:003d:eb48:3::1/64]
Wenn du alles fertig hast, solltest du zwei Einträge sehen:

Router Advertisements konfigurieren
Router Advertisements aktivieren auf den beiden VLAN-Interfaces:
- Services –> Router Advertisements –> [INTERFACE_NAME] –>
- Router Advertisements: Assisted
- Router Priority: Normal
- Source Address: Automatic
- Advertise Default Gateway
- Advertise Routes: Nichts eintragen
- DNS options:
- Use the DNS configuration of the DHCPv6 server
- Do not send any DNS configuration to clients
- Minimum Interval: 200 (Standard)
- Maximum Interval: 600 (Standard)
DHCPv6 konfigurieren
Das muss wieder an allen Interfaces eingerichtet werden, die IPv6 nutzen sollen. Außer der WAN-Schnittstelle, bei der bitte nicht.
- Services > ISC DHCPv6 > [DEIN_INTERFACE]
- Enable DHCPv6 server on VLAN22_Intern interface
- Range: From: ::1:00 to: ::1:ffff
- DNS servers: fdb8:3d:eb48:1:ffff::10
Das ist die Konfiguration am Beispiel des Interface VLAN22_Intern:

Firewall-Regel konfigurieren
Damit Clients aus dem Gast-VLAN (23) auch auf den AdGuard Container im VLAN22 zugreifen können, müssen wir noch eine entspr. Firewall-Regel erstellen.
In diesem Fall erstelle ich eine Regel, die sowohl IPv4 als auch IPv6 erlaubt.
Firewall > Rules > VLAN23_Gast > Add
- Action: Pass
- Interface: VLAN23_Gast
- Direction: in
- TCP/IP Version: IPv4+IPv6
- Protocol: TCP/UDP
- Source: VLAN23_Gast net
- Destination: <IP-Adresse(n) des ADGuard Containers>
- Destination Port Range: from DNS to DNS
- Description: Erlaube Zugriff auf AdGuard
Konfiguration von Unraid
VM Manager und Docker-Dienst stoppen
Damit Änderungen am Netzwerk gemacht werden können, müssen zuerst der VM Manager und der Docker-Dienst gestoppt werden:
- Settings > VM Manager > Enable VMs: No > APPLY
- Settings > Docker > Enable Docker: No > APPLY
IPv6 aktivieren
Damit sich der Unraid-Server entspr. IP-Adressen per IPv6 besorgt, müssen wir es entspr aktivieren
- Settings > Network Settings > Interface eth0
- Network protocol: IPv4 + IPv6
- IPv6 address assignment: Automatic
- IPv6 privacy extensions: Disabled
Wenn man anschließend auf den INFO-Button klickt, sieht man die zugewiesenen IP-Adressen. Hier sollte jetzt unser öffentliches Subnet 2003… und unser ULA-Subnet fdb8… auftauchen.
Docker-Dienst konfigurieren
-
Settings > Docker > “Advanced View” aktivieren
- IPv6 custom network on interface br0 (optional)
-
Enable Docker: Yes > Auf APPLY klicken
So sehen die Netzwerke in meiner Konstellation aus:

Hinweis: Das Interface br0.24 benutze ich für meine DMZ, spielt aber für diese Anleitung keine Rolle.
VM Manager und Docker-Dienst starten
Anschließend können der VM Manager und der Docker-Dienst wieder gestartet werden:
- Settings > VM Manager > Enable VMs: Yes > Auf APPLY klicken
- Settings > Docker > Enable Docker: Yes > Auf APPLY klicken
ADGuard Container konfigurieren
Nun vergeben wir dem AdGuard Container eine feste IP-Adresse aus dem ULA-Bereich, den wir uns vorhin rausgesucht haben. Die IPv4-Adresse bleibt erhalten und wir fügen ihm nun eine zusätzliche IP hinzu.
- Docker > Auf den AdGuard-Home Container klicken > edit
- Fixed IP address (optional): <IPv4-Adresse>, fdb8:3d:eb48:2:ffff::10
Unter dieser IPv6-Adresse wird der AdGuard-Container dann also erreichbar sein. Damit die Clients das auch mitbekommen, müssen wir diese Adresse jetzt noch in der OPNsense im DHCPv6 eintragen.
IP-Adresse vom AdGguard prüfen:
Nun prüfen wir, ob der AdGuard Container wirklich auch die entspr. IP-Adresse erhalten hat.
- AdGuard Webinterface öffnen > Einrichtungsassistent
Hier sollte man nun neben vielen anderen Adressen auch unsere konfigurierte ULA sehen: fdb8:3d:eb48:1:ffff::10
Verbindung prüfen
Jetzt kannst du dich mit einem beliebigen Client im entspr. VLAN einwählen und prüfen, welche IP-Adressen du erhalten hast. Im VLAN22 (Intern) sollten z.B. folgende Adressen vorhanden
- 2003:de:… (mind. eine, ggf. auch mehrere): Das ist die global gültige Adresse
- fdb8:3d:eb48:2:…: Das ist die ULA (Unique local address)
- fe80:…: Das ist die nicht routbare link-lokale Adresse
Prüfe die DNS-Auflösung auf eine beliebige externe Adresse, z.B. unter Linux:
host heise.de
Die Anfrage sollte nun im AdGuard erscheinen. Die kannst du einsehen, wenn du dich an der Webseite anmeldest und auf das “Abfrageprotokoll” klickst.