VPN mit PPTPD

denndsd

New Member
Hallo zusammen,

ich bin Verzweifelt da ich es nicht hinbekomme einen Simplen PPTPD VPN Server einzurichten! Liegt es daran das ich zu doof dazu bin ??? Nun ich habe mit einen VPS Server gemietet und möchte darauf einen VPN Installieren! apt-get install pptpd

Dann habe ich die etc/pptpd.conf geändert und ich denke es liegt an der Remote IP- Hier einmal da was in der pptpd conf drin ist

bcrelay eth1

#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
# or
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245

localip die IP des Servers- Da ich keine Interne IP habe sondern nur die eine Externe wohl die oder? remoteip mit der IP kann ich von außen Connecten oder?

Mein Problem ist setze ich die remoteip auf * so sagt mein Mac Der Server antwortet nicht und das nach 2 SEK Setze ich da meine IP hin so : das kommunikationsgerät hat die Verbindung geschlossen! Aha in der Chap Secrets ist ein BEnutzer von mir drin! und in der ppp/pptpd-options

den ms-dns 8.8.8.8 und ms-dns 8.8.4.4

das wars habe ich etwas Falsch gemacht ?
 
Nun,

Einfach eine VPN Verbindung.
PPTP ist das einfachste ich habe es mit Openvpn versucht aber das war wohl zu kompliziert.
Ich habe den Server gekündigt und bekomme nächsten Monat einen Windows 2012 Server da dort Gomez peer läuft:)
Wäre es da einfacher?
 
OpenVPN kann zwar viel, ist mir aber auch zu kompliziert. Wenn ich schon sehe, dass irgendeine Software SSL voraussetzt, mache ich lieber einen großen Bogen drum und nutze ertwas, dass nicht ganz so kaputt ist. Man kann auch Userlogin mit Passwort nutzen, irgendwie so..

PPTP ist einfacher zu konfigurieren, aber zu unsicher. Ich hab jetzt zwar nicht auf den Link geklickt, aber ich denke mal, dass es der Artikel ist, in dem es darum geht, dass man für 200€ einen funktionierenden Schlüssel bekommt. Ich glaube in einem weiteren Artikel hat dann ein Redakteur das mal einfach ausprobiert. Es funktioniert.

Vielleicht kannst du mit IPSec noch was anfangen. Wahrscheinlich wirst du aber dann doch lieber OpenVPN nutzen wollen.

EDIT: localip ist der Server, remoteip der client. Die IP existiert noch nicht und sollte sich auch nicht mit bestehenden überlappen (auch nicht im privaten Netzwerk). Schau mal in den Logdateien nach. Vielleicht supportet der Kernel das Interface nicht.
 
Last edited by a moderator:
EDIT: localip ist der Server, remoteip der client. Die IP existiert noch nicht und sollte sich auch nicht mit bestehenden überlappen (auch nicht im privaten Netzwerk). Schau mal in den Logdateien nach. Vielleicht supportet der Kernel das Interface nicht.



Joa kann ich bei Remote Ip nicht einfach nen Stern machen?
 
@denndsd: Nein, wie soll der Remote-Server denn dann eine IP bekommen?
@vb-server: Ich nutze SSL im Browser und für meine Cloud. Das Design ist zu komplex und es ist mir zu sehr aufgebläht, SSL ist einfach kaputt. Auch die Bedienung des Tools ist unter aller Sau. Das es kaum jemand direkt nutzen will, sieht man daran, dass es soviele Wrapper gibt. Wenn ich dich morgens um 4 Uhr mit vorgehaltener Waffe wecke und nach einem gültigen Befehl für OpenSSL frage, kannst du mir dann einen nennen oder muss ich dich erschießen? Gleiche Situation und ich frage nach einem gültigen Befehl für tar/grep/sed/awk.
 
Ich hatte mal vor Ewigkeit einen Artikel über PPTP geschrieben. Vielleicht kannst du was mit anfangen.. Es muss nicht alles richtig sein, was dort steht.

Hier der Artikel:


Wieso macht man sowas?

Nach meinem Artikel "Strom sparen, durch geschicktes scripten" habe ich mir überlegt, was ich als nächstes mit meinem Server testen kann. Da ich zwischendurch noch Probleme mit dem Dienst "Anacron" hatte, der verzögert Aufgaben ausführt, wollte ich erst ein Python-Script schreiben, welches wie der Crontab aufgebaut ist und eine bessere Logik verwendet. Das musste jetzt erstmal hinten anstehen, da ich mir noch ein VPN einrichten wollte. Da ich mittlerweile meinen Server mit WOL über das Internet aufwecken kann und vor ein paar Tagen von Außen nicht auf meinen MLDonkey kam, hatte ich die Idee einfach ein VPN einzurichten, worüber man sich mit jedem Windows-Client ohne zusätzliche Software einwählen kann.

Durch ein VPN wird der komplette Verkehr getunnelt. Nebeinbei hat es noch den Vorteil, dass alles verschlüsselt wird. So hat der VPN-Client direkten Zugriff auf das interne Netzwerk.

Den Aufbau hatte ich mir so vorgestellt
View attachment 503


Installation
Nachdem ich die Idee dazu hatte, ging es um die Umsetzung. Da ich wie immer für meine Server Debian einsetze, ist das Finden von Anleitungen und Paketen recht schnell erledigt. Die einfachste Möglichkeit ein VPN einzurichten, ist das verwenden von Point to Point Tunneling Server. Unter Debian heißt das Paket "pptpd". Das kleine d steht für Daemon wie bei fast jedem Serverdienst.

Die Installation des Pakets findet wie gewöhnlich über apt-get statt:
Code:
apt-get install pptpd
Konfiguration von pptpd
Nach der Installation muss der Dienst konfiguriert werden. Die beiden Konfigurationsdateien sind '/etc/pptpd.conf', '/etc/ppp/pptpd-options' und 'cat /etc/ppp/chap-secrets'.

pptpd.conf
Code:
#lädt die Datei /etc/ppp/pptpd-options für zusätzliche Optionen des Servers
option /etc/ppp/pptpd-options
#Logt Verbindungen über wtmp. D.h. man kann mit dem Befehl "w" sehen, wer zur Zeit über VPN, Terminals und SSH eingeloggt ist.
logwtmp
#Lokale IP des PPTPD-Servers (nicht verwechseln mit der IP der Netzwerkkarte!)
localip 10.0.0.1
#IP-Bereich, der den Clienten automatisch zugewiesen wird.
remoteip 10.0.0.10-200
pptpd-options
Code:
#Name des Dienstes, am besten so belassen
name pptpd

# Weist die Verfahren pap, chap und mschap ab. Diese sind unsicher und unverschlüsselt
refuse-pap
refuse-chap
refuse-mschap

# Es wird mschap-v2 mit einer 128-Bit-Verschlüsselung benötigt
require-mschap-v2
require-mppe-128

# leitet Anfragen vom VPN auf das lokale Netz weiter
proxyarp

# ersetzt nicht die Default-Route. Welchen Sinn diese Einstellung genau hat, kann ich nicht sagen.
# Clientseitig wird die Default-Route auf den VPN-Server gesetzt, damit der komplette Traffic getunnelt wird.
# Das lässt sich aber auch Clientseitig einstellen bzw. selbst konfigurieren.
nodefaultroute

# Lockfile für exklusiven Zugriff
lock

# deaktiviert die BSD-Kompression
nobsdcomp
chap-secrets
Code:
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses


deadeye pptpd supersicherespasswort *
Zusätzlich kann man in der Datei festlegen, welche feste IP der Teilnehmer zugewiesen bekommt. Ich habe es so belassen, dass der Client eine freie IP aus dem zuvor festgelegten Bereich zugewiesen bekommt.

IP-Zuweisung
Es kann sinnvoll sein, das eigene Netzwerk in einen IP-Bereich zu legen, dass nicht in 192.168.0.0, 192.168.172.0 oder 192.168.1.0 liegt. Nutzt man z.B. intern das Netzwerk 10.0.0.0 und die VPN-Clients bekommen eine IP aus dem gleichen Netzwerk zugewiesen, kann man ohne Probleme auf die anderen Teilnehmer im LAN über VPN zugreifen. Derzeitig habe ich meine Konfiguration noch so, dass ich im internen Netzwerk 192.168.0.0. Weiter Versuche werde das dafür aber von einem externen Anschluss aus machen müssen.

Der erste Test im LAN
Da nun pptpd konfiguriert ist, kann man den Dienst einmal neustarten:
Code:
/etc/init.d/pptpd restart
Die Verbindung kann man einmal mit Windows testen. Dazu eine Neue Verbindung erstellen (VPN), die LAN-IP vom Server angeben und sich mit Buntzernamen und Kennwort einloggen. Unter Windows 7 muss nichts weiter eingestellt werden, da in der Standard-Einstellung alle möglichen Protokolle durchprobiert werden. Da der Server so konfiguriert ist, dass nur verschlüsselte Verbindungen akzeptiert werden, ist man auf der sicheren Seite. Sollte der Login klappen, wird man feststellen, dass die Internetverbindung weg ist. Das liegt daran, dass die Default-Route ersetzt wird. Unter Windows hat man dann zwei Routen, wovon aber nur die Route des VPN genutzt wird. Da beim Server nichts weiter eingestellt worden ist, leitet dieser den Traffic an IPs außerhalb des Netzes nicht weiter.

NAT einrichten
Damit das weiterleiten des Traffics ins Internet funktioniert, muss beim Server das Standardgateway eingetragen. In meinem Fall ist es der D-Link-Router, der bei mir zur Zeit noch auf 192.168.0.0.1 läuft. Da es unter anderem auch Probleme der Verbindung zu Internetseiten gibt, musste ich für die Lösung etwas länger googeln. Letztendlich habe ich aber einen Weg gefunden, auch das Routing ins Internet über das VPN in den Griff zu bekommen. Anfangs habe ich mir ein Script in /etc/ppp/ip-up.d/ und /etc/ppp/ip-down.d/ gelegt, welches unter anderem das Forwarding im Kernel aktivier und mit iptables NAT aktiviert. Sobald aber zwei User über VPN eingewählt sind und einer wieder die Verbindung trennt, wurde durch mein Script die Regel für NAT gelöscht und das Forwarding deaktiviert. Das hatte dann zur Folge, dass auch meine Verbindung zum Internet gekappt wurde. Ich habe mich für die einfachere Lösung entschieden. Bei Debian gibt es die Datei '/etc/rc.local' welche im Multiuserrunlevel als allerletztes ausgeführt wird.

/etc/rc.local
Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

iptables=/sbin/iptables
# NAT einrichten, in meinem Fall verwende ich eine Bridge. Deswegen auch -o br0
# Anstelle der Bridge solltet ihr euren NIC einsetzen (z.B. eth0).
$iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
# fix fuer MTU
# http://pptpclient.sourceforge.net/howto-diagnosis.phtml#connections_freeze
$iptables -A FORWARD --protocol tcp --tcp-flags SYN,RST SYN --jump TCPMSS --clamp-mss-to-pmtu
echo 1 > /proc/sys/net/ipv4/ip_forward

exit 0
Sollte man auf seinem Server keine Firewall eingerichtet haben, kann man das Script bis auf "br0" übernehmen.

Der 2. Test - diesmal mit Internet
Nachdem nun das Script gespeichert ist, sollte man dieses einmal ausführen. Nach einem Neustart des Servers braucht man das nicht mehr manuell auszuführen.
Nachdem nun die Regeln geladen worden sind und ip_forward aktiviert ist, kann man sich über das VPN nochmals erneut einwählen. Man sollte dann Seiten wie ebay.com, gmx.de und google.de ausprobieren. Die beiden ersten sind dafür bekannt, dass sie nicht gehen, wenn der MTU-Wert zu hoch eingestellt ist. Durch das Tunneling ensteht Overhead, welches die maximale Paketgröße weiter einschränkt.

VPN von Außen errechbar - VPN Pass-Through
Sollte alles funktionieren, kann man bei seinem Router VPN Passthrough aktivieren. Bei meinem DI-524 von D-Link gibt es die Option im Webinterface unter Tools -> Verschiedenes -> VPN Pass-Through -> PPTP (Aktiviert). Diese Einstellung speichern. Danach muss der Port TCP 1723 zum VPN-Server weitergeleitet werden. Dafür auf die Erweitert -> "Virtueller Server" klicken und dann Port 1723 bei "Privater Port" und "Öffentlicher Port" eintragen. Im Feld "Private IP-Adresse" wird die LAN-IP des VPN-Servers eingetragen. Name ist natürlich frei wählbar. Die Regel noch aktivieren und dann abspeichern.

Danach am besten jemanden bitten sich einmal mit der öffentlichen IP und den zuvor festgelegtem Benutzernamen und Kennwort einzuloggen. Aus dem eigenen LAN kann man die Funktion nicht ausprobieren.

PS: http://creativecommons.org/licenses/by/4.0/
 
Last edited by a moderator:
SSL ist kein Tool, sondern eine Technologie. Und ja, auch Nachts um 4, mit Waffe bedroht,kann ich dir den folgenden Befehl liefern:

openssl x509 -in cert.crt -noout -text

Den bauche ich recht häufig.

Wenn Du nichts benutzt, was SSL voraussetzt, was benutzt du dann?
 
Vielleicht habe ich mich noch nicht oft/lange genug damit auseinandergesetzt aber ich finde OpenVPN auch nur handlebar wenn man den AS einsetzt (der allerdings kostenfrei auf max. 2 user gleichzeitig begrenzt ist)

Generell finde ich alle gängigen VPN Tools zu komplex für einfache Aufgaben wie einfach das aufsetzen eines Geo/Countryproxies.
Außerdem fehlt anders als bei HTTP(S) only Proxies (z.B. Squid) ein einfacher Clientweg um nur bestimmte Domains durch den Proxy/VPN zu jagen weil sie normalerweise eigentlich nur IP basiert arbeiten. Oder jemand kann mir da einen Tipp geben wenn wir schon dabei sind. VPN/Proxy ist nicht gerade meine Paradedisziplin.
 
Last edited by a moderator:
OpenVPN ist auch mit SSL nicht schwierig einzurichten. Mit Easy-RSA generiert man folgende Keys/Certs:

- CA
- Server

Und pro Client ein eigenes Cert / Keyfile. Zudem ein Diffie Hellman file für mehr Sicherheit.

Danach normale OpenVPN Server config, Cert, DH, CA angeben, IP-Infos angeben, Port, Interface, Protokoll definieren. Alles in Allem incl 1-2 Clients konfigurieren nicht mehr als 1h Aufwand.
 
... nicht mehr als 1h Aufwand.

Das ist mein Problem. Ich möchte aber keine Stunde dafür benötigen. Ich möchte gerne ein Tool haben, das ich einfach starten kann ohne vorher eine Konfigurationsorgie durchlaufen zu müssen. Ja, ich weiß, sowas gibt es noch nicht. Wäre schön sowas zu haben.
 
Wenn Du diese Stunde nicht aufbringen kannst, frage ich mich, wieso du (Root)server hast?

Hab ich irgendwo erwähnt, dass ich OpenVPN unbedingt einrichten möchte? Das möchte ich nicht. Wenn ich das wollte, dann werde ich mir die Zeit nehmen müssen. Wenn ich mit irgendwas anfange, dann will ich auch verstehen was ich da mache, welche Auswirkungen es hat und welche Side Effects auftreten können. Alles andere ist halbgar und gefährlich. Also bevor ich mich auf Tutorials verlasse, lasse ich es lieber ganz.
 
Nein, hast Du nie gesagt. Ich meine damit nur, wenn dir eine Stunde einmaliger Zeitaufwand zuviel ist einen Serverdienst zu konfigurieren, gäbe es recht wenig Auswahl.
 
Die Dienste, die ich konfiguriere benötigen nicht so viel Zeitaufwand :-)
 
Das ist mein Problem. Ich möchte aber keine Stunde dafür benötigen. Ich möchte gerne ein Tool haben, das ich einfach starten kann ohne vorher eine Konfigurationsorgie durchlaufen zu müssen. Ja, ich weiß, sowas gibt es noch nicht. Wäre schön sowas zu haben.

Wir haben doch hier im SSF genug Leute, die richtig gute CLI-Scripte basteln können. Das wäre doch mal eine wirklich hilfreiche Idee, wenn ein interaktives Script entstehen würde, wo man nur noch die variablen Daten eingibt und das Script dann die passenden Keys, Certs und Configs erstellt...:D
 
Ohh also das hier so eine große Disskusion entsteht ? Hut ab.

Dead Eye danke dir für die Anleitung die habe ich sehr interesannt gefunden.
Ich denke das Problem liegr darin das ich keine interne ip des Servers hab.
Nur die Externe. Trage ich die ein gehts nit. Soll ich die Einstellungen so wie es ist übernehmen? Ich mein die hälfte der Sachen in den dateien is eh Auskommentiert.
Dennoch es geht nicht
siehe Bild
 

Attachments

  • Bildschirmfoto 2015-09-23 um 15.25.26.jpg
    Bildschirmfoto 2015-09-23 um 15.25.26.jpg
    202.4 KB · Views: 114
Last edited by a moderator:
Also irgendwie hab ich mir jetzt den Xrdp zerhauen.
Ich hab ein wenig ausprobiert mit VNC was mal ganz und gar nicht geklappt hat.
nun sagt xrdp nur noch problem connecting
Hmm ich habs scho neu inatalliert aber das bringts nicht.
Port 9510 glaub ich
 
Ich hab das eben mal ausgezählt und eine OpenVPN-Config ist nun wirklich nicht sehr komplex.

Server:
* CA-Zertifikat
* Server-Zertifikat inkl. Key
* Server-Config
* DH-Param-File
* ggf. Client-Config (1 je Client, enthält eine Zeile)

Client:
* CA-Zertifikat
* Client-Zertifikat inkl. Key
* Client-Config

Oh, das war's ja schon. Es läuft also darauf hinaus, dass man ein paar Zertifikate erstellen muss. Und dafür würden bereits Tools erwähnt und ich erwähne an der Stelle auch nochmal xca[1].

[1] http://xca.sourceforge.net
 
Last edited by a moderator:
Back
Top