PfSense - IPv6 mit Tunnel Broker und Reverse DNS rDNS
Aus znilwiki
Vorwort
Zum dem Zeitpunkt an dem ich diesen Artikel schrieb hatte ich 2 Testumgebungen die beide nur über IPv4 verfügten.
- Einen Kimusfi-ESXi Server dessen IPv6 ich nur für den ESXi-Server nutzen konnte
- Eine ESXi-Umgebung bei meinem Arbeitgeber in der noch kein IPv6 zur Verfügung steht.
Seit mein Internet-Anschluss zu Hause auch IPv6 kann nutze ich dieses nun schon oft - auch weil es die Gelegenheit war sich mal näher mit der Materie zu beschäftigen.
Über Anleitungen im Internet - insbesondere die von pfSense selbst: https://doc.pfsense.org/index.php/Using_IPv6_with_a_Tunnel_Broker -
hatte ich mir schon mal eine IPv6 Verbindung zu meinen Test-Domänencontrollern und Exchange-Servern gebaut ... das ging eine weile gut aber dann hat es mir fast die Umgebung zerhauen.
Nun hab ich einen 2. Anlauf gestartet - bei dem ich insbesondere für mich das Problem mit den Reverse DNS Einträgen gelöst habe.
Wenn die Exchange Server Emails versenden über IPv6 muss schließlich auch dieses Abfrage das richtige Ergebnis zurück liefern.
Da ich dann noch die ein oder andere Stolperstelle hatte - zum Beispiel das meine Windows-Server zunächst alle 2 IPv6 Adressen statt einer hatten - habe ich mich zu dieser Komplett-Anleitung entschlossen.
Es funktioniert nach dieser Anleitung - aber ggf. solltet Ihr bei dem einen oder anderen Überdenken ob Ihr das nicht anderes gelöst haben wollt.
Ablauf
Nachfolgende beschreibe ich euch in einer hoffentlich sinnvollen Reihenfolge die nötigen Schritte
- Ping freischalten
- Bei https://tunnelbroker.net - Hurricane Electric registrieren
- IPv6 Tunnel aufbauen
- DHCP6 konfigurieren
- Feste IPv6 Adressen im Netzwerk vergeben
- Firewallregeln und NAT
- Reverse DNS für IPv6 einrichten
- SMTP Empfang und Versand für den Tunnel freischalten
Ping freischalten
Für die Registrierung bei einem Tunnel Brocker ist es wichtig das eure öffentliche IPv4 Adresse von extern anpingbar ist.
Und bleibt - sonst klappt der spätere Betrieb nicht.
Du gehen wir unter
Firewall - Rules
und erstellen folgende Regel (falls noch nicht vorhanden):
Und bitte einmal testen ob das wirklich geht bevor Ihr weiter macht!
Wer es unbedingt sonst nicht will: Ihr könnt natürlich bei Source die Server IPv4 Adresse des IPv6 Tunnel Endpoints angeben und bei Destination wählt Ihr dann "WAN address".
Bei Tunnel Broker registrieren und Tunnel einrichten
Geht auf https://tunnelbroker.net/register.php und registriert einen neuen Account. Falls Ihr dort schon einen habt meldet euch mit diesem an.
Im Anschluss könnt Ihr euren Tunnel erstellen über das Menü links:
Im nächsten Schritt sollt Ihr einen Zugangspunkt in der räumlichen Nähe euerer IP auswählen.
Tragt dazu die externe IPv4 Adresse eurer pfSense in das Feld oben ein und wählt dann darunter einen Ort aus der Nähe aus:
Danach seht Ihr eine Übersichtsseite mit euren neuen Tunneldaten:
Bei "Routed IPv6 Prefixes" - "Routed /64" steht euer zukünftiges Netzwerk,
Hier steht da die
2001:470:1f0b:83d::/64
So eine IPv6-Adresse besteht aus 8 Blöcken welche durch :
voneinander getrennt werden.
Die ersten 4 Blöcke sind nun vorgegeben, die nächsten 4 Blöcke sind eure.
Das Netz oben ist in verkürzter Schreibweise dargestellt, ausgeschrieben sieht das so aus
2001:470:1f0b:83d::/64 2001:0470:1f0b:083d:0000:0000:0000:0000 / 64
Ihr dürft dann in euren Bereich folgende Adressen vergeben:
2001:0470:1f0b:083d:0000:0000:0000:0000- 2001:0470:1f0b:083d:ffff:ffff:ffff:ffff
Das sind dann
18.446.744.073.709.551.616
Adressen die Ihr in eurem Bereich vergeben könnt ... 18 Trillionen Adressen, nur für euch, das sollte für eine Weile reichen.
IPv6 Tunnel einrichten
Das geht in mehreren Schritten:
Schritt 1: GIF Interface
Ihr geht auf der pfSense in das Menü
Interfaces -> (assign)
und dort dann auf den Reiter GIF:
und fügt ein neues Interface hinzu.
Dann müsst Ihr die Felder mit den Daten des IPv6 Tunnels befüllen:
gif remote address = Server IPv4 Address gif tunnel local address = Client IPv6 Address gif tunnel remote address = Server IPv6 Address
Hier einmal als Bild:
Danach wechseln wir wieder auf den Reiter Interface assignments und klicken neben den Vorschlag unten auf das Symbol:
Das neue Interface heißt dann erst einmal OPT1 (was wir aber gleich umbenennen) und noch nicht aktiv.
Klickt auf den Namen:
Aktiviert das Interface und gebt dem Ding einen Namen der auf den IPv6 Tunnel schließen lässt.
Den Abschnitt unten mit "Private networks" könnt ihr ignorieren.
Schritt 2: IPv6 Default Gateway setzen
Geht zum Menüpunkt
System -> Routing
und bearbeitet das automatisch erstellte IPv6 Gateway:
Hier müsst Ihr nun den Haken bei Default Gateway setzen:
so das es hinterher so aussieht:
Schritt 3: Internes LAN Interface anpassen
Unser LAN Interface hat bisher nur eine IPv4 Adresse und braucht nun die IPv6 Adresse zusätzlich. Schließlich ist ja intern das Default Gateway für den IPv6 Datenverkehr.
Wir gehen zu:
Interfaces -> LAN
und setzen die IPv6 Konfiguration:
Ihr müsst
- IPv6 Configuration Type auf Static IPv6 setzen
- Die IPv6 Adresse eintragen ...
Aber welche IPv6?
Nun, unser /64 Netzwerk ist in diesem Fall ja die
2001:470:1f0b:83d::/64
Wir erinnern uns: die ersten 4 Blöcke sind vom Tunnelanbieter ... und mit den letzten 4 Blöcken können wir unsere 18 Trillionen Adressen verwalten.
Ich mache es mir nun einfach und setze in den 4 letzten Blöcken immer einfach die IPv4 Adresse ein - nur mit :
statt .
IPv4: 192.168.244.1 IPv6: 2001:470:1f0b:83d:192:168:244:1
So kann ich später auch einfach die Adresse herauskopieren und brauche immer nur die letzten Zahlen ändern.
Dabei ist es egal ob Ihr ein 192.168.x.x, 172.16.x.x oder 10.x.x.x Netz nutzt - es ist genug für alles da!
Die Idee ist natürlich nicht von mir sondern hab ich irgendwo als "Best Practice" aufgeschnappt und für Gut befunden.
IPv6 DHCP Server konfigurieren
Wir wollen nun das sich unsere Geräte im Netzwerk natürlich nicht selbst eine IPv6 suchen (Autokonfig) sondern das diese entweder statisch Konfiguriert sind oder aber per DHCP eine IPv6 bekommen. Dazu gehen wir unter:
Services -> DHCPv6 server
Hier habe ich einfach den gleichen Bereich wie bei dem IPv4 DHCP Server genommen, in diesem Fall:
DHCP IPv4: 192.168.244.151 bis 192.168.244.199 DHCP IPv6: 2001:470:1f0b:83d:192:168:244:151 bis 2001:470:1f0b:83d:192:168:244:199
Bei DNS-Server könnt Ihr zum Beispiel euren interen DNS-Server eintrage, die pfSense oder die Google Server:
Danach gehen wir oben noch auf den Reiter Router Advertisements und stellen diese Option auf
Router Only
Sonst haben Server zum Beispiel gerne mal 2 IPv6 Adressen: Windows 2008 R2 hat 2 IPv6 Adressen aus gleichen Adressbereich
Statische IPv6 Adressen vergeben
Auch bei IPv6 sollen unsere Server feste IP-Adressen haben. In den Netzwerkeinstellungen setzen wie die Adresse wie folgt:
Der Server hier ist in diesem Fall auch DNS Server - deshalb habe ich diesen selbst auch bei DNS eingetragen. (::1
wäre natürlich auch gegangen)
Testen!
geht auf einem Rechner im Netzwerk und lasst diesen
- entweder per DHCP eine IPv6 beziehen
- oder setzt eine feste IPv6 Adresse
Pingt nun die LAN-Schnittstelle der pfSense einmal an.
Danach öffnet einen Browser uns geht auf:
http://test-ipv6.com/
Der Test sollte dann etwas so aussehen:
DNS Einträge für IPv6 beim Provider
Anhand des Beispiels für den Host
cs-vcenter.dghbcstest.local
zeige ich wie wir diesen extern erreichbar machen bzw. dessen Namen von extern auflösen können.
Das typische Szenario ist hierbei das
- das gesamte interne Netzwerk sich eine externe IPv4 teilt - typisches NAT
- Jeder Host in dem Netzwerk aber über eine eigene IPv6-Adresse verfügt die intern und extern nutzbar ist
Die externe Domäne ist in der Regel bei einem Provider wie zum Beispiel 1und1 oder STRATO registriert.
Die obige Domäne dghbcstest.local ist die interne Domäne.
Als externe Domäne verwende ich für diese Demonstration die Domäne znil.de so das wir folgende Ausgangssituation haben:
Interner DNS-Name: cs-vcenter.dghbcstest.local Interne IPv4-Adresse: 192.168.244.200 Externe IPv4-Adresse: 213.168.209.200 (= externe IP Firewall) IPv6-Adresse: 2001:470:1f0b:83d:192:168:244:200 Externer DNS-Name: cs-vcenter.znil.de
Beim Domänen-Hoster erstelle ich hierzu die Subdomäne
cs-vcenter.znil.de
und nehme für diese dann die passenden DNS-Einstellungen vor:
- Die externe IPv4 Adresse der pfSense Firewall
- Die IPv6 Adresse des Host CS-vCenter.dghbcstest.local
Kleiner Test in der DOS-Box:
So - die Namensauflösung funktioniert ... aber der Ping nicht?
Kunststück! Wir haben ganz am Anfang eine Firewall-Regel erstellt die einen externen Ping auf diese erlaubt.
Es gibt aber keine Regel die erlaubt den Ping zu der IPv6 Adresse eines Host im internen Netzwerk durch zu lassen.
Wir müssen also eine Regel dafür erstellen:
Beachtet unbedingt das
- Die Regeln für den IPv6 Datenverkehr für das IPv6-Interface erstellt werden müssen (NICHT WAN!!!)
- In der Regel trotzdem immer auch das IPv6 Protokoll ausgewählt werden muss
Ihr könnt natürlich für den Host auch einen Alias hinterlegen und nutzen statt direkt die IP einzutragen wie auf dem Bild.
Nun klappt der Ping dann aber:
Reverse DNS für IPv6
Der DNS-Name wird nun also erfolgreich auch für die IPv6 Adresse aufgelöst.
Hierzu geht der Weg über den Domänen-Hoster, in meinem Fall 1und1.
Für die Subdomäne ist angegeben das die DNS-Server zuständig sind - und denen haben wir im Abschnitt vorher mitgeteilt wohin diese bitte schön zeigen sollen.
Nun brauchen wir das ganze noch Rückwärts. Wenn wir also nach der IPv6 Adresse fragen soll er uns den Hostnamen zurück geben.
Diese Information muss der Besitzer der IP-Adresse bereitstellen - in diesem Fall also unser Tunnel Broker.
Nun, bei dem dürfen wir aber leider keine DNS-Einträge hierzu machen.
Aber wir dürfen für unseren Tunnel andere DNS-Server setzen!
Also brauchen wir einen eigenen DNS Server. Ich nutze hierzu den Microsoft DNS-Server den ich auf meinem Server einfach nachinstalliert habe.
Als Grundkonfiguration habe ich
- die lokale Domäne
- die IPv4 Reverse-Lookupzone
konfiguriert. Für einen reinen Reverse DNS Server brauchen wir das aber nicht.
Wir brauchen nun zunächst 2 Dinge:
- Eine Forward-Lookupzone für znil.de weil wir sonst keinen Reverse DNS Eintrag dafür machen können
- Eine Reverse-Lookupzone für 2001:470:1f0b:83d::/64
Forward-Lookupzone erstellen
Zuerst erstellen wir die Forward-Looupzone:
Ob diese in eine Datei gespeichert wird oder im Active Directory spielt Technisch keine Rolle - das müsst Ihr wissen.
Hier nutze ich einen Standalone Server der in keiner Domäne ist.
Ich lasse hier für diese Zone keine Updates zu - ich trage hier von Hand die Hosts ein für die ich ein Reverse DNS haben möchte.
Reverse-Lookupzone
Nun noch die Reverse-Lookupzone:
Beim Präfix der IPv6-Adresse geben wir die "Routed /64" unseres Tunnels an (gleichnamiger Eintrag der Tunnel Details Seite des Tunnel Brokers)
Host Eintrag anlegen
.
(Punkt). Also z.B. den Server mail.linz.email
gebt Ihr als mail.linz.email.
an!
Nun legen wir unseren Host in der Forward-Lookup Zone an:
Oben tragt Ihr nur den Hostnamen ein, in dem Feld darunter könnt Ihr sehen das dieser dem DNS Namen entspricht wie er auch beim Provider als Subdomäne angelegt wurde.
Darunter dann die IPv6 Adresse - und setzt den Haken bei Verknüpften PTR-Eintrag erstellen
Markiert danach (1) die Reverse-Lookupzone, drückt danach oben in der Symbolleiste auf Aktualisieren (2) - dann seht Ihr rechts (3) den Eintrag.
Nun können wir den auch gleich lokal testen:
nslookup IPv6 IP-des-DNS-Servers
Als DNS-Servers gebt ihr natürlich den gerade eben eingerichteten ein.
DNS Server von außen erreichbar machen
Damit die Reverse DNS Abfrage nun auch von außen möglich ist brauchen wir wieder 2 Dinge:
- Einen externen DNS-Namen für unseren DNS-Server mit IPv4 und IPv6 Einträgen. Es ist nicht erlaubt hierbei IP-Adressen anzugeben.
- Eine Firewallregel damit der DNS Server auch wirklich von außen zu erreichen ist
In meinem Beispiel ist der DNS Server identisch mit dem Server für den ich ein Reverse DNS machen will.
Deshalb kann ich hierfür auch wieder den DNS-Namen cs-vcenter.znil.de nehmen.
Besser sieht es natürlich aus wenn ich eine weitere Subdomain wie z.B. dns.znil.de anlege und diese auf meinen DNS-Server verweisen lasse.<vr>
Fehlt noch die Firewall-Regel ... und das sind in diesem Fall 1 x NAT und 2 Regeln
- Ein Forwarding (NAT) von Port 53 von der externen IPv4 auf die interne IPv4 Adresse unseres DNS-Servers. Die Notwendige Firewallregel hierzu erstellt die pfSense automatisch.
- Eine Rule für IPv6 die den Zugriff auf Port 53 der IPv6 Adresse des DNS-Servers erlaubt
NAT für IPv4
Wir gehen zu
Firewall -> NAT -> Port Forward
und erstellen eine neues Port-Forwarding:
Achtet unbedingt als Protokoll TCP/UDP zu verwenden!!!
Fertig sieht diese dann so aus:
Die pfSense legt uns dazu auch gleich automatisch eine Rule an unter
Firewall - Rules - WAN
Rule für IPv6
Wir gehen zu
Firewall -> Rules -> HENETV6
also auf den IPv6 Tunnel und erstellen folgende Regel:
Achtet unbedingt als Protokoll TCP/UDP zu verwenden!!!
Zum Testen sollten nun natürlich einen Rechner nehmen der außerhalb in einem anderen Netzwerk steht.
Macht wieder eine nslookup Abfrage mit der Angabe des DNS-Servers
DNS-Server beim Tunnel Broker angeben
So, wir haben nun also einen funktionierenden DNS Server der Rückfragen zu unserem 18 Trillionen IPv6 Adressen beantworten kann UND der von außen über einen DNS-Namen erreichbar ist.
Diesen tragen wir nun noch noch beim Tunnelbroker ein:
Netter weise reicht hier schon ein DNS-Server.
Testen!
Nun fragen wir doch mal den google-DNS Server ob er einen Reverse-DNS Eintrag für unsere IPv6 Adresse finden ...
Falls das nicht gleich funktioniert - GEDULD! probiert es halt in ein paar Stunden noch einmal.
Wie die Abfrage erfolgt kann man auch schön sehen wenn Ihr eure IPv6 IP hier angebt:
http://www.simpledns.com/lookup-dg.aspx
Da seht Ihr wie er sich bis zu eurem IPv6 rDNS Server durchhangelt.
Falls es nach mehr als 24h immer noch nicht geht (im Normalfall geht es nach wenigen Minuten) so schreibt eine EMail an
ipv6@he.net
mit euren Tunneldaten und eurem Problem das die Einstellungen für die Rverse DNS-Server nicht greifen. (Aber nur wenn ihr auch über http://tunnelbroker.net euren Tunnel erhalten habt!)
Ich hatte das Problem bei 2 von 4 Tunneln. Das ist ein Fehler bei HE.net der auftreten kann falls jemand den Tunnel von euch schon mal vorher hatte UND derjenige an den DNS-Daten was geändert hatte.
SMTP Versand un Empfang freischalten
Bei HE.net ist pauschal der Versand und Empfang von EMails über Port 25 gesperrt.
Diesen könnt Ihr bei http://tunnelbroker.net unter Advanced:
Jetzt ist diese Option bei euch wahrscheinlich nicht vorhanden bzw. gepserrt.
Und wie entsperrt Ihr diese Option?
In der FAQ steht das meine eine Email an den Support schreiben sollt.
Der wird euch Antworten das Ihr den IPv6 Test bestehen sollt, dann wird die Option automatisch frei geschaltet.
Den Test findet Ihr unter
https://ipv6.he.net/certification/
Da meldet Ihr euch mit den gleichen Zugangsdaten wie für den Tunnel an.
Und dann macht Ihr den Test. Jede Stufe kann einzeln gemacht werden, unter anderem Testen die dort auch ob einbe Domäne von euch per IPv6 zu erreichenist und ob das Reverse DNS funktioniert.
Wenn Ihr obiges fertig habt also an sich kein Problem.
Ich war in einer Stunde damit durch - dabei musste ich mal eben den Mailempfang über IPv6 aktivieren etc.