VPN: wie von einem VPN zum anderen routen?



  • Hallo,

    ich habe eine pfSense, die dauerhaft mit einem andern Netzwerk via VPN verbunden ist. Das Netz der pfSense ist 192.168.2., dass des via VPN verbundenen Netzwerks 192.168.10.. Von zu Hause, also hinter der pfSense, kommt ich natürlich in beide Netze. Nun wollte ich mich aber von unterwegs aus via OpenVPN auf meine pfSense verbinden. Das funktioniert auch problemlos, ich komme auch auf das "Heimnetz" der pfSense (192.168.2.) aber leider nicht auf dass des anderen VPN-Netzwerks (192.168.10.). Ich nehme an, man muss pfSense irgendwie sagen, dass VPN-Traffic von außen auch auf das verbundene 2. VPN-Netz zugreifen darf, richtig? Wie und wo mach ich das?

    Vielen lieben Dank und schönes Wochenende!



  • Hallo,

    die Routen sind in den VPN-Konfigurationen festzulegen. Daher wäre es interessant zu wissen, welche VPNs du verwendest.

    Ich gehe mal davon aus, dass du als Access Server auf der pfSense OpenVPN eingerichtet hast. Wenn du da nicht "Redirect gateway" gesetzt hast, musst du das Remote-Netz, also 192.168.10.*, in CIDR-Notation zu den "Local Networks" hinzufügen, damit der Client die Route gepusht bekommt.

    In ähnlicher Weise musst du dem Router, mit dem die pfSense eine Site-to-Site VPN hat, mitteilen, dass das Access-Server Tunnel-Netz über die VPN zu routen ist. Also wäre es eine pfSense OpenVPN, das Access-Tunnel-Netz zu den "Remote Networks" hinzufügen.

    Bedenke auch, dass die Firewall-Regeln zu Zugriffe erlauben müssen.

    Grüße



  • Vielen lieben Dank für die ausführliche Antwort!
    Leider bin ich ziemlicher Neuling und ich habe Schwierigkeiten einige der Dinge, die du schreibst zu verstehen.

    Ich verwende auf beiden Seiten pfSense und beim Client verwende ich Viscosity auf dem Mac bzw. den OpenVPN-Client unter Android.

    Die Option "Redirect gateway" konnte ich bei den Konfiguriermöglichkeiten des OpenVPN-Servers nicht finden. Wo muss ich dort denn das Remote-Netz eintragen? Wäre das dann sowas wie "push "route 192.168.10.0 255.255.255.0"" unter "Custom options"?

    Werden die Firewall-Regeln nicht automatisch generiert? Ich habe bei den Outbound-Regeln nämlich "Automatic outbound NAT rule generation." gewählt.

    Vielen Dank!



  • Die Option "Redirect Gateway" gibt es beim Access Server, also bei dem für die Clients, im Abschnitt "Tunnel Settings". Diese Option bewirkt, dass sämtlicher Traffic über die VPN läuft, also auch Zugriffe auf das Internet. Technisch veranlasst diese Option, dass der Client seine Standardroute nach Aufbau der VPN auf den VPN-Server umstellt.
    Vermutlich ist das gar nicht das, was du haben möchtest, musste aber in diesem Zusammenhang erwähnt werden, nachdem du sehr wenig über deine Konfiguration verraten hast.

    Ich nehme also an, du möchtest diese Option nicht verwenden und nur die Netzwerke hinter den Firewalls erreichen.

    Dann musst du folgende 2 Konfig-Schritte machen:

    • In den Einstellungen des Access Servers hast du vermutlich im Abschnitt "Tunnel Settings" bei "IPv4 Local network(s)" diesen Eintrag: "192.168.2.0/24". Hier ist das Remote-Netz hinzuzufügen, der Eintrag sollte dann so aussehen:
    "192.168.2.0/24,192.168.10.0/24"
    
    • In den Einstellungen der Site-to-Site VPN auf der Remote-Seite, ich nenne sie mal Site B, sollte der Eintrag bei "IPv4 Remote network(s)" so aussehen: "192.168.2.0/24".
      Hier musst du das Tunnel-Netzwerk des Access-Servers hinzufügen. Angenommen dieses ist 10.0.8.0/24, sollte der Eintrag hinterher so aussehen:
    "192.168.2.0/24,10.0.8.0/24"
    

    Die Push-Route Einträge in den Custom Options zu setzen würde auch funktionieren, ist aber nicht nötig und fehleranfällig.

    Die Firewall-Regeln werden automatisch gesetzt, wenn du die Einrichtung mit dem Wizard machst. Meines Wissen wird da einfach alles erlaubt (also Source = any, Destination = any). Solltest du das aber auf ein bestimmtes Netz eingeschränkt haben, ist zu bedenken, dass du die Regel anpasst.



  • Zunächst mal vielen, vielen Dank für deine Mühen viragomann!

    Auf meinem Access Server habe ich leider keine Option "IPv4 Local network(s)" unter "Tunnel Settings". Dort habe ich nur "IPv4 Tunnel Network" und "IPv4 Remote network(s)". Als Server-Mode habe ich "Peer to Peer". Liegt es daran?


  • LAYER 8 Moderator

    Ahoi,

    dann muss dein Transfernetz, aus welchem du eine IP bekommst bei der VPN Einwahl mit deinem Client (nehmen wir mal das Default Netz 10.8.0.0/24) mit in die Routing Tabellen der beiden Endpunkte deines Peer to Peer Tunnels. Sprich: die pfSense auf der du dich auch einwählst (#1) muss in den Tunnel Einstellungen das Transfernetz zusätzlich als "local network" haben und die andere Seite muss das Netz bei "remote network" mit drin haben, so dass dein entferntes Netz (192.168.10.x) auch eine Route hat für dein OpenVPN Einwahl Netzwerk. Ohne die kommen die Pakete nicht zurück.

    Je nachdem ob du das mit Client/Server oder Peer to Peer machst (letzteres wohl), muss das bei der Einstellung der entsprechend anderen Seite mit rein. Also dort wo du auf der .10.x-er Seite das 192.168.2.0/24 eingetragen hast, muss auch noch das Netz mit dazu, welches du für die OpenVPN Einwahl via Client nutzt.

    Andere Variante wäre, abgehend über das OpenVPN Interface den Traffic aus dem Einwahlnetz zu NATten, dann hätte sich das Problem wohl auch schnell erledigt.

    Gruß



  • @amorph:

    Auf meinem Access Server habe ich leider keine Option "IPv4 Local network(s)" unter "Tunnel Settings". Dort habe ich nur "IPv4 Tunnel Network" und "IPv4 Remote network(s)". Als Server-Mode habe ich "Peer to Peer". Liegt es daran?

    Vermutlich ja.

    Die pfSense biete 2 OpenVPN Server-Typen:

    • Peer to Peer

    • Remote Access

    Beide mit verschiedenen Authentifizierungsmöglichkeiten.

    "Peer to Peer" ist für eine fixe Verbindung zwischen zwei Punkten gedacht, "Remote Access" für die bedarfsweise Einwahl von Clients wie Roadwarrior.
    Im Grunde ist beides dasselbe und du kannst dich mit einem beliebigen Client auf mit einem Peer to Peer Server verbinden, doch bietet jede der Typen angepasste Konfigurationsmöglichkeiten für den jeweiligen Bedarf.

    Um hier Klarheit zu schaffen und einen Schritt weiter zu kommen, wäre es zielführend, wenn du etwas mehr über dein Setup verraten würdest. Gib jedem Netz einen Namen und verrate uns deine genaue VPN-Konfig., am besten per Screenshot. Wir tappen aktuell etwas im Dunkeln.

    Grüße



  • Nochmals vielen Dank.

    Ich habe mal ein paar Screenshots erstellt. Zunächst einen meiner Home-pfSense pfSense_oVPN_LocalServer- das ist die Konfiguration für meine Verbindung von außerhalb mit dem Laptop zu meinem Netz zu Hause, damit habe ich Zugriff auf 192.168.2., aber leider NICHT auf 192.168.10..
    pfSense_oVPN_LocalClient ist die Client-Config meines Home-pfSense, die eine erfolgreiche Verbindung zum Remote-Netz (192.168.10.) aufbaut. Von zu Hause habe ich somit neben dem Homenetz (192.168.2.) auch Zugriff auf das Remote-Netz (192.168.10.).
    Wenn ich mich nun aber mit dem Laptop zu meinem Home-Netz verbinde, dann habe ich zwar auf 192.168.2.
    Zugriff, aber eben leider nicht auf das verbundene Remote-Netz (192.168.10.*). Die oVPN-Config des Clients sieht so aus:

    remote xx.xx.xx.xx 1194 udp
    persist-tun
    secret secret.key
    dev tun
    persist-key
    route 192.168.2.0 255.255.255.0
    resolv-retry infinite
    ping-timer-rem
    auth SHA1
    ifconfig 192.168.220.2 192.168.220.1
    cipher AES-256-CBC
    keepalive 10 60

    Leider funktioniert das mit den Attachments aktuell nicht, deswegen die Bilder als Links:

    pfSense_oVPN_LocalServer -> https://drive.google.com/file/d/0B96e3UArUvorNFljSExuSUg3MUU
    pfSense_oVPN_LocalClient -> https://drive.google.com/file/d/0B96e3UArUvorTXRlVE1tVmpsZzQ



  • Hallo,

    wie oben schon geschrieben, dein pfSense_oVPN_LocalServer hat den falschen Typ. Für den Zugriff durch verschiedene Clients sollte es ein Access Server sein, dann hast du auch die nötigen Optionen zur Verfügung.

    Dieser Servertyp sieht nicht vor, Routen auf den Client zu pushen. Den Zugriff auf das interne Netz ermöglicht dir nur die Zeile "route 192.168.2.0 255.255.255.0" in der Client Konfiguration, diese hast du vermutlich selbst geschrieben.
    Nun, du kannst ebenso eine zusätzliche Zeile für das 192.168.10.0/24 Netz hinzufügen, also "route 192.168.10.0 255.255.255.0".
    Zusätzlich musst du am Remote Server die Route für das Client-Tunnel-Netz setzen, wie oben beschrieben.

    Empfehlen würde ich aber, den Server Typ zu ändern. "Access Server (User Auth)" wäre das entsprechende Pendant dazu, also Authentifizierung nur mit Username + Passwort, ohne SSL-Zertifikate.
    Dann kannst du die Optionen setzen, wie oben beschrieben. Zudem lässt sich dann die Konfiguration für die Clients exportieren und muss nicht manuell erstellt werden, für Windows auch samt Client-Software.



  • Hallo, gute Erläuterung des Verfahrens;

    Hast du auch eine Beschreibung, wenn statt OpenVPN eine IPSecVPN verwendet wird (ist dann ein zweiter Tunnel aufzumachen oder muss eine Route im Zugangsnetz definiert werden?

    Site-to-Site-VPN: pfSense1: 192.168.1.0/24 (NET1) <-> pfSense2: 192.168.0.0/24 (NET2)

    Parallel zu NET2 ex. NET3-NET5 auf pfSense2; nun möchte ich neben dem Zugriff auf NET2 (funktioniert) auch Zugriff auf NET3 (192.168.2.0/24); dito. bei Mobile-Einwahl

    Grüsse



  • Hallo,

    eine Anleitung dazu findet sich in den pfSense Docs.
    Bin bei IPSec nicht der Experte, ich verwende es nicht (mehr).

    Aber im Grunde ist der Phase 1 für jedes Subnetz, das erreichbar sein soll eine Phase 2 hinzuzufügen.
    Für 192.168.0.0/24 hast du wohl schon eine Phase 2 konfiguriert. Kopiere diese einfach und passe das Subnetz an, an beiden Seiten!
    Die Subnetze kannst du natürlich auch zusammenfassen, wenn möglich.
    Für den Zugriff durch Roadwarrior, die sich auf pfSense 1 einwählen, muss als "Local network" auf pfSense 1 bzw. "Remote network" auf pfSense 2 natürlich deren Tunnel-Subnetz stehen.


Log in to reply