IPFire: OpenVPN Site2Site Tunnel über DS-Lite oder Telekom Magenta Hybrid

Wer aktuell mit einem Unitymedia oder einem Telekom Hybrid LTE Anschluss einen Standort mit seinem Hauptstandort verbinden möchte, wird früher oder später auf das Problem stoßen, dass man dank der IP Adressen Knappheit keine eigene IPv4 Adresse mehr von seinem Provider bekommt. Sondern über einen sogenannten DS-lite Tunnel, der sich hinter einem NAT-Gateway befindet, sich ins Internet Verbindet. Somit teilt man sich eine öffentliche IPv4-Adresse mit mehreren Leuten.
Es ist also keine Freigabe mehr von Ports über IPv4 möglich.
Ich habe sehr lange nach einer Lösung für dieses Problem gesucht und möchte diese hier einmal für euch Dokumentieren.

Vorwort

  • Benötigt wird in beiden Standorten eine IPfire die dort auch als Gateway im Netzwerk fungiert.
  • Es muss gewährleistet sein das beide Standorte sich in einem eigenen Subnetz befinden
  • Der Hauptstandort benötigt eine Statische IPv4 Adresse, optional ein DynDNS

Konfiguration

Konfiguration von Hauptstandort:
Wir öffnen das Webinterface der Ipfire in meinem Fall ist dieses erreichbar unter https://10.0.0.1:444. Dort angekommen gehen wir auf Services/OpenVPN.
(Wenn wir das erste Mal die OpenVPN Konfigurationsseite öffnen, werden wir darauf hingewiesen ein Zertifikat zu generieren. Hier wählt ihr am besten einen 2048bit Schlüssel aus und warte ab bis dieser erstellt ist, was je nach Hardware einige Zeit dauern kann.)
Ist das abgeschlossen landen wir im eigentlichen Konfigurationsmenü von OpenVPN

Wir klicken auf Add und erstellen uns ein Net-to-Net Virtual Private Network

mit einem weiteren Klick auf Add kommt man in das Einstellung der N2N VPN Verbindung.

Name: Hier vergibt man am besten den Namen des Standorts, der für den Tunnel vorgesehen ist.
Act as: bleibt auf OpenVPN Server stehen.
Remote host/IP: dieses Feld wird hier leer gelassen, somit erlauben wir die Einwahl von jeder IP-Adresse (später kann dies mit Firewallregeln abgesichert werden)
Local subnet: Hier tragen das Subnetz unseres Hauptstandorts ein,
in meinem Fall: 10.0.0.0/24
Remote subnet: Hier tragen wir das Subnetz unseres standortB ein, in meinem Fall: 10.0.1.0/24
OpenVPN subnet: Wichtig ist hier eine IP Range zu wählen die zukünftig nicht in Verwendung ist, da wir hier nur 2 IP Adressen benötigen reicht uns eine /30 IP Range 172.30.60.0/255.255.255.252
Destination port: Hier vergeben wir einen Port über den später die VPN Verbindung abläuft. (Dieser Port ist unabhängig von den normalen OpenVPN Server Einstellungen, in meinem Fall: 9988)
Manage Port: Hier tragen wir den selben Port ein der auch bei Destination Port vergeben wurde.

MTU settings

Hier kann vorerst alles auf Standardeinstellungen gelassen werden.
Um später mit der Performanz noch etwas zu experimentieren, können hier die Einstellungen getestet werden. z.B. LZO-Compression

Cryptographic options

Encryption: AES-CBC (256 bit, Default)
Hash algorithm: SHA2 (512 bit)

Authentication

User's full name or system hostname: standortB

Zum Abschluss klicken wir auf Save.
Wir starten das VPN Interface mit dem Klick auf die Checkbox im Menüpunkt Action.

Um unser Zertifikat zu erhalten klicken wir bei OpenVPN Net-to-Net auf Download Client Package (zip). Hier erhalten wir unsere standortB-Client.zip, die wir in unserem nächsten Schritt benötigen.

Als nächstes melden wir uns auf der IPFire an standortB im Webinterface an. (Die eine Verbindung zu unserer Haupt- IPFire aufbauen soll.)

Dort Wechseln wir in die OpenVPN Konfiguration und klicken auf Add.
Hier laden wir unsere zuvor Heruntergeladene standortB-Client.zip hoch.

Ein Klick auf Add zeigt uns nochmals die von uns gesetzten Einstellungen. Wir akzeptieren das mit einem weiteren Klick auf Add.
Als letzten Schritt muss das eben von uns angelegte VPN-Interface mit einem Klick auf die Checkbox gestartet werden.
Die Statusleiste sollte uns jetzt Connected anzeigen. Somit steht unsere Verbindung!