OpenVPN Sit to Site Verbindung



  • Hallo,

    seit nun ein paar Tagen habe ich pfSense produktiv im Einsatz und möchte nun zwei Standorte via OpenVPN verbinden.

    Den einen pfSense Router an Standort A habe ich als Server eingerichtet, den an Standort B als Client. Außerdem habe ich in der Firewall am WAN Anschluss den entsprechenden Port freigegeben, sowie unter dem Reiter OpenVPN sämtlichen Traffic.

    Wenn ich das recht verstanden habe muss ich nun noch die beiden Netze, bzw drei mit dem VPN Tunnel, entsprechend zueinander routen. Hier allerdings finde ich kein entsprechendes Howto oder ähnliches.

    Wäre schön, wenn mir einer kurz erklären könnte was ich noch tun muss und ob das was ich so bereits eingestellt habe korrekt ist.

    Ziel ist es, Standort a und B so zu vernetzen als ob sie in einem lokalen Netz wären.

    Vielen Dank schon einmal für eure Hilfe.

    Joe

    BTW. Kennt einer eine gute Deutsche Anlaufstelle für pfSense Howto´s? Ich habe das pfSense Buch und auch die Howto´s auf der Homepage gelesen und manchmal macht einfach mein Englisch nicht mehr mit, bzw ich verstehe nicht ganz was da genau steht. Wäre schön, wenn ich das ganze noch mal auf Deutsch verifizieren könnte. Vielleicht wird dabei mein Englisch gleich auch wesentlich besser… ;-)



  • Hallo Joe,

    hast Du dir diese Anleitung schon mal angesehen?
    http://doc.pfsense.org/index.php/OpenVPN_Site-to-Site_(Shared_Key,_2.0)



  • Hallo,

    die 3 wichtigen Begriffe bzw. Funktionen zum Routen lauten:

    route 192.168.20.0 255.255.255.0;
    push "route 192.168.30.0 255.255.255.0";
    iroute 192.168.30.0 255.255.255.0;
    

    Auf dem Client gibst du mit "iroute" das netz an, welches sich quasi auf der LAN Schnittstelle befindet
    Dem Client sagst du entweder auf dem Client, welche Netze er ins VPN route soll (route x.x..x.x y.y.y.y;) oder du pushst die route vom server, das erspart vermutlich arbeit wenn du mehrere clients mal anbinden solltest (push "route x.x.x.x y.y.y.y";)

    Den Befehl "iroute" musst du auf dem OpenVPN Server nicht ausführen, das macht er selbst - soweit ich weiss.



  • @ all Vielen Dank erst einmal für eure Antworten.

    @g0rF Ja das Dokument habe ich schon gelesen. Aber entweder ist mein Englisch nicht das beste oder da steht nichts über das routen einer VPN Verbindung. Wie schon gesagt, der eigentliche Tunnel steht und wird mir im Dashboard auch als "UP" angezeigt. Es geht mir im speziellen um das einstellen der Routen damit ich von Netz A in das Tunnelnetz und dann nach Netz B komme. Natürlich auch umgekehrt.

    @Nachtfalke Vielen Dank für die ausführliche Erklärung. Leider habe ich mit der Shell noch weniger Erfahrung als mit dem Webfrontend von pfSense. Außerdem, wenn ich das recht verstehe erläuterst du die Verbindung von einem Client in ein Netz über VPN, oder? Ich dachte eher an etwas wie: Netzwerk-A<->pfSense<->VPN-Tunnel<->pfSense<->Netzwerk-B

    Nochmals vielen Dank für die Hilfe

    Joe



  • @BOSSJoe
    Was ich beschreibe ist genau das, was du hier beschreibst:
    @BOSSJoe:

    Ich dachte eher an etwas wie: Netzwerk-A<->pfSense<->VPN-Tunnel<->pfSense<->Netzwerk-B

    Die Befehle sind normale OpenVPN befehle und stehen auf der OpenVPn seite und an vielen andere Stellen im Netz beschrieben. Eingeben kannst du diese in den "custom options" sowohl beim OpenVPN server als auch beim OpenVPN client - alles über GUI - keine shell.  ;)

    –-- EDIT ----
    Hier ein Link aus dem Forum:
    http://forum.pfsense.org/index.php/topic,35476.0.html



  • Hi Nachtfalke,

    vielen Dank für die Antwort. Da hab ich mich wohl etwas vertan bei meiner Vermutung, bitte entschuldige.

    Werde heute gleich mal die von die gepostete Methode testen, bin ja gespannt.

    Ich würde mich gerne noch ein bisschen mehr mit OpenVPN beschäftigen und mehr darüber lesen. Kannst du mir vielleicht etwas empfehlen? Gerne auch in Englisch wenn es nicht zu schwer zu lesen ist.

    Wäre echt super.

    Joe



  • Hi,

    ich google immer speziall nach dem Problem, das ich lösen möchte. Habe jetzt nur das mal als Übersichtsseite gefunden - keine Ahnung wie gut das ist. Stichwort "wiki" und "openvpn" bei google eingegeben.

    http://wiki.openvpn.eu/index.php/Hauptseite
    ansonsten hier:
    http://openvpn.net/index.php/open-source/documentation/howto.html



  • So,

    habe jetzt mal ein wenig mit den oben genannten Tipps probiert. Irgendwie habe ich das schlimmer gemacht als vorher.

    Am Anfang hatte ich ja wenigstens die VPN Verbindung auf "Up" im Dashboard. Jetzt bekomme ich gar keine Verbindung mehr zustande.

    Also Site to Site Verbindung geht nicht,

    also habe ich mal mit Versucht mit meinem Laptop und pfSense eine OpenVPN zu etablieren. Irgendwie bekomme ich aber immer eine Fehlermeldung. Auf pfSense läuft ein OpenVPN Server mit Port 1194 und ich habe die Einstellungen mit Client Export auf meinen Win7 Laptop exportiert. Windows Firewall ist aus und die Firewall Regeln auf pfSense stimmen auch.

    Also warum geht das den nun nicht???

    Port habe ich dann mal auf 4444 umgestellt, falls es irgendwo einen Portkonflikt gibt. Half aber auch nicht.

    pfSense hängt direkt an einem Unitymedia Kabelmodem mit Dynamischer IP und der Laptop geht über WWAN ins Netz…

    Vielen Dank noch einmal für die Hilfe

    Joe



  • @BOSSJoe:

    (…)
    Also warum geht das den nun nicht???
    (...)

    Weil du vermutlich etwas nicht richtig gemacht hast ;-)

    Also du solltest erstmal ein normales RoadWarrior Setup hinbekommen, das heisst, dass die pfsense der OpenVPN Server ist und du deinen Laptop mit dem openVPN Client, welchen du über das Client Export utility bekommst, zum Laufen bekommst.

    Weiterhin kannst du - wenn eine andere pfSense ein OpenVPN Client sein soll - nur die Optionen (Peer-to-Peer SSL/TLS, Peer-to-Peer SharedKey, oder RoadWarrior SSL/TLS) nutzen. Einen Benutzernamen/Passwort kannst du in dieser Konfiguration logischerweise nicht nutzen.

    Zum RoadWarrior Thema mittels SSL/TLS am OpenVPN Server:
    Remote Access: RoadWarrior SSL/TLS
    Protocol: UDP
    Local Port: 1194
    Device Mode: tun


    Zertifikate auswählen, DH 2048,
    Certificate Depth: One (Server+Client)

    Tunnel Network: Das Subnet für den VPN Tunnel.


    Concurrent connections: mindestens 1


    Save.

    Client Export utility:
    Windows Installer.

    Firewall rules auf der pfSense:
    OpenVPN tab:
    Allow any to any with any protocol.

    Du solltest dann von deinem laptop auf die pfSense kommen und auch auf alle Geräte hinter der pfsense soweit diese Geräte bzw. deren Firewall es erlauben.

    Alternativ kannst du auch beim Server statt "RoadWarrior SSL/TSL" auch "Peer-to-Peer SharedKey" ausprobieren.



  • Vielen Dank für die ausführliche Beschreibung.

    Habe es dann mal genauso eingerichtet und bekomme immer noch keine Verbindung.

    Jetzt hab ich mir mal Wireshark installiert und bekomme dann immer folgende Meldung: ICMP destination is unreachable (host administratively prohibited)

    Aber ich habe doch gar keine Firewalls mehr am laufen…???

    Ich bin echt ratlos.

    Joe



  • OK habe den Fehler gefunden. Der saß wie so meist vor dem Bildschirm.

    Irgend etwas hatte ich beim DynDNS Dienst falsch eingestellt und somit natürlich die falsche IP für meinen Anschluss.

    Jetzt bekomme ich einen Tunnel zu stande.

    Allerdings bekomme ich die IP zugewiesen die ich für das Tunnel Netzwerk konfiguriert hatte.

    Unter Advanced configuration habe ich push "route 192.168.0.0 255.255.255.0" eingetragen

    Sollte ich dann nicht in das 192.168.0.0 Netz kommen?

    Joe



  • Hallo Joe,

    wenn du die Option "Force all client generated traffic through the tunnel." gesetzt hast, dann wird sämtlicher traffic von deinem Laptop, egal wohin er geht, in den VPN Tunnel geleitet. Das könnte man als "full tunneling" bezeichnen, weil einfach alles in den VPN tunnel geht aber nicht mehr über deinen eigentlichen WWAN Gateway.

    Es gibt aber auch Einsatzgebiete, wo es Sinn macht, dass man nur einen Teil der Verkehrs durch das VPN leitet und den Rest direkt ins Internet. Ein Beispiel wäre folgendes:

    Du bist zu Hause an deinem Laptop, möchtest youtube.com ansurfen, googlen, bundesliga.d etc. anschauen. Hier würde es ja Sinn machen, diese Daten direkt ins Internet zu routen und nicht erst durch den VPN zur Arbeit und von dort ins Netz und aus dem Netz erst zur Arbeit, durch den VPN zu dir.

    Um das zu realisieren, muss man den Traffic aufsplitten, das geschieht durch "split tunneling". Das heisst, du deaktivierst die Funktion "Force all client generated traffic through the tunnel.", musst nun aber deinem OpenVPN Client sagen, welche Ziel IP Adressen er denn durch den VPN Tunnel senden soll und welchen er direkt ins Internet senden soll.

    Das bedeutet, auf deinem Client werden Routen eingerichtet. Routen, die als gateway den VPN Tunnel haben und eine default route (0.0.0.0) welche jeglichen sonstigen Verkehr zu deinem WWAN Gateway sendet.

    Du könntest jetzt natürlich über cmd.exe auf deinem Windows Rechner immer, nachdem du den OpenVPN client gestartet hast, die Routen eintragen, die über das VPN sollen, das hätte den gleichen Effekt, wäre aber bei vielen OpenVPN clients umständlich und nicht praktikabel. Deswegen kannst du deinem OpenVPN Server anweisen, dass er, sobald sich ein Client mit ihm verbindet, er bitte entsprechend Routen zu setzen hat. Da der Client die Route "nicht selbst setzt", sondern diese vom Server "gesetzt bekommt", heisst der Befehl:

    push "route 192.168.0.0 255.255.255.0";
    

    Das bedeutet, der Server "schiebt" eine Routenanweisung an den Client und der Client führt dann den Befehl:

    route 192.168.0.0 255.255.255.0;
    

    aus. Man muss also nur einmal einen "push" Befehl am Server konfigurieren und alle Clients bekommen die Anweisung.

    Hast du also "Force all client generated traffic through the tunnel." gesetzt, sagt der Server dem client (push) er soll alles übers VPN routen.
    Hast du "Force all client generated traffic through the tunnel." nicht gesetzt, erwartet der VPN Client hingegen Anweisungen, was er denn nun routen soll.

    Hast du nur ein einziges Subnet, was geroutet werden soll, dann kannst du das beim OpenVPN Server in der GUI unter "Local Network" eintragen. Wenn du mehrere Subnetze routen willst, musst du das dem OpenVPN Server sagen. Da es in der GUI aber nur ein Feld zum eintragen gibt, musst du dir eben mit den "echten" OpenVPN Befehlen behelfen und diese in den "Custom Options" eintragen.

    Du musst dir also vorher klar machen:
    von wo nach wo soll etwas transferiert (Daten) werden?
    Wer muss welche Routen kennen?
    Wo muss ich die Routen eintragen (server und/oder client)?

    Zeichne dir am Besten ein Bild auf mit jedem Standort. Welche Subnetze dieser Standort hat und dann schreibst du dir auf, welche Standorte diese Subnetze nicht kennen und deswegen eine Route bekommen müssen, um diese Netze zu finden.

    Die Funktionen "Site-to-Site bzw. Peer-to-Peer" als auch "RoadWarrior" haben keinen funktionellen Unterschied, sie blenden lediglich verschiedene Funktionen in der OpenVPN GUI ein und aus, weil manche Optionen nicht zur Verfügung stehen oder aber es dafür nur eine einzige Konfigurationsmöglichkeit gibt. Lediglich die Option "Username/Password" ist nicht möglich wenn du 2 pfsense miteinander verbinden willst, denn die pfsense kann keinen Benutzernamen und kein Passwort eingeben. Das kann eben nr ein real life benutzer. pfsense kann nur Zertifikate vorzeigen bzw. einen SharededKey.

    –-edit---
    Das könnte helfen und beschreibt eigentlich die Konfiguration:
    http://forum.pfsense.org/index.php/topic,12888.0.html


Log in to reply