Wie richte ich ein PPTP-VPN auf meinem eigenen Ubuntu-Server ein?

16

Angenommen, ich besitze einen Virtual Private Server von jemandem wie Linode , auf dem Ubuntu ausgeführt wird. Wie kann ich auf einfache Weise ein PPTP-VPN einrichten, damit Ubuntu-Clients eine Verbindung dazu herstellen können?

Standardmäßig bietet Ubuntu an, eine Verbindung zu diesen PPTP-Netzwerken herzustellen. Ich möchte es so einrichten, dass es sehr einfach ist, eine Verbindung herzustellen (dh ohne Pakete auf dem Client zu installieren).

Stefano Palazzo
quelle

Antworten:

28

Das Absolute Minimum Server Setup

Was folgt, sind die absoluten Mindestanweisungen, die Sie benötigen, um einen grundlegenden PPTP-VPN-Server unter Ubuntu laufen zu lassen. Die Clients können dann eine VPN-Verbindung zum Server herstellen und ihren Internetverkehr so ​​weiterleiten, dass er über den Server ins Internet gelangt. Lesen Sie wie immer die vollständige Dokumentation, um zu verstehen, was alles geschieht.

Installieren Sie zuerst die erforderliche Software:

sudo apt-get install pptpd

Aktivieren Sie zweitensip_forward im Kernel für IPv4, indem Sie die zugehörige Zeile in /etc/sysctl.conf auskommentieren :

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

Aktivieren Sie drittens NAT (sofern es noch nicht aktiviert ist), damit Benutzer im privaten VPN-Netzwerk ihre Pakete an das Internet weiterleiten können:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

Hinweis: In diesem Handbuch wird davon ausgegangen, dass auf dem Server keine Firewall konfiguriert ist. Wenn Sie eine Firewall auf dem Server haben, z. B. UFW , lesen Sie stattdessen die entsprechende Dokumentation .

Als viertes erstellen Sie für jeden VPN-Benutzer ein Konto in der Datei / etc / ppp / chap-secrets . Ersetzen Sie diesen $USERdurch den tatsächlichen Benutzernamen, den Sie für diesen VPN-Benutzer verwenden möchten.

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

Endlich sind Sie bereit ...

Konfigurieren Sie den Client

Im Network Manager Applet , wählen Sie VPN - VerbindungenVPN konfigurieren , klicken Sie auf Hinzufügen . Wählen Sie im nächsten Bildschirm PPTP als VPN-Typ aus und klicken Sie dann auf Erstellen .

Bildbeschreibung hier eingeben

Geben Sie in diesem Fenster den Hostnamen oder die IP-Adresse Ihres Servers sowie den Benutzernamen und den Schlüssel ein, die Sie der Datei / etc / ppp / chap-secrets auf dem Server hinzugefügt haben .

Klicken Sie nun auf Erweitert .

Bildbeschreibung hier eingeben

Aktivieren Sie in diesem Fenster "Punkt-zu-Punkt-Verschlüsselung (MPPE) verwenden" und wählen Sie die 128-Bit- Sicherheit aus. Deaktivieren Sie die Verwendung der MSCHAP- Authentifizierung (lassen Sie MSCHAPv2 aktiviert).

Klicken Sie abschließend auf OK und dann auf Speichern , um das vorherige Fenster zu schließen.

Sie können die VPN-Verbindung jetzt testen, indem Sie im Network Manager-Applet → VPN- Verbindungen die gerade erstellte Verbindung auswählen. Stellen Sie sicher, dass Sie eine Meldung erhalten, die besagt, dass die VPN-Verbindung erfolgreich war, und navigieren Sie dann zu einer IP-Überprüfungswebsite , um zu überprüfen, ob Ihre IP-Adresse jetzt als IP-Adresse des Servers angezeigt wird.

Wenn Sie eine Meldung erhalten, dass die VPN-Verbindung zum Server fehlgeschlagen ist: Stellen Sie zunächst sicher, dass Sie die Client-Einstellungen korrekt eingegeben haben. Überprüfen Sie zweitens, ob der Client über eine Netzwerkverbindung zum TCP-Port 1723 auf dem Server verfügt. Überprüfen Sie abschließend die Protokolldatei / var / log / messages auf dem Server auf weitere Hinweise. Wenn Ihre VPN-Verbindung erfolgreich ist, Sie jedoch anschließend keine Websites vom Client aus aufrufen können, lesen Sie diese unglaublich hilfreiche Diagnoseanleitung auf der pptpd-Website.

Anmerkungen

Wenn das lokale Netzwerk, mit dem Sie verbunden sind, die Subnetze 192.168.0.0/24 und 192.168.1.0/24 verwendet, treten Probleme auf, da dies vom PPTP-Server standardmäßig verwendet wird. Sie müssen PPTP so konfigurieren, dass in pptpd.conf verschiedene Subnetze verwendet werden .

Es gibt zahlreiche andere Konfigurationsänderungen, die Sie möglicherweise vornehmen möchten. Beispielsweise werden alle Ihre Domainnamensuchvorgänge weiterhin über Ihren lokalen DNS-Server abgefragt, anstatt über den PPTP-Server. Nehmen Sie sich die Zeit, die gesamte Dokumentation zu lesen, um herauszufinden, wie Sie diese und viele andere Einstellungen ändern können.

Michael Kropat
quelle
4

Dieses Tutorial, das ich geschrieben habe, führt Sie durch. Es soll Ihnen helfen, häufige Fehler zu vermeiden, die von Leuten gemacht werden, die VPS verwenden.

Melden Sie sich zuerst in Ihrem VPS-Panel an und aktivieren Sie TUN / TAP und PPP . Wenn Sie keine solche Option haben, wenden Sie sich an Ihren ISP, um dies für Sie zu aktivieren.

Bildbeschreibung hier eingeben

Installieren Sie zuerst dieses Paket:

sudo apt-get install pptpd

Da wir nicht möchten, dass unser VPN öffentlich ist, werden wir Benutzer erstellen.
Ich verwende VI, Sie können NANO oder einen beliebigen Texteditor verwenden

vi /etc/ppp/chap-secrets

Das Format ist

[username] [service] [password] [ip]

Beispiel

john pptpd johnspassword *

* bedeutet, dass der Zugriff von allen IP-Adressen erlaubt ist. Geben Sie die IP-Adresse nur an, wenn Sie eine statische haben.

Bearbeiten der PPTPD-Einstellungen

vi /etc/pptpd.conf

Suchen Sie nach den Einstellungen für localip und remoteip. Entfernen Sie das #(Kommentarzeichen) für beide, damit diese Einstellungen tatsächlich erkannt werden. Ändern Sie localip in Ihre Server-IP. Wenn Sie Ihre Server-IP nicht kennen, können Sie in Ihrem VPS-Kontrollfeld nachsehen.

Die Remote-IP-Adresse ist im Grunde der IP-Bereich, dem Clients (Computer, die mit Ihrem VPN verbunden sind) zugewiesen werden. Wenn Sie beispielsweise den folgenden IP-Bereich möchten: 192.168.120.231-235, kann Ihr VPN-Server Clients 192.168.120.232, 192.168.120.233, 192.168.120.234 und 192.168.120.235 zuweisen. Es liegt an Ihnen, was Sie für dieses Feld verwenden möchten.

Persönlich wähle ich diese Einstellungen:

localip 10.0.0.1
remoteip 10.0.0.100-200

Damit kann ich ca. 200 Clients verbinden.

Fügen Sie DNS-Server zu hinzu /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Sie können dies dem Dateiende hinzufügen oder diese Zeilen suchen, das Kommentarzeichen entfernen und die IP-Adresse in das gewünschte öffentliche DNS ändern.

Weiterleitung einrichten

Es ist wichtig, die IP-Weiterleitung auf Ihrem PPTP-Server zu aktivieren. Auf diese Weise können Sie Pakete zwischen öffentlichen und privaten IP-Adressen weiterleiten, die Sie mit PPTP einrichten. Bearbeiten Sie einfach /etc/sysctl.conf und fügen Sie die folgende Zeile hinzu, falls sie dort noch nicht existiert:

net.ipv4.ip_forward = 1

Führen Sie den Befehl aus, um die Änderungen zu aktivieren sysctl -p

Erstellen Sie eine NAT-Regel für iptables

Dies ist ein wichtiger Teil. Wenn Sie VPS verwenden, werden Sie wahrscheinlich nicht eth0, sondern venet0 verwenden. Sie sollten überprüfen, welche Schnittstelle Sie haben, indem Sie ausführen ifconfig

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

Wenn Sie auch möchten, dass Ihre PPTP-Clients miteinander kommunizieren, fügen Sie die folgenden iptables-Regeln hinzu:

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Auch hier müssen Sie eth0 durch venet0 ersetzen, wenn Sie VPS verwenden.

Ich würde das Laufen empfehlen

sudo iptables-save

Jetzt fungiert Ihr PPTP-Server auch als Router.

Sie können diesen Befehl ausführen, damit der VPN-Dienst beim Start gestartet wird

systemctl enable pptpd

Ich empfehle die Installation von iptables-persistent, damit die Regeln auch nach dem Neustart erhalten bleiben

sudo apt-get install -y iptables-persistent
Luka
quelle
Link wird nirgendwo hingehen, hauptsächlich werde ich diesen Domainnamen nie veröffentlichen, zweitens ist es mein Hosting-Server, drittens glaubt mir: DI kann wirklich nicht einfach Tutorial kopieren-einfügen, hier ist es zu lang.
Luka
Ich befürchte, dass wir auf dieser Website keine Nur-Link-Antworten akzeptieren. Daher wird diese Antwort wahrscheinlich bald gelöscht, wie Sie sehen können, sie befindet sich bereits in der Überprüfungswarteschlange (Link in meinem vorherigen Kommentar).
Zanna vielen Dank! @ Paranoid Panda gut, dann sollten Sie Antwort über mir entfernen, die 2 Stimmen hat, weil es Link enthält: P
Luka
1
Das Problem hierbei war, dass die Antwort nur über einen Link erfolgte. Dies bedeutet, dass die Antwort ungültig wird , wenn der Link aus irgendeinem Grund ausfällt (auch wenn der Link angeblich niemals ausfällt). Nachdem die Antwort von sich selbst abhängig geworden ist (und den Link als Referenz verwendet), ist die Antwort so wie sie ist in Ordnung. Die fragliche Antwort wird derzeit entfernt, es sei denn, sie wird wie Ihr Beitrag angepasst.
Kaz Wolfe
1
Gern geschehen, danke für das Tutorial. Hab beim nächsten Mal keine Angst, einen Beitrag von dieser Länge zu machen. es ist völlig akzeptabel.
Zanna
3

Befolgen Sie dieses Tutorial: PPTP VPN Server mit Ubuntu

  1. Wählen Sie unter Softwareauswahl OpenSSH-Server - für die Fernverwaltung der Maschine - und manuelle Paketauswahl für das aktuelle pptpd-Paket. Wenn Sie mehr Dienste wünschen, zum Beispiel, wenn Sie den Computer auch als Webserver verwenden möchten, können Sie natürlich die zusätzliche Software auswählen. Aus Sicherheitsgründen empfehle ich generell, nur einen von außen zugänglichen Dienst pro Maschine auszuführen, wenn er in einer kritischen Umgebung eingerichtet ist, aber das liegt wirklich bei Ihnen.

  2. Navigieren Sie in der manuellen Auswahl zu nicht installierten Paketen> net, wo Sie pptpd finden. Wählen Sie es aus und drücken Sie zweimal 'g', um das Paket zu installieren.

  3. Lassen Sie die Installation abschließen und starten Sie Ihr System neu.

  4. Führen Sie SSH auf Ihrem neu eingerichteten Computer aus und führen Sie es sudo aptitude update && sudo aptitude safe-upgradezuerst aus, um alle Pakete zu aktualisieren. Bei Bedarf neu starten.

  5. Öffnen Sie die Datei pptpd.conf: Passen Sie sudo nano /etc/pptpd.confdie IP-Einstellungen unten an Ihre Bedürfnisse an. Unter lokaler IP geben Sie die IP in das lokale Netzwerk Ihres VPN-Servers ein (wenn Sie sie nicht kennen, geben Sie 'sudo ifconfig' ein und es werden Ihnen Ihre Netzwerkschnittstellen und die zugewiesenen IPs angezeigt). In diesem Fall empfehle ich, eine statische IP in / etc / network / interfaces oder in Ihrer Routerkonfiguration einzurichten.

  6. Wenn Sie möchten, können Sie den Hostnamen in ändern /etc/ppp/pptpd-options

  7. Geben Sie die Benutzernamen und Passwörter , die Sie wollen Zugriff auf Ihre vpn geben: sudo nano /etc/ppp/chap-secrets. Wenn Sie den Hostnamen im vorherigen Schritt geändert haben, stellen Sie sicher, dass Sie jetzt unter denselben Hostnamen eingebenserver

    Beispiel:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    Wie bei pptp gibt es keine Schlüsseldateisicherheit, die ausschließlich vom Passwort abhängt. Aus diesem Grund sollten Sie ein langes (zB 32 Zeichen), zufälliges Passwort wählen. Hier können Sie ein solches Passwort generieren.

  8. Jetzt müssen wir ip-masquerading einrichten: sudo nano /etc/rc.local

    Fügen Sie die folgenden Zeilen über der Zeile mit der Aufschrift "exit 0" hinzu

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    Optional empfehle ich, Ihren SSH-Server vor Brute-Force-Angriffen zu schützen:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    FALLEN

    (auch oberhalb von 'exit 0' einzufügen)

    Möglicherweise müssen Sie "eth 0" in eine andere Schnittstelle ändern, je nachdem, welche Schnittstelle für die Verbindung mit dem Internet auf Ihrem Computer konfiguriert ist.

  9. Zuletzt kommentieren Sie diese Zeile in /etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. Starten Sie neu

  11. Wenn Ihr VPN-Server keine direkte Verbindung zum Internet herstellt, müssen Sie möglicherweise Port 1723 TCP und GRE an die LAN-IP Ihres VPN-Servers weiterleiten. Informationen zum Hersteller finden Sie im Handbuch Ihres Routers oder auf portforward.com. Auch hier müssen Sie möglicherweise eine statische IP zuweisen /etc/network/interfaces.

Ilias
quelle