Einrichten eines obfuskierten VPN Services (2/2)
Autor |
kikki |
Last edited |
28 Aug 2025 |
Automatisches Wechseln der Bridge (aka Hopping)
Es gibt 2 verschiedene Arten des Hopping Modus: einer erlaubt das automatische Wechseln zwischen verschiedenen Ports auf der gleichen IP Addresse, während der andere das Springen zwischen verschiedenen IP-Adressen und Ports ermöglicht.
Im vorherigen Teil dieses Tutorials hatten wir ein OpenVPN-Gateway und eine darauf verweisende obfs4-Bridge eingerichtet und überprüft, ob unsere Einrichtung einwandfrei funktioniert.
Jetzt wollen wir den Zensoren endgültig den Wind aus den Segeln nehmen, indem wir ständig von einer Bridge zur nächsten wechseln. Das ist ein neuer Pluggable-Transport, den wir im Moment "Hopping PT" nennen.
|
Tip
|
Wir sind offen für Vorschläge für einen besseren Namen! Bei LEAP haben wir eine lange Tradition darin, Dinge nach Tieren zu benennen, die springen, also vielleicht Grashüpfer? |
Anpassen des Gateways
Wir müssen die openvpn-Konfiguration ändern, um UDP zu verwenden, und ein paar weitere Kniffe vornehmen:
Öffne eine Shell in der Gateway-Box:
cd /etc/openvpn
cp server.conf server-hopping.conf
Editiere /etc/openvpn/server-hopping.conf so, dass sie wie folgt aussieht:
|
|
Starte das OpenVPN-Gateway mit den neuen Einstellungen neu
-
systemctl stop openvpn@server.service -
systemctl start openvpn@server-hopping.service
Eine zweite Bridge einrichten
Erstelle eine neue obfs4-Bridge, indem du den Anweisungen im ersten Teil des Tutorials folgst, bis es Zeit ist, :https://docs.leap.se/de/tutorials/obfsvpn-part-1/#_start_the_bridge[die Brücke zu starten].
Option 1: obfs4-Hopping Modus
./server --hop --addr ${LHOST} --remote {RHOST} --state test_data --config test_data/obfs4.jsonOption 2: kcp-Hopping Modus
./server --kcp --hop --addr ${LHOST} --remote ${RHOST} --state test_data --config test_data/obfs4.jsonOption 3: QUIC-Hopping Modus
QUIC benötigt ein Zertifikat und einen privaten Schlüssel, den du mit openssl erstellen kannst:
openssl genpkey -algorithm Ed25519 -out quic.key
openssl req -x509 -new -key quic.key -out quic.crt -subj "/CN=quic"
./server --quic --udp --addr ${LHOST} --remote ${RHOST} --state test_data --config test_data/obfs4.json --quic-tls-key-file quic.key --quic-tls-cert-file quic.crtWenn du die Brücke im Hopping Modus laufen lassen willst, kannst du mithilfe einiger zusätzlicher Umgebungsvariablen den Bereich der erlaubten Ports, die Anzahl der Ports und weitere Einstellungen konfigurieren:
export OBFSVPN_MIN_HOP_PORT=<Untergrenze des erlaubten Portbereiches zum Springen zwischen Ports>
export OBFSVPN_MAX_HOP_PORT=<Obergrenze des erlaubten Portbereiches zum Springen zwischen Ports>
export OBFSVPN_PORT_SEED=<Seed, der bestimmt, welche randomisierten Ports genutzt werden>
export OBFSVPN_PORT_COUNT=<Anzahl der genutzten Port Hopping Ports>
obfsvpn Client im Port Hopping Modus starten
Auf deinem Client-Rechner musst du folgende Anpassungen vornehmen:
* Falls dein obfsvpn Client noch läuft, beende ihn mit Strg+c im entsprechenden Terminal Fenster
* Starte obfsvpn mit folgenden Argumenten:
Option 1: Verbinden zum Server im obfs4-hopping Modus
./obfsvpn-client -c <Zertifikat aus statedir/obfs4_bridgeline.txt> -r <your bridge ip, LHOST> -hOption 2: Verbinden zum Server im kcp-hopping Modus
./obfsvpn-client -c <Zertifikat aus statedir/obfs4_bridgeline.txt> -r <your bridge ip, LHOST> -h -kcpOption 3: Verbinden zum Server im QUIC-hopping Modus
./obfsvpn-client -c <Zertifikat aus statedir/obfs4_bridgeline.txt> -r <your bridge ip, LHOST> -h -quicFalls du serverseitig mithilfe von Umgebungsvariablen den Portbereich, den Seed oder die Anzahl der Ports manuell konfiguriert hast, musst du diese Änderungen auch clientseitig einstellen:
./obfsvpn-client -h -c <Brücken-Zertifikat> -r <Brücken-IP> -min-port <OBFSVPN_MIN_HOP_PORT> -max-port <OBFSVPN_MAX_HOP_PORT> -ps <OBFSVPN_PORT_SEED> -pc <OBFSVPN_PORT_COUNT> <ggf. -kcp oder -quic für den gewählten Hopping Modus>Jetzt wird der Client zwischen verschiedenen Ports auf dem gleichen Brücken-Server springen.
Anpassen des OpenVPN-Clients
sudo su
cd /etc/openvpn
cp client.conf client-hopping.confUnd nun bearbeite client-hopping.conf wie folgt:
|
|
Start!
Der Hopping-Modus unterscheidet sich wesentlich dadurch, dass wir nicht Socks zwischen openvpn und obfsvpn-Client verwenden. Stattdessen verbinden wir uns mit dem obfsvpn-Client über udp, als ob dieser Client ein openvpn-Server wäre.
openvpn --config client-hopping.conf --remote 127.0.0.1:8080
Hoffentlich hat das zu einer erfolgreichen Tunnelinitialisierung geführt. Aus der Sicht von openvpn sollte die Verwendung des Hopping-Modus keinen Unterschied machen.
Anpassungen zum Springen zwischen verschiedenen Bridges
-
Verbinde dich mit deiner ersten Bridge, stoppe sie, falls sie noch läuft
-
Starte den Server neu entsprechend der Anleitung https://docs.leap.se/de/tutorials/obfsvpn-part-2-hopping/#_set_up_a_bridge_in_port_hopping_mode[zum Aufsetzen einer Brücke mit Port Hopping].
-
Stelle sicher, dass beide Server im gleichen Hopping Modus laufen und die gleichen Portkonfigurationen nutzen.
-
Nach dem Neustart der Brücken-Server, kannst dein obfsvpn client mit folgendem Befehl zusätzlich zwischen beiden Servern (IPs) springen.
-
Füge dabei
-kcpoder-quicentsprechend deines Hopping Modus hinzu
./obfsvpn-client -h -c <Brücke1_Zertifikat>,<Brücke2_Zertifikat> -r <Brücke1_IP>,<Brücke2_IP> -min-port <OBFSVPN_MIN_HOP_PORT> -max-port <OBFSVPN_MAX_HOP_PORT> -ps <OBFSVPN_PORT_SEED> -pc <OBFSVPN_PORT_COUNT> -vNatürlich musst du auch den Openvpn client neu starten, aber dieses Mal musst du Routen für beide Brücken-Server hinzufügen:
openvpn --config client-hopping.conf --remote 127.0.0.1:8080 --route <Brück1_IP> 255.255.255.255 net_gateway --route <Brücke2_IP> 255.255.255.255 net_gatewayJetzt sollte dein Tunnel aufgebaut worden sein.
|
Glückwunsch!
|
Das war’s für den Moment! Du hast nun eine Möglichkeit, dich mit deinem eigenen VPN-Gateway zu verbinden und den Datenverkehr automatisch zwischen zwei verschiedenen verschleierten Brücken aufzuteilen. HAPPY CIRCUMVENTING! 🥳 |