TL; DR In diesem Artikel wird der einfachste Weg zum Konfigurieren eines VPN-Servers beschrieben, dessen IP-Adresse zum Verbinden von VPN-Clients sich von der IP-Adresse unterscheidet, von der aus Clients auf das Internet zugreifen.Verwenden Sie ein VPN, um die Privatsphäre im Internet zu schützen, und mieten Sie dafür Ihren eigenen Server? Sind Sie der einzige Client, der weltweit eine Verbindung zu diesem Server herstellt? Ist es so schwer, deine echte IP-Adresse zu finden? Mit dem Inkrafttreten des Federpakets wird es viel einfacher.
Double VPN ist ein beliebtes Thema, über das viel spekuliert wird. Oft wird dieser Begriff als völlig andere Technologie bezeichnet, aber fast immer bedeutet er Internetverbindung und Austrittspunkte, die auf der Ebene der IP-Adressen voneinander getrennt sind. Wir werden den einfachsten Weg in Betracht ziehen, einen VPN-Server in diesem Modus zu konfigurieren, der keine zusätzliche Konfiguration auf der Serverseite erfordert und es Ihnen ermöglicht, die maximale Geschwindigkeit und die niedrigste Latenz zu erreichen.
Bedrohungsmodell
Um sich vor etwas zu schützen, müssen Sie das Bedrohungsmodell klar verstehen. Wir werden nicht über neue Gesetze sprechen, nach denen Anbieter den gesamten Kundenverkehr speichern müssen, aber wir können definitiv sagen, dass es sich um Verbindungsdaten handelt, die sogenannten Netflow, Speicherung ist recht einfach und wird schon lange durchgeführt. Das heißt, die Tatsache, dass zu einer bestimmten Tageszeit eine bedingte IP-Adresse
1.1.1.1
mit der Adresse
2.2.2.2
wird, wird aufgezeichnet.
Wenn Sie auf der Grundlage des Anbieters, der Stadt oder des Landes auf solche Informationen zugreifen können, müssen Sie lediglich feststellen, wer sich hinter dem VPN versteckt.
Um die Privatsphäre bei Verwendung eines VPN zu erhöhen, müssen Sie den Verbindungspunkt und den Internetzugangspunkt auf IP-Ebene trennen. Im Bild oben befindet sich unser Benutzer hinter dem Zaun unter der Kontrolle von Irina Yarovoy. Irina erinnert sich streng an alle Verbindungen, die durch den Zaun verlaufen. Der Benutzer stellt als anständiger Bürger eine Verbindung zur Adresse
good.citizen.vpn
, während er von der Adresse
super.cool.guy.vpn
. Für Irina sehen diese beiden Verbindungen daher nicht miteinander verbunden aus.
Was sind duale VPNs?
Unter dem Namen "doppeltes" VPN werden oft verschiedene Dinge verstanden, aber fast immer bedeutet dies Knoten der Verbindung und des Zugangs zum Internet, die geografisch oder auf Netzwerkebene voneinander getrennt sind. Manchmal ist es nur ein Marketing-Trick von VPN-Anbietern, was absolut nichts bedeutet. Solche Dienste können als "dreifache" und "vierfache" VPNs bezeichnet werden.
Wir werden die typischsten Schemata analysieren, die in der Praxis verwendet werden.
VPN zwischen Servern
Der häufigste Weg. In diesem Modus stellt der Client nur eine VPN-Verbindung zum ersten Server her. Der Tunnel zum zweiten Server wird auf dem ersten Server konfiguriert, und der gesamte Datenverkehr vom Client geht zum zweiten Server usw. Es können mehrere Zwischenserver vorhanden sein. In diesem Fall kann der Tunnel zwischen den Servern mit einem anderen Protokoll als dem Protokoll installiert werden, über das der Client verbunden ist, z. B. IPsec, oder ohne Verschlüsselung, z. B. GRE oder IPIP. In diesem Modus werden alle Zwischenserver
in der Routenverfolgung angezeigt . Es gibt keine Möglichkeit, genau zu überprüfen, wie die Zwischenserver auf der Clientseite verbunden sind, sodass Sie nur dem Anbieter vertrauen können.
Während der gesamten Verkehrsroute bleibt die minimale MTU (Maximum Transmission Unit) gleich dem Wert des allerersten Tunnels, und jeder Zwischenserver
hat Zugriff auf entschlüsselten Clientverkehr .

VPN über Proxy
Auch ein ziemlich üblicher Weg. Wird häufig verwendet, um den VPN-Verkehr unter einem anderen Protokoll zu maskieren, beispielsweise in China. Diese Methode ist bequemer als eine Kette von Proxys, da mit einem VPN der gesamte Systemverkehr einfach zum Tunnel geleitet werden kann. Es gibt auch Tools zum Abfangen von Systemaufrufen von Programmen und zum Umleiten an Proxys: ProxyCap, Proxifier. Sie sind jedoch weniger stabil, da sie manchmal Anforderungen verpassen und den Proxy umgehen oder mit einigen Programmen falsch arbeiten.
In diesem Modus ist der Proxyserver in der Routenverfolgung nicht sichtbar.

VPN innerhalb von VPN
Der paranoideste und langsamste Weg: Alle Tunnel erheben sich auf der Client-Seite, wobei sich beide ineinander befinden. Diese Methode erfordert eine raffinierte Konfiguration der Routen auf der Clientseite und den Start aller VPN-Clients in der richtigen Reihenfolge. Dies ist schlecht für Latenz und Leistung, aber Zwischenserver haben keinen Zugriff auf den offenen Datenverkehr des Clients. Alle Kapselungskosten werden zusammengefasst, und die maximale Paketgröße (MTU), die dem Client letztendlich zur Verfügung steht, nimmt abhängig von der Anzahl der Tunnel ab. Zwischenserver sind in der Routenverfolgung nicht sichtbar.

Konfigurieren Sie VDS
Der einfachste Weg, ein VPN mit geteilten Ein- und Ausstiegspunkten einzurichten, besteht darin, mehrere IP-Adressen mit einem einzigen virtuellen Server zu verbinden. Mit dieser Methode können Sie maximale Geschwindigkeit und minimale Verzögerungen erzielen, da der Datenverkehr tatsächlich auf einem einzelnen Server beendet wird. Bei
Vdsina.ru können Sie dies selbst über das Bedienfeld tun. Während IPv4 überall endet, geben wir zusätzliche IP-Adressen auch auf Servern für 60 Rubel aus!
Wir werden die Serverkonfiguration Schritt für Schritt analysieren.
Wählen Sie einen Server
Wir bestellen VDS mit einem geeigneten Tarif im erforderlichen Rechenzentrum. Aufgrund unserer Aufgabe werden wir ein weiter entferntes Rechenzentrum in den Niederlanden auswählen;)

Verbinden Sie eine zusätzliche IP-Adresse
Nach dem Kauf einer zusätzlichen IP-Adresse müssen Sie diese
gemäß den Anweisungen konfigurieren.

Weisen Sie der Übersichtlichkeit halber IP einen PTR-Datensatz zu. Dies ist der Domänenname, der angezeigt wird, wenn die IP-Adresse wieder in eine Domäne konvertiert wird. Dies kann ein beliebiger Wert sein, einschließlich einer nicht vorhandenen Domäne.
Als Beispiele verwenden wir die folgenden Werte:
xxx.xxx.38.220 — super.cool.guy.vpn

Zwei IP-Überprüfungen
Es ist wichtig zu beachten, dass die IP-Adresse, die ursprünglich auf dem Server festgelegt wurde, der Austrittspunkt ist, sodass die neue Adresse der Einstiegspunkt ist. Stellen Sie über SSH eine Verbindung zum Server her und überprüfen Sie, welche Adresse als externe Adresse verwendet wird.
Zu diesem
Zweck ist es am einfachsten, den Dienst
ifconfig.co über die Konsole zu verwenden. Bei der Anforderung über Curl wird die IP-Adresse zurückgegeben, von der die Anforderung gestellt wurde.
$ curl ifconfig.co xxx.xxx.38.220
Die letzten Zahlen zeigen, dass unsere externe Adresse wirklich mit dem Austrittspunkt übereinstimmt. Versuchen wir, den korrekten Betrieb der zweiten IP als Einstiegspunkt zu überprüfen. Verwenden Sie dazu einfach die in SSH integrierte SOCKS-Proxy-Funktion.
Befehle werden auf dem Client ausgeführt:
ssh -D 9999 root@good.citizen.vpn
Der erste Befehl richtet eine SSH-Sitzung mit der Adresse good.citizen.vpn ein und aktiviert gleichzeitig einen SOCKS-Proxy innerhalb dieser Sitzung, der am lokalen Port verfügbar ist. Der zweite macht eine normale HTTP-Anfrage über diesen Proxy.
Es ist wichtig, sich daran zu erinnern, dass unsere Beispiele fiktive Domainnamen für Abfragen verwenden. Sie werden nur mit einer PTR-Auflösung angezeigt, und eine vollständige Anfrage an sie kann nicht gestellt werden. Daher müssen Sie zu diesem Zeitpunkt über die IP-Adresse auf den Server zugreifen.
IKEv2-Serverkonfiguration
IPsec IKEv2 ist ein modernes VPN-Protokoll, das von fast allen Betriebssystemen sofort unterstützt wird. Es wird als Standardprotokoll in Windows, MacOS und iOS verwendet. Gleichzeitig ist keine Installation von Software von Drittanbietern erforderlich und funktioniert in den meisten Fällen schneller als OpenVPN. Es gab bereits
Artikel zum Einrichten des IKEv2-Servers auf dem Hub , aber alle beschreiben die Verwendung selbstsignierter Zertifikate und sind insofern unpraktisch, als Sie das Stammzertifikat auf der Seite des VPN-Clients installieren müssen.
Wir werden ein Beispiel für die Serverkonfiguration mithilfe eines vertrauenswürdigen Zertifikats von Let's Encrypt analysieren. Auf diese Weise können Sie keine externen Stammzertifikate für den Client installieren, sondern nur einen Benutzernamen und ein Kennwort eingeben.
Servervorbereitung
Wir werden einen Server verwenden, der auf Ubuntu 18.04 basiert, aber die Anweisung ist auch für die meisten modernen Distributionen geeignet.
Wir aktualisieren das System und installieren die erforderlichen Pakete
apt update && apt upgrade apt install certbot strongswan libstrongswan-extra-plugins
Zertifikatausstellung
Um ein vertrauenswürdiges Zertifikat auszustellen, müssen Sie die reale Domäne an die IP-Adresse des Einstiegspunkts weiterleiten. Wir werden diesen Artikel nicht im Detail betrachten, da er den Rahmen des Artikels sprengt. Als Beispiel verwenden wir die fiktive Domain
good.citizen.vpnWenn Sie bereits einen Webserver auf dem Server haben, verwenden Sie die entsprechende Methode zum Ausstellen des Zertifikats über certbot oder einen anderen Client für Let's Encrypt. In diesem Beispiel wird davon ausgegangen, dass der HTTP-Port (80) nicht belegt ist.
certbot certonly --standalone --agree-tos -d good.citizen.vpn
Beantwortung der Fragen des Assistenten? Wir erhalten ein unterschriebenes Zertifikat und einen Schlüssel
Für die IKEv2-Serverauthentifizierung werden dieselben X.509-Zertifikate wie für verwendet
Https Damit Strongswan diese Zertifikate verwenden kann, müssen sie in den Ordner /etc/ipsec.d kopiert werden.
So sollten sich die Zertifikate befinden:
cp /etc/letsencrypt/live/good.citizen.vpn/cert.pem /etc/ipsec.d/certs/ cp /etc/letsencrypt/live/good.citizen.vpn/privkey.pem /etc/ipsec.d/private/ cp /etc/letsencrypt/live/good.citizen.vpn/chain.pem /etc/ipsec.d/cacerts/
Da letsencrypt-Zertifikate häufig neu ausgestellt werden, ist es unpraktisch, dies manuell zu tun. Daher automatisieren wir diesen Prozess mithilfe des Hooks für certbot.
Die Aufgabe des Skripts besteht darin, bei jeder Aktualisierung des Zertifikats drei Dateien in den gewünschten Ordner zu kopieren und dann den Befehl strongswan zu senden, um die Zertifikate erneut zu lesen.
Erstellen Sie die Datei
/etc/letsencrypt/renewal-hooks/deploy/renew-copy.sh und machen Sie sie ausführbar.
#!/bin/sh set -e for domain in $RENEWED_DOMAINS; do case $domain in good.citizen.vpn) daemon_cert_root=/etc/ipsec.d/ # Make sure the certificate and private key files are # never world readable, even just for an instant while # we're copying them into daemon_cert_root. umask 077 cp "$RENEWED_LINEAGE/cert.pem" "$daemon_cert_root/certs/" cp "$RENEWED_LINEAGE/chain.pem" "$daemon_cert_root/cacerts/" cp "$RENEWED_LINEAGE/privkey.pem" "$daemon_cert_root/private/" # Reread certificates /usr/sbin/ipsec reload /usr/sbin/ipsec purgecerts /usr/sbin/ipsec rereadall ;; esac done
Nach jeder erneuten Ausstellung des Zertifikats kopiert das Skript die neuen Dateien in die strongswan-Ordner und sendet einen Befehl an den Dämon, um die Zertifikate erneut zu lesen.
Strongswan Setup
Fügen Sie die Konfiguration strongswan /etc/ipsec.conf hinzu
config setup
Anmeldungen und Kennwörter von VPN-Clients werden in der Datei
/etc/ipsec.secrets festgelegtIn dieser Datei müssen Sie auch den Namen des privaten Schlüssels angeben, den wir zuvor aus dem Ordner letsencrypt kopiert haben:
# /etc/ipsec.d/private/ : RSA privkey.pem # VPN # : EAP "" IrinaYarovaya : EAP "PleaseLoveMe123" Mizooleena : EAP "IwannaLoveToo3332"
In diesem Stadium können Sie den strongswan-Server neu starten und prüfen, ob die neue Konfiguration aktiviert wurde:
$ systemctl restart strongswan $ ipsec statusall Virtual IP pools (size/online/offline): 10.0.1.0/24: 254/0/0 Listening IP addresses: xxx.xxx.38.220 Connections: ikev2-mschapv2: %any...%any IKEv2, dpddelay=35s ikev2-mschapv2: local: [CN=good.citizen.vpn] uses public key authentication ikev2-mschapv2: cert: "CN=good.citizen.vpn" ikev2-mschapv2: remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any' ikev2-mschapv2: child: 0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear ikev2-mschapv2-apple: %any...%any IKEv2, dpddelay=35s ikev2-mschapv2-apple: local: [good.citizen.vpn] uses public key authentication ikev2-mschapv2-apple: cert: "CN=good.citizen.vpn" ikev2-mschapv2-apple: remote: uses EAP_MSCHAPV2 authentication with EAP identity '%any' ikev2-mschapv2-apple: child: 0.0.0.0/0 === dynamic TUNNEL, dpdaction=clear
Sie können sehen, dass die Konfiguration erfolgreich aktiviert und das Zertifikat verbunden wurde. Zu diesem Zeitpunkt können Sie bereits eine Verbindung zum VPN-Server herstellen, jedoch ohne Internetzugang. Um Clients im Internet freizugeben, müssen Sie die Weiterleitung aktivieren und NAT konfigurieren.
NAT-Setup
Wir aktivieren Weiterleitungspakete:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p
Schalten Sie NAT ein. Es ist wichtig zu beachten, dass dies nur ein Beispiel für eine minimale Konfiguration von iptables ist. Passen Sie den Rest der Regeln an Ihre Bedürfnisse an.
ethName0 - durch Ihren Schnittstellennamen ersetzen
10.0.1.0/24 - Der Bereich der IP-Adressen, die an VPN-Clients ausgegeben werden. Wir haben es in
/etc/ipsec.conf gefragt111.111.111.111 - die IP-Adresse des Exit-Punkts, in unserem Beispiel die Adresse super.cool.guy.vpn
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o ethName0 -j SNAT --to-source 111.111.111.111
Debuggen
In dieser Phase der Konfiguration sollten wir einen voll funktionsfähigen Server erhalten, zu dem Clients bereits eine Verbindung herstellen können. Bevor Sie fortfahren, sollten Sie dies überprüfen, indem Sie die Verbindung überprüfen.
Bei Verbindungsproblemen können Sie das Protokoll in Echtzeit anzeigen:
journalctl -f -u strongswan
Start beim Start
Wenn alles erfolgreich ist, können Sie beim Start beim Start strongswan hinzufügen:
systemctl enable strongswan
Iptables-Regeln speichern
Um die iptables-Regeln nach dem Neustart zu speichern, gibt es ein spezielles
iptables-persistentes Paket. Es ist wichtig zu beachten, dass die aktuellen Regeln gespeichert und zum Start hinzugefügt werden.
apt install iptables-persistent
Kundeneinrichtung
Das Einrichten auf der Clientseite ist äußerst einfach. Teilen Sie dem Client einfach die Serveradresse, den Benutzernamen und das Kennwort mit. Für macOS und iOS können Sie Autokonfigurationsprofile erstellen, die ausreichen, um mit zwei Klicks aktiviert zu werden.
Windows-SetupIn neuen Windows-Versionen wird IKEv2 in einem einfachen Assistenten konfiguriert, auf den über das WiFi-Verbindungsmenü zugegriffen werden kann.

Windows legt keine Standardroute für eine solche Verbindung fest, daher werden wir sie manuell installieren. Wechseln Sie in den Eigenschaften der VPN-Verbindung zusätzlich zu den Eigenschaften von TCP / IPv4 -> und aktivieren Sie das Kontrollkästchen "Gateway in einem Remote-Netzwerk verwenden".
anklickbar MacOS-SetupMacOS unterstützt IKEv2 ab Version 10.11 (El Capitan). Die Verbindung wird über das Menü Netzwerkeinstellungen hergestellt.

Fügen Sie eine neue Verbindung hinzu. Der Name der Verbindung ist ein beliebiger Name.

Um ein Zertifikat zu authentifizieren, müssen Sie einen Domänennamen angeben. Gleichzeitig können Sie im Feld "Serveradresse" die IP-Adresse des Servers und die Domäne nur unter "Remote-ID" angeben. Dann wird keine DNS-Auflösung für die Verbindung durchgeführt und dies geschieht etwas schneller.

Der Benutzername und das Kennwort werden in der Datei
/etc/ipsec.secrets angegeben

IOS-SetupDie IOS-Konfiguration kann manuell über den Assistenten erfolgen. Es ist jedoch wesentlich bequemer, das automatische Konfigurationsprofil mobileconfig zu verwenden.
Die manuelle Optimierung hat eine ähnliche Bedeutung wie das Desktop-MacOS:
Einstellungen -> VPN -> VPN-Konfiguration hinzufügen
Automatisches Konfigurationsprofil für Apple-Geräte
Autokonfigurationsprofile .mobileconfig ist eine XML-Konfigurationsdatei, die alles von SSL-Zertifikaten bis zu VPN-Verbindungen konfigurieren kann.
Es reicht aus, wenn der Benutzer auf die Datei klickt, und alle erforderlichen Einstellungen werden automatisch installiert.
Beispielkonfiguration für die Verbindung zu unserem IKEv2-Server.
Um eine Datei für Ihre Konfiguration zu konfigurieren, bearbeiten Sie einfach einige Parameter in dieser Vorlage:
AuthName - Benutzername aus der Datei
/etc/ipsec.secretsAuthPassword - Benutzerkennwort
/etc/ipsec.secretsRemoteAddress - IP-Adresse der Domäne oder des Servers
RemoteIdentifier - Domäne, für die das Zertifikat ausgestellt wird
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>IKEv2</key> <dict> <key>AuthName</key> <string>IrinaYarovaya</string> <key>AuthPassword</key> <string>PleaseLoveMe123</string> <key>RemoteAddress</key> <string>123.123.123.123</string> <key>RemoteIdentifier</key> <string>good.citizen.vpn</string> <key>AuthenticationMethod</key> <string>Certificate</string> <key>ChildSecurityAssociationParameters</key> <dict> <key>DiffieHellmanGroup</key> <integer>14</integer> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>LifeTimeInMinutes</key> <integer>1440</integer> </dict> <key>DeadPeerDetectionRate</key> <string>High</string> <key>ExtendedAuthEnabled</key> <true/> <key>IKESecurityAssociationParameters</key> <dict> <key>DiffieHellmanGroup</key> <integer>14</integer> <key>EncryptionAlgorithm</key> <string>AES-256</string> <key>IntegrityAlgorithm</key> <string>SHA2-256</string> <key>LifeTimeInMinutes</key> <integer>1440</integer> </dict> <key>OnDemandEnabled</key> <integer>1</integer> <key>OnDemandRules</key> <array> <dict> <key>Action</key> <string>Connect</string> </dict> </array> </dict> <key>IPv4</key> <dict> <key>OverridePrimary</key> <integer>1</integer> </dict> <key>PayloadDescription</key> <string>Configures VPN settings</string> <key>PayloadDisplayName</key> <string>VPN</string> <key>PayloadIdentifier</key> <string>com.apple.vpn.managed.96C1C38F-D4D6-472E-BA90-9117ED8896B5</string> <key>PayloadType</key> <string>com.apple.vpn.managed</string> <key>PayloadUUID</key> <string>96C1C38F-D4D6-472E-BA90-9117ED8896B5</string> <key>PayloadVersion</key> <integer>1</integer> <key>UserDefinedName</key> <string>London VPN</string> <key>VPNType</key> <string>IKEv2</string> </dict> </array> <key>PayloadDisplayName</key> <string>My Super IKEv2 VPN</string> <key>PayloadIdentifier</key> <string>vpn.googd.citizen</string> <key>PayloadUUID</key> <string>F3FAD91C-019C-4A79-87A1-CF334C583339</string> <key>PayloadType</key> <string>Configuration</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Zusammenfassung
Wir haben die einfachste Server-Setup-Option mit beabstandeten Ein- und Ausstiegspunkten gezeigt. Mit dieser Konfiguration können Sie die maximale VPN-Geschwindigkeit erreichen, da keine zusätzlichen Tunnel zwischen den Servern verwendet werden, obwohl sich die IP-Adressen der Ein- und Ausstiegspunkte in verschiedenen Subnetzen befinden. Mit diesem Ansatz können Sie weiter experimentieren, indem Sie mehr als zwei IP-Adressen mit dem Server verbinden.
Das IKEv2-Protokoll eignet sich perfekt für die Verwendung unter Desktop-Betriebssystemen für die tägliche Arbeit, da es maximal nativ in das System integriert ist und bei sonst gleichen Bedingungen eine höhere Geschwindigkeit als bei VPN-Programmen von Drittanbietern ermöglicht.


Abonnieren Sie unseren Instagram-Entwickler
