OpenVPN fixe IP vergeben



  • Hi Community,

    ich habe nun auf meiner Test PFsense OpenVPN installiert.

    Ich habe dazu noch ein zwei Fragen an die Profis:

    Ich habe über den OpenVPN Wizzard die OpenVPN Verbindung erstellt.
    Danach habe ich mehrere Benutzer angelegt und für jeden Benutzer ein Zertifikat ausgestellt.

    Im nächsten Schritt habe ich über den OpenVPN Export in der Pfsense die ".Install" Datei gezogen und auf den jeweiligen PC´s installiert.

    PC1 –-> Zertifikat für Benutzer -- dominik
    PC2 ---> Zertifikat für Benutzer -- philipp
    Per Konfiguration anpassen habe ich die IP Adresse noch durch mein "DynDNS" ersetzt und gespeichert.

    Das Virtuelle Netz für den Tunnel lautet " 10.1.1.0 /24.

    Nach dem installieren von Openvpn wird die Verbindung zuf Pfsense und meine Verzeichnisse " C:\Programme\Openvpn... sehen wie folgt aus:

    einmal habe ich den Pfad config und den Pfad sample Config per Screenshot eingestellt.

    Nun zu meinen Fragen:

    • wie kann ich nun für die Benutzer immer die gleichen IP Adressen vergeben, dass z.B. Benutzer dominik immer die IP Adresse 10.1.1.20 /24 bekommt.

    Ich habe im Netz gelesen, dass was in der Server.conf angepasst werden muss.
    Aber wo genau ? diese habe ich nur unter dem PFad C:....\sample conf ---> diese kann ich aber nicht editieren.


    Wenn ich in der Pfsense in die OpenVPN Einstellungen schaue habe ich unter dem Punkt "Clients" keine Zertifikate erstellt.

    Ist dieser Punkt " Clients" nur für Site to Site Verbindungen gedacht ?


    • In den Einstellungen gibt es den Punkt " Force all Client generatet traffic thorugh the tunnel".

    Ist es zu empfehlen den traffic über den Tunnel zu leiten ?

    Danke im voraus

    Grüße PHilipp

    ![config Pfad.PNG](/public/imported_attachments/1/config Pfad.PNG)
    ![config Pfad.PNG_thumb](/public/imported_attachments/1/config Pfad.PNG_thumb)
    ![sample config pfad.PNG](/public/imported_attachments/1/sample config pfad.PNG)
    ![sample config pfad.PNG_thumb](/public/imported_attachments/1/sample config pfad.PNG_thumb)
    ![openvpn clients.PNG](/public/imported_attachments/1/openvpn clients.PNG)
    ![openvpn clients.PNG_thumb](/public/imported_attachments/1/openvpn clients.PNG_thumb)



  • Hi PHilipp,

    wie kann ich nun für die Benutzer immer die gleichen IP Adressen vergeben, dass z.B. Benutzer dominik immer die IP Adresse 10.1.1.20 /24 bekommt.

    Die /24 ist etwas groß - wenn dann ein /30 Netz für den einzelnen Client –> https://openvpn.net/index.php/open-source/faq/77-server/273-qifconfig-poolq-option-use-a-30-subnet-4-private-ip-addresses-per-client-when-used-in-tun-mode.html
    Denke das hier hilft Dir mit der eigentlichen Frage weiter --> https://fastinetserver.wordpress.com/2013/03/09/pfsense-openvpn-static-ip-for-clients/
    Ansonsten sind das deine Schlagwörte bei Google -> https://www.google.de/webhp?hl=de#hl=de&q=pfsense+openvpn+static+ip+client

    Wenn ich in der Pfsense in die OpenVPN Einstellungen schaue habe ich unter dem Punkt "Clients" keine Zertifikate erstellt.
    Ist dieser Punkt " Clients" nur für Site to Site Verbindungen gedacht ?

    Genau - wenn deine pfSense als Client in einem anderen Netz agieren soll.

    In den Einstellungen gibt es den Punkt " Force all Client generatet traffic thorugh the tunnel".
    Ist es zu empfehlen den traffic über den Tunnel zu leiten ?

    Kommt ganz darauf an wie Du es brauchst. Wenn es nicht aktiv ist wird nur jeder Traffic in den Tunnel geroutet der dem Netz dahinter entspricht, der rest geht über dein noramles Gateway und ins Internet.
    Wenn du es aktivierst geht jeder Traffic (lokales Netz nicht) über den VPN Tunnel. Du surfst dann komplett durch den Tunnel mit der externen IP der pfSense.

    Hoffe ich konnte Dir helfen  ;)



  • Hi Bene,

    danke dir für die Antworten.

    Die /24 ist etwas groß - wenn dann ein /30 Netz für den einzelnen Client –>

    Okay, ich werde mir die Links anschauen.
    D.h. es wird sozusagen Subnetting für die einzelnen Clients angewandt ??

    Wenn ich aber mein OpenVPN Server mit 10.1.1.4/30 einstellen will läuft der OpenVPN Dienst nicht.
    Erst wenn ich unter /29 geh startet der Dienst wieder ?

    Genau - wenn deine pfSense als Client in einem anderen Netz agieren soll.

    Alles klar.

    Das bedeutet, wenn ich z.B. eine Site to Site OpenVPN Verbindung von einem Draytek Router zur Pfsense (Openvpn Server) machen will, brauche ich den Punkt " Client " nicht.

    Nur wenn ich z.B. von der Pfsense zu einem anderen OpenVPN Server eine Verbindung aufbauen will ??

    Kommt ganz darauf an wie Du es brauchst. Wenn es nicht aktiv ist wird nur jeder Traffic in den Tunnel geroutet der dem Netz dahinter entspricht, der rest geht über dein noramles Gateway und ins Internet.
    Wenn du es aktivierst geht jeder Traffic (lokales Netz nicht) über den VPN Tunnel. Du surfst dann komplett durch den Tunnel mit der externen IP der pfSense.

    Alles klar danke dir.

    Grüße Philipp



  • Hi Philipp,

    Wenn ich aber mein OpenVPN Server mit 10.1.1.4/30 einstellen will läuft der OpenVPN Dienst nicht.
    Erst wenn ich unter /29 geh startet der Dienst wieder ?

    Da haben wir aneinander vorbei gesprochen. Der Server bleibt bei /24 damit alle Clients platz haben. Das musst Du bitte wieder zurückstellen.
    Damit war die Client Seite gemeint. Soll aber für dich jetzt keine Rolle spielen. Am besten baust Du es mal so nach wie in dem ersten Link damit die Clients immer die selbe IP bekommen.

    Das bedeutet, wenn ich z.B. eine Site to Site OpenVPN Verbindung von einem Draytek Router zur Pfsense (Openvpn Server) machen will, brauche ich den Punkt " Client " nicht.
    Nur wenn ich z.B. von der Pfsense zu einem anderen OpenVPN Server eine Verbindung aufbauen will ??

    Sagen wir mal so, wenn Du eine Verbindung zwischen zwei Router/Firewalls haben willst, dann spielt einer davon den "Server" und der andere den "Client".
    Es kommt also darauf an wer die Verbidung iintieren soll. Je nachdem ist deine pfSense Client oder eben Server.



  • Guten Morgen,

    Da haben wir aneinander vorbei gesprochen. Der Server bleibt bei /24 damit alle Clients platz haben. Das musst Du bitte wieder zurückstellen.
    Damit war die Client Seite gemeint. Soll aber für dich jetzt keine Rolle spielen. Am besten baust Du es mal so nach wie in dem ersten Link damit die Clients immer die selbe IP bekommen.

    So ich habe nun im OpenVPN Server das Virtuelle Netz auf " 10.1.1.0 /24" zurückgestellt.

    Dann bin ich in die Option "CLient Specific Overrides" und hab für den User Philipp ein neues Profil angelegt.
    Ich habe verschiedenste Möglichkeiten geteset.

    Aber es funktioniert leider nicht.

    –--------

    --> Wenn ich nun unter dem Punkt advanced die Zeile "ifconfig-push 10.1.1.6 255.255.255.0" mitgebe, bekommt der Client sauber die IP Adresse 10.1.1.6 /24 zugewiesen.

    Damit kann ich auch die Firewall Regeln korrekt anpassen.

    --> Wenn ich nun diese Zeile unter Advanced lösche und in den Einstellungen " Tunnel Settings -> Tunnel Network = 10.1.1.4 /30 eingebe.

    bekommt der Client die Adresse 10.1.1.4 /30 zugewisen.

    Warum bekommt er jetzt die 10.1.1.4 zugewiesen und nicht wie in dem Thread beschrieben die 10.1.1.6 ??

    Zusätzlich habe ich das Problem, dass ich kein Gerät mehr hinter LAN oder LAN2 / OPT1 anpingen kann, wenn ich das bei Tunnel Network eintrage.

    Firewall Regeln wurde natürlich darauf angepasst.


    Irgendwo habe ich bestimmt ein Denkfehler.

    P.s: ist es nicht ausreichend, wenn man einfach über das Advanced Feld per ifconfig-push die IP Adressen fest vergibt ?
    Muss es unbedingt ein eigenes Netz /30 sein ?

    Danke

    Grüße Philipp.


  • LAYER 8 Moderator

    @BeNe: Bitte nicht mit dem /30 Subnetting anfangen, das ist doch heute gar nimmer notwendig :)

    @Gerber: Wenn jeder Client eine fixe IP haben soll, dann muss die logischerweise auch dem Client zugewiesen werden. OpenVPN arbeitet sinnvollerweise mit DHCP, so dass Clients nach Verbindung eben eine Adresse aus dem Tunnel Network bekommen. Wenn da aber gefiltert werden soll und eine fixe IP her muss, dann muss man das etwas anders aufziehen:

    1. Server Mode ist Remote Access, das ist klar.
    2. Tunnel Network kannst du lustig vergeben, hauptsache es ist bei dir nirgends in Gebrauch, da es als Transfernetz dienen muss. Sollte also was abgeschiedenes sein. Du hast 10.1.1 gewählt, sollte gehen. Bitte als /24 einstellen(!)
    3. Dessen erste IP bekommt nun der Server -> 10.1.1.1. Alle weiteren sind potentiell vergabefähig via DHCP/OpenVPN an Clients.
    4. Ich würde - sofern ALLE Clients unbedingt feste IPs bekommen sollen - in den Server Einstellungen keine Route pushen. Das kann dann per Client passieren (siehe später). Ergo "Local Network"s leer lassen.
    5. Dynamic IP - Haken - für den Fall dass sich ein Client neu einwählt.
    6. Address Pool - Haken - ein virt. Adapter wird gebraucht
    7. Topology - one IP per Client -> also KEIN Net30 oder sonstiger Kram.

    Das sind eigentlich die wichtigen Settings.

    Jetzt gehts weiter, denn damit bekommt ein eingewählter Client momentan eine Random Adresse aus deinem 10.1.1er Netz (doof) und keine Routen gepusht (noch mehr doof).

    Client Specific Overrides:

    1. CSOs anlegen für jeden Benutzer mit eigener IP: ergo dominik und philip
    2. als common name den exakten Namen des Zertifikats eintragen, mit dem sich die Clients authentifizieren.
    3. Description nach Sinn und Wahl
    4. ansonsten nichts mehr ausfüllen oder anhaken, sondern statt dessen im Advanced Settings Feld das hier rein:
    
    ifconfig-push 10.1.1.20 255.255.255.0;
    push "route 10.0.0.0 255.255.255.0";
    
    

    Ich habe jetzt mal angenommen, dass das Zielnetz wo es hingeht 10.0.0.0/24 ist. Das kann aber auch gern 192.168.0.0/24 sein, dann muss das push eben angepasst werden.

    Der Clou daran: Durch den ifconfig-push bekommt der Client an Hand seiner Zertifikats ID (die eindeutig sein muss) eine klare IP vergeben. Zusätzlich hat er auch mit eigener IP erstmal kein Routing auf das Netz (klar kann man sich das selbst mit Adminrechten auf seinem Client nach der Verbindung dann einrichten, aber es ist eben erst einmal noch ein Hindernis für übereifrige User). Durch den Route Push bekommt man dann im zweiten Schritt die Route zum Client um aufs Zielnetz zugreifen zu können. Jetzt muss natürlich auf dem OVPN Interface noch eine Firewall Regel den Zugriff erlauben (von 10.1.1.20 nach 10.0.0.0/24 bspw.) und schon hast du deinen Zugriff reglementiert.

    Wir machen das bspw. bei größeren Installation bei Kunden/Projektnetzen gerne so. Damit kann man dem Kunden selbst oder technisch versierten Leuten Zugriff aufs ganze Projektnetz geben (push und Regel mit /24) aber bspw. spezifische Dienstleister über deren eigene IP und Route-Pushing mit bspw. 10.0.0.123/32 und Firewallregel dann ganz klar nur für ein einziges System Zugriff gewähren. Vor allem ist es optisch für den Client damit auch durch die Route sichtbar, was das Debugging erleichtert (dann ruft bspw. derjenige an und fragt, ob er Zugriff auf System B auch noch bekommt, er bekommt momentan nur die Route für System A).

    Das ist zwar nicht ganz so easy-peasy automatisch vom Einrichten her (weil jeder Client einen CSO / Override braucht), dafür kann man jeden Client sauber trennen bzw. konfigurieren. Wer das mit dem Route Pushing nicht machen mag, kann es natürlich auch weglassen und trägt statt dessen im Server-Teil das Lokale Netz ein (siehe oben), dann wird immer für jeden Client dieses Netz gepusht, man muss dann aber noch genauer auf seine Firewall Regeln achten.

    Gruß



  • Guten Morgen,

    Wow danke für die ausführliche Antwort und für die super Erklärung. ;)

    Ich hatte bisher das locale Netzwerk mitgegeben, werde es aber in Zukunft wie du geschrieben hast mit einer Push Route machen wie du es beschrieben hast.

    Die Einstellungen werde ich doch gleich heute Abend anpassen.  :)

    Mein Ziel Netz ist in diesem Fall "172.31.17.0 /24" (push "route 172.31.17.0 255.255.255.0";).

    Danke wie immer für die Hilfe…

    Grüße Philipp



  • Hallo zusammen,

    so habe es nun nochmals komplett eingerichtet und es klappt alles wunderbar.

    Die IP Adressen und die ROuten weren wunderbar auf den CLient gepusht und der Traffic kann per Firewall Regel korrekt angepasst werden.

    –---

    Ich habe mich nun während der Konfiguration gefragt, wie das den bei IPSec funktioniert ??

    Kann ich bei Ipsec auch den Clients eine statische IP Adresse verpassen ?

    Wenn ich z.B. Ipsec mit Mutual oder Mutual + PSK nutze ??

    Grüße Philipp



  • @JeGr:

    Durch den ifconfig-push bekommt der Client an Hand seiner Zertifikats ID (die eindeutig sein muss) eine klare IP vergeben.

    Mit Zertifikats ID meinen Sie Common Name?



  • Hi Pippin,

    Mit Zertifikats ID meinen Sie Common Name?

    Korrekt.

    Die Zertifikats ID muss mit dem Common Name übereinstimmen.

    Grüße Philipp


Log in to reply