Einleitung#
Ich habe zuhause eine DS-Lite-Verbindung, bereitgestellt von M-Net. Ich betreibe eine OPNsense-Firewall und musste die beiden zum Laufen bringen. Mein erster Gedanke war, meinen Internetanbieter (ISP) anzurufen und nach einem richtigen Dual-Stack-Setup mit echter öffentlicher IPv4-Adresse zu fragen — hauptsächlich wegen VPN-Zugriffsproblemen aus IPv4-only-Netzwerken. Aber ich entschloss mich, das als Herausforderung anzunehmen: ich mag IPv6, weshalb ich lernen wollte mit den Einschränkungen von DS-Lite umzugehen und Lösungen für die verbleibenden Probleme finden. Es gibt einen Folgeartikel darüber, wie man aus einem IPv4-only-Netzwerk auf ein DS-Lite-Heimnetzwerk zugreift, indem man einen VPS als WireGuard-Hub verwendet.
OPNsense unterstützt DS-Lite, aber es erfordert eine spezifische Konfiguration und es gibt einige nicht-offensichtliche Stolperfallen. Dieser Artikel führt durch die vollständige Konfiguration.
Was ist DS-Lite?#
DS-Lite (Dual-Stack Lite, RFC 6333) ist eine Übergangstechnologie, die es ISPs ermöglicht, ihren Kunden IPv6 bereitzustellen und dabei öffentliche IPv4-Adressen zu schonen. Aus Kundensicht sieht es so aus:
- Man bekommt ein öffentliches, routbares IPv6-Prefix (in meinem Fall ein /56 von M-Net, delegiert via DHCPv6).
- Man bekommt keine öffentliche IPv4-Adresse. Stattdessen wird der IPv4-Verkehr durch die IPv6-Verbindung zu einem Gerät namens AFTR (Address Family Transition Router) beim ISP getunnelt. Der AFTR NATet dann den Verkehr aller Kunden hinter gemeinsamen öffentlichen IPv4-Adressen (CGNAT, RFC 6598).
Der Tunnel zwischen dem eigenen Router und dem AFTR ist ein GIF-Tunnel (Generic tunnel Interface) — er transportiert IPv4-Traffic eingebettet in IPv6-Pakete. Innerhalb des Tunnels verwenden beide Endpunkte Adressen aus dem reservierten 192.0.0.0/29-Block (RFC 6333 §10):
| Adresse | Rolle |
|---|---|
192.0.0.2 | Eigener Router (B4-Element) |
192.0.0.1 | ISP AFTR Gateway |
Die praktischen Nachteile: Man verliert eine echte öffentliche IPv4, Port-Forwarding ist nicht möglich, und VPN-Protokolle, die auf eingehende IPv4-Verbindungen angewiesen sind, benötigen eine Lösung. Jeder Host und Dienst hinter dem Router sollte im Idealfall direkt über IPv6 erreichbar sein.
Voraussetzungen#
- OPNsense (getestet auf 24.x)
- Ein DSL-Modem im Bridge-Modus — M-Net erfordert VLAN 40 auf dem WAN. Ein DrayTek Vigor 166 funktioniert gut; eine FritzBox ebenfalls.
- M-Net PPPoE-Zugangsdaten (Benutzername und Passwort aus dem Kundenportal)
- Die AFTR-IPv6-Adresse für M-Net:
2001:a60:0:2::ffff(Hostnameaftr.prod.m-online.net— muss selbst aufgelöst werden, OPNsense akzeptiert im GIF-Setup nur eine IP-Adresse)
Schritt 1: Modem-Einrichtung#
Das Modem muss im Bridge-Modus betrieben werden, damit OPNsense die rohen PPPoE-Frames empfängt und die Verbindung selbst verwaltet. M-Net erfordert VLAN 40 — sicherstellen, dass das Modem es korrekt durchleitet.
Schritt 2: PPPoE-Gerät erstellen#
In OPNsense: Interfaces → Devices → Point-to-Point.
Neuen Eintrag hinzufügen:
| Feld | Wert |
|---|---|
| Link Type | PPPoE |
| Link Interface(s) | Physischer WAN-Port (z.B. igb2) |
| Username | M-Net-Benutzername (Format: XXXXXXX@mdsl.mnet-online.de) |
| Password | M-Net-Passwort |
| Description | mnet_pppoe_dslite |
Alle anderen Felder auf den Standardwerten lassen. Speichern und übernehmen.

Ein neues Gerät pppoe0 (oder pppoe1, wenn bereits eines existiert) erscheint in der Geräteliste.
Schritt 3: WAN-Interface zuweisen und konfigurieren#
Unter Interfaces → Assignments sicherstellen, dass das WAN-Interface dem neu erstellten PPPoE-Gerät (pppoe1) zugewiesen ist.
Dann Interfaces → WAN öffnen und wie folgt konfigurieren:
IPv4 Configuration Type → None
DS-Lite gibt keine echte IPv4 auf dem WAN-Interface — IPv4 kommt in einem späteren Schritt durch den GIF-Tunnel.
IPv6 Configuration Type → DHCPv6
Stellt die IPv6-Verbindung über den PPPoE-Link her und fordert die Prefix Delegation von M-Net an.
Unter DHCPv6 client configuration folgendes einstellen:
| Feld | Wert |
|---|---|
| Prefix Delegation Size | 56 |
| Send prefix hint | ✓ aktiviert |
| Optional Prefix ID | 9 |
Die Prefix ID bestimmt, welches /64-Sub-Prefix des delegierten /56 das WAN-Interface für seine IPv6-Adresse verwendet. Der konkrete Wert spielt keine Rolle, solange er sich von den Prefix IDs der LAN- und VLAN-Interfaces unterscheidet — der Wert 9 reserviert ein /64 für das WAN und lässt die IDs 0–8 für LAN und VLANs frei. Das Ergebnis ist ein WAN-Interface mit einer routbaren Global Unicast Address (GUA), die der GIF-Tunnel in Schritt 5 braucht.
Speichern und übernehmen. OPNsense stellt nun die PPPoE-Verbindung her und fordert ein IPv6 /56-Prefix von M-Net an.

Schritt 4: IPv6 auf LAN und VLANs tracken#
Für jedes interne Interface (LAN, VLANs) unter Interfaces → [Interface] folgendes einstellen:
| Feld | Wert |
|---|---|
| IPv6 Configuration Type | Track Interface (legacy) |
| Parent Interface | WAN |
| Assign Prefix ID | Ein eindeutiger Wert pro Interface (z.B. 0 für LAN, 1–8 für VLANs) |
Damit wird OPNsense angewiesen, die IPv6-Adresse jedes Interfaces aus dem /56-Block abzuleiten, der dem WAN delegiert wurde. Jede Prefix ID entspricht einem eigenen /64 innerhalb des /56.

Zu diesem Zeitpunkt sollte IPv6-Konnektivität bestehen. Testen mit ping6 2620:fe::fe (Quad9) aus der OPNsense-Shell oder von einem Host dahinter. Wenn IPv6 funktioniert, weiter zum IPv4-Tunnel.
Schritt 5: GIF-Tunnel erstellen#
Der GIF-Tunnel transportiert IPv4-Verkehr in IPv6-Paketen zum AFTR von M-Net.
Unter Interfaces → Devices → GIF.
Neuen Eintrag hinzufügen:
| Feld | Wert |
|---|---|
| Local address | WAN (oder ein beliebiges Interface mit GUA — siehe Hinweis unten) |
| Remote address | 2001:a60:0:2::ffff |
| Tunnel local address | 192.0.0.2 |
| Tunnel remote address | 192.0.0.1 |
| Tunnel netmask / prefix | 29 |
| Disable Ingress filtering | ✓ aktiviert |
| Description | AFTR_MNET |
Welches Interface als lokale Adresse verwenden?
Der GIF-Tunnel benötigt eine Global Unicast Address (GUA) als IPv6-Quelle (eine Link-Local-Adresse ist nicht routbar und erreicht den AFTR nicht). Da in Schritt 3 eine Prefix ID (9) auf den DHCPv6-Client des WAN gesetzt wurde, erhält das WAN-Interface eine GUA aus dem delegierten /56 und funktioniert hier. Jedes andere Interface mit einer GUA (LAN, ein VLAN) funktioniert ebenfalls.

Speichern und übernehmen.
Schritt 6: GIF-Interface als WANv4 zuweisen#
Unter Interfaces → Assignments das gif0-Gerät als neues Interface hinzufügen. Beschreibung auf WANv4 setzen.
Interfaces → WANv4 öffnen:
- Interface aktivieren
- Sowohl IPv4 als auch IPv6 Configuration Type auf None lassen — die Adressen sind bereits in der GIF-Konfiguration definiert
Speichern und übernehmen.

Schritt 7: Gateway überprüfen#
Wenn das WANv4-Interface zugewiesen wird, erstellt OPNsense automatisch einen Gateway-Eintrag dafür. Unter System → Gateways → Configuration überprüfen, ob er vorhanden ist.
Der automatisch erstellte Gateway hat das WANv4-Interface zugewiesen, ein leeres IP-Adressfeld (OPNsense leitet den Endpunkt aus der GIF-Tunnel-Konfiguration ab) und Gateway-Monitoring deaktiviert. Er muss nicht als Upstream-Gateway gesetzt werden — OPNsense routet IPv4-Verkehr automatisch durch ihn.

Setup überprüfen#
Von einem Host im LAN sollten nun sowohl IPv4 als auch IPv6 funktionieren:
curl -4 ifconfig.me— sollte eine Adresse im Bereich100.64.0.0/10zurückgeben (CGNAT, normal bei DS-Lite)curl -6 ifconfig.me— sollte die öffentliche IPv6-Adresse zurückgeben
Wenn IPv4 nichts zurückgibt oder der Tunnel nicht aufgebaut wird:
- Prüfen, ob IPv6 zuerst funktioniert (der Tunnel hängt davon ab)
- Prüfen, ob die AFTR-Adresse korrekt ist —
aftr.prod.m-online.netauflösen und mit2001:a60:0:2::ffffvergleichen - Prüfen, ob das GIF-Local-Address-Interface eine GUA hat (z.B. WAN mit gesetzter Prefix ID, oder LAN)
Was nicht funktioniert#
- Port Forwarding: Man teilt sich eine öffentliche IPv4 mit anderen Kunden hinter dem AFTR. Eingehende IPv4-Verbindungen sind nicht möglich. Die Lösung ist, IPv6 für alles zu verwenden, das von außen erreichbar sein soll, oder durch einen VPS zu tunneln (Thema des nächsten Artikels).
- VPNs über IPv4 von außen: Gleicher Grund. WireGuard oder OpenVPN, das auf der öffentlichen IPv6-Adresse lauscht, funktioniert einwandfrei.
Bekannte Probleme#
Ressourcen#
- DS-Lite on 23.7.6+ (OPNsense Forum)
- OPNsense Core Issue #7713
- OPNsense Forum topic 46665
- OPNsense Forum topic 27935
- M-Net DS-Lite mit pfSense (cybercyber.org)
- RFC 6333 — Dual-Stack Lite
Dieser Artikel wurde mit Unterstützung von Claude (Anthropic) verfasst.
