unique24
Goto Top

Eigener VPN Dienst

Hallo,

kennt jemand für Linux eine kostenlose VPN Lösung, wo sich Linux Rechner auf meinen Online Server verbinden und sich dadurch die Port Weiterleitungen sparen kann?

Ich habe ca. 30 kleine Mini Linux Rechner verteilt bei Kunden stehen, und der Kunde soll nicht immer eine DynDNS einrichten müssen.

Ich würde gerne, wie andere auch, meinen Server online stellen und über den an die Linux Rechner "tunneln".

Die Linux Clients müssen also selbst den Connect an den Server aufbauen und halten.

Kennt jemand da etwas freies fertiges?

Danke!

Content-ID: 298625

Url: https://administrator.de/forum/eigener-vpn-dienst-298625.html

Ausgedruckt am: 22.12.2024 um 23:12 Uhr

119944
119944 09.03.2016 um 13:43:05 Uhr
Goto Top
Moin,

einfach OpenVPN?
Die Linux PCs sind dann einfach Clients und verbinden sich zu deinem Server.

VG
Val
unique24
unique24 09.03.2016 um 13:46:13 Uhr
Goto Top
Danke, aber kennst du eine Anleitung, damit jeder PC wie eine DynDNS einzeln ansprechbar ist?

Die Rechner sollten nicht untereinander verbunden sein.
114757
114757 09.03.2016 aktualisiert um 14:55:08 Uhr
Goto Top
Moin.
Zitat von @unique24:
damit jeder PC wie eine DynDNS einzeln ansprechbar ist?
Jedem Rechner kannst du per OpenVPN-Config eine feste IP verpassen (entweder nach User/Passwort-Kombination oder bei Login der Clients per Zertifikat(empfohlen).
Die Rechner sollten nicht untereinander verbunden sein.
Kein Problem, per Default können sich die Clients untereinander nicht erreichen erst wenn du die Option Client-to-Client in der Server-Config aktivierst könnten diese miteinander kommunizieren.

Grundlagen dazu findest du hier:
OpenVPN Server installieren auf pfSense Firewall, Mikrotik. DD-WRT oder GL.inet Router
Tutorials zu OpenVPN
OpenVPN Server installieren auf pfSense Firewall, Mikrotik. DD-WRT oder GL.inet Router

Zu OpenVPN gibt es Anleitungen wie Sand am Meer, also erst mal die Suchfunktion benutzen.

Gruß jodel32
unique24
unique24 09.03.2016 um 15:33:35 Uhr
Goto Top
Hallo,

super, das hilft schon mal sehr!

Danke!
laster
laster 09.03.2016 um 20:41:04 Uhr
Goto Top
Hallo,
wo sich Linux Rechner auf meinen Online Server verbinden
Nur der Online Server braucht eine bekannte (feste oder dynamische) IP.
Die 30 Clients bauen (z.B. per Script automatisch) einen Tunnel (OpenVPN) zum Server auf.
Authentifizierung mit Zertifikaten (pro Client).
Geht einfach un gut.

vG
LS
aqui
aqui 10.03.2016 um 12:50:28 Uhr
Goto Top
aber kennst du eine Anleitung, damit jeder PC wie eine DynDNS einzeln ansprechbar ist?
Wenn du dir mal die Mühe gemacht hättest etwas über OpenVPN zu lesen hättest du gesehen das jeder Rechner im OVPN internen Netzwerk eine eigene individuele IP hat über die er angesprochen werden kann.
Unter Linux gibt es noch das IKE Package (apt-get install ike) was dem weitverbreitetem Shrew Client identisch ist.
Fazit: mit SSL und IPsec ist die Lösung im Handumdrehen gemacht.
unique24
unique24 15.03.2016 aktualisiert um 15:59:00 Uhr
Goto Top
Hallo,

habe ich nun mal versucht, aber ohne Erfolg.

Habe mich nach dieser Anleitung gehalten:
http://www.gtkdb.de/index_7_2127.html

Wenn man nach unten scrollt, kommt man zu:
OpenVPN-Server für mehrere Clients

Zuerst aber sind mir Basics noch nicht klar.

Der Server hat eine öffentliche IP: 217.55.55.55

Die Clients haben irgendeine IP, die ich gar nicht kenne.
Der Client soll nun eine Verbindung zum Server aufbauen und halten. Egal was für eine IP der Client lokal auch hat.

Nun soll ein Smartphone über den Server auf Client 1 kommen, da das Smartphone die ID oder Keys von Client 1 besitzt.

Bei dem Beispiel wir die IP des Clients genutzt, oder?
Aber die kenne ich nicht bzw. ändert sich die IP und Range der Clients.
114757
114757 15.03.2016 aktualisiert um 16:09:08 Uhr
Goto Top
Zitat von @unique24:
Die Clients haben irgendeine IP, die ich gar nicht kenne.
Ist ja auch egal, die brauchst du nicht
Der Client soll nun eine Verbindung zum Server aufbauen und halten. Egal was für eine IP der Client lokal auch hat.
Die lokale IP für den Client mappt man über die Zugangsdaten des Clients in der Client Configuration Directive (ccd) file
https://thomas-leister.de/internet/openvpn-statische-ips-clients-vergebe ...
unique24
unique24 21.03.2016 um 12:49:45 Uhr
Goto Top
Ok, danke.

Aber in der Anleitung steht ab:
Die Konfigurationsdatei sollte wie folgt aufgebaut sein:
dev tun
ca /etc/openvpn/vpn-ca.pem
cert /etc/openvpn/servercert.pem
key /etc/openvpn/serverkey.pem
dh /etc/openvpn/dh1024.pem
server 192.168.100.0 255.255.255.0
push "route 192.168.10.0 255.255.255.0"
keepalive 10 120
auth SHA1
cipher AES-256-CBC
verb 3


"server" ist die Server IP? In meinem Fall also die öffentliche, da ich einen root Server vom Provider einsetze.
"push" ist für die Clients, oder? Soll diese Zeile entfernt werden?

Oder hat jemand eine passende Server und Client config für:
server IP: 77.77.77.77
Client: unterschiedlich ... manche Clients können auch die selbe private IP haben

Danke!
114757
114757 21.03.2016 aktualisiert um 13:16:27 Uhr
Goto Top
Zitat von @unique24:
Aber in der Anleitung steht ab:
Die Konfigurationsdatei sollte wie folgt aufgebaut sein:
Anleitungen sind auch nicht nur dazu da um sie abzutippen, sondern auch sollen auch dazu anregen mal die Doku zu lesen face-wink
"server" ist die Server IP? In meinem Fall also die öffentliche, da ich einen root Server vom Provider einsetze.
Nein das definiert nur das virtuelle VPN-Netz
"push" ist für die Clients, oder? Soll diese Zeile entfernt werden?
Dies teilt dem Client mit das dieses Netz über den Tunnel erreicht wird. Dies trägt sich dann der Client in seine Routing-Tabelle ein. D.h. alle Anfragen die dann an dieses Subnetz gehen werden auf den Tunnel übertragen.
Simpelste Routing-Grundlagen.

Für die feste Zuweisung von IPs an Clients hatte ich oben schon den Link gepostet die CCD is your friend
https://thomas-leister.de/internet/openvpn-statische-ips-clients-vergebe ...

http://wiki.openvpn.eu/index.php/Erster_Tunnel
unique24
unique24 21.03.2016 aktualisiert um 13:48:17 Uhr
Goto Top
Hallo,

danke für deine Hilfe.
Ich versuche natürlich Infos im Web zu finden.

Aber gerade beim start ist es etwas verwirrend ... eine direkte Antwort ist da manchmal goldes wert.

Soweit ich es nun gesehen habe, wird am Client keine route hinterlegt ... routing ist mir natürlich bekannt.

Erlaub mir meine Ausgangslage zu erwähnen:
Server: 77.77.77.77 (öffentliche IP)
Client1: 192.168.0.143

Ich habe die ccd mit dem Eintrag erstellt.

Was mir nicht klar ist:
SERVER (77.77.77.77) wird ein zweites Netz hinzugefügt:
192.168.100.1/24
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.100.1 P-t-P:192.168.100.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:420 (420.0 B)

Der Tunnel nutzt also 192.168.100.0/24

Der Client hat 192.168.0.143 und soll die zusätzliche IP 10.8.0.2 erhalten, welches als Gateway zum Netz 192.168.100.0 dient?
Definiert über die CCD.

Wo definiere ich aber die 10.8.0.0 beim Server?

Oder soll, und so finde ich es einfacher, nur der Tunnel eine neue IP Range bekommen?
Server 192.168.100.1

Clients bekommen dann 192.168.100.2, 192.168.100.3, usw

Somit wäre:
Server <= Tunnel => Client
77.77.77.77 <= 192.168.100.0 => 192.168.0.143
unique24
unique24 21.03.2016 um 14:17:32 Uhr
Goto Top
Ok, habs mal hinbekommen.

Server und Client können sich pingen.

Jetzt wäre noch die Frage, wie schaffe ich es, das ein Handy im selben LAN ist, wie der Client:
Handy <=> Server <=> Client

Danke!
114757
114757 21.03.2016 aktualisiert um 14:43:42 Uhr
Goto Top
Zitat von @unique24:
Jetzt wäre noch die Frage, wie schaffe ich es, das ein Handy im selben LAN ist, wie der Client:
Handy <=> Server <=> Client
Durch die richtigen Routing-Einträge.
Wenn sich dein Handy im Subnetz des Servers befindet trage auf deinem Default-GW (Router) eine statische Route für das VPN-Netz mit deinem OpenVPN-Server als Gateway ein, fertig. Wichtig: auf dem OpenVPN-Server muss das IP-Routing aktiviert werden, sonst funktioniert das nicht !!

Wenn dann das Handy eine Anfrage an das VPN-Subnetz macht leitet dein Router die Anfrage an den OpenVPN-Server und der direkt an den VPN-Client, simpelste Routing-Grundlagen die du dir besser erst mal aneignen solltest bevor du das auf Kundennetze anwendest !!
unique24
unique24 21.03.2016 um 16:23:16 Uhr
Goto Top
Ok, ich habe mal 2 Clients am laufen, die sich gegeneinander nicht pingen können, aber sehr wohl den Server. Das passt mal.

Nun benötige ich für die Handy, Tablet und andere PC´s jeweils ein eigenes Client Zertifikat, richtig?

Soweit ich gelesen habe, kann ich ein Zertifikat für alle externen Geräte erstellen.

Zum üben möchte ich die 2 Clients am Server über eine route "zusammen" hängen.

Der Client 1 (10.8.0.2) hat mit aktiver openvpn:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default homerouter.cpe 0.0.0.0 UG 0 0 0 eth0
10.8.0.1 * 255.255.255.255 UH 0 0 0 tun0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0

Hier ist aber nur die IP 10.8.0.1 angeben ... muss ich nun das Ziel (10.8.0.3) hier hinzufügen?

Es können aber mehrere externe Geräte zur selben Zeit mit dem internen Client verbunden sein.
Somit benötigt jeder externe Client eine andere IP, was CCD wieder zu einem Problem macht, oder?

Für eine kurze Hilfe wäre ich dir dankbar!
114757
114757 21.03.2016 aktualisiert um 16:32:36 Uhr
Goto Top
Zitat von @unique24:
Nun benötige ich für die Handy, Tablet und andere PC´s jeweils ein eigenes Client Zertifikat, richtig?
Jupp.
Soweit ich gelesen habe, kann ich ein Zertifikat für alle externen Geräte erstellen.
Kann man machen. Nachteil davon jedoch: Wenn bei nur einem Kunden das Zertifikat kompromittiert wird und abhanden kommt musst bei allen deinen Kisten das Zertifikat erneuern = nicht schön.
Zum üben möchte ich die 2 Clients am Server über eine route "zusammen" hängen.

Der Client 1 (10.8.0.2) hat mit aktiver openvpn:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default homerouter.cpe 0.0.0.0 UG 0 0 0 eth0
10.8.0.1 * 255.255.255.255 UH 0 0 0 tun0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0

Hier ist aber nur die IP 10.8.0.1 angeben ... muss ich nun das Ziel (10.8.0.3) hier hinzufügen?
Auf dem Client machst du gar nichts. Damit beide Clients miteinander kommunizieren dürfen musst du die Direktive client-to-client in der Server-Config aktivieren.
Es können aber mehrere externe Geräte zur selben Zeit mit dem internen Client verbunden sein.
Somit benötigt jeder externe Client eine andere IP, was CCD wieder zu einem Problem macht, oder?
Deswegen jedem Client seinen eigenen Namen mit eigenem Zertifikat, weil besser, sicherer, besser wartbar und vor allem übersichtlicher!
Mit OpenSSL oder XCA sind die Zertifikate schnell erstellt, sollte also kein Problem darstellen face-wink.
unique24
unique24 21.03.2016 um 17:08:39 Uhr
Goto Top
Zuerst:
Vielen Dank für deine Hilfe.

Jedoch:
Die Anzahl der externen Clients ist dynamisch und nicht von mir handlebar. Daher kann ich leider nicht für jeden ein eigenes cert erstellen.
Es erfolgt "dahinter" noch eine User/Pass Abfrage über eine Webseite ... das reicht als Security.

Ich werde mal client-to-client googlen ... aber ändert sich die Info, wenn ich nur ein cert für alle externe Clients erstelle?

Und noch dadurch noch offen:
die internen Clients nutzen CCD und die externen Clients nicht ... geht das überhaupt?

Danke!

PS: im Moment ist es eine reine Evaluierung ob es überhaupt kappen kann, so wie ich es mir vorstelle
114757
114757 21.03.2016 aktualisiert um 17:25:13 Uhr
Goto Top
Zitat von @unique24:
Jedoch:
Die Anzahl der externen Clients ist dynamisch und nicht von mir handlebar. Daher kann ich leider nicht für jeden ein eigenes cert erstellen.
Du musst sie doch einrichten oder nicht ?? Oder zumindest die Config schicken, da ist ein individuelles Zert doch ein Kinderspiel, zumal dafür eine Kommandozeile ausreicht X)
Es erfolgt "dahinter" noch eine User/Pass Abfrage über eine Webseite ... das reicht als Security.

Ich werde mal client-to-client googlen ...
Hatte ich doch oben schon gepostet, man müsste die Posts nur mal lesen ...
aber ändert sich die Info, wenn ich nur ein cert für alle externe Clients erstelle?
Ja, nur ein Cert nur eine feste IP zuweisbar:
http://michlstechblog.info/blog/openvpn-set-a-static-ip-address-for-a-c ...

Und noch dadurch noch offen:
die internen Clients nutzen CCD und die externen Clients nicht ... geht das überhaupt?
s.o. Dann hinterlege feste IPs direkt in den Client-Configs oder nutze Username-Passwort Kombination statt Zertifikate.

Du hast die Wahl, einfach mal die einschlägige Doku lesen die es millionenfach im Netz gibt, dann müssen wir dir hier nicht jeden Furz daraus vorlesen.

Viel Erfolg, ich bin jetzt raus.
Gruß jodel32
aqui
aqui 22.03.2016 aktualisiert um 08:34:08 Uhr
Goto Top
Daher kann ich leider nicht für jeden ein eigenes cert erstellen.
Das birgt aber die Gefahr das bei Passwort Weitergabe der User die ja bei statischen Passwörtern über kurz oder lang immer passiert, dein ganzes VPN kompromitiert ist und du alle naslang die Passwörter ändern und schlimmer noch allen Usern kommunizieren musst.
Ob das in Summe dann weniger Aufwand ist sei mal dahingestellt.
Fakt ist aber das das dann generell ein VPN konterkariert und eigentlich vollkommen sinnfrei macht.
Stellt sich die Frage warum du nicht gleich die User/Pass Abrage offen ins Internet stellst um die Sache zu vereinfachen. Das VPN und die Diskussion hier darum kannst du dir dann eigentlich sparen wenn du ehrlich bist...
Du scheiterst wie so viele an diesem berühmten Break Event Point zwischen Bequemlichkeit und Sicherheit weil du nicht konsequent bist.
Was nützt dir also dann ein sinnfreies VPN was in Sekunden ausgehebelt ist. Das kannst du dir dann sinnvollerweise gleich sparen und den Webzugang per HTTPS öffentlich machen.