Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
05.08.2021, 06:42:28

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25805
  • Letzte: antaresc
Statistiken
  • Beiträge insgesamt: 748239
  • Themen insgesamt: 60197
  • Heute online: 412
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  VPN-Server automatisch nach einer bestimmten Zeitspanne wechseln  (Gelesen 395 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Hallo zusammen,

ich habe mir schon seit längerem Gedanken gemacht, ob es gehen würde, vorhandene OpenVPN-Profile im Network.Manager rotieren zu lassen, beispielsweise alle 60 Minuten zufällig automatisch zu einem anderen Server verbinden lassen.

Ich nutze Linux Mint 20.1 Ulyassa und habe die Verbindungen im Network Manager wie erwähnt manuell eingerichtet. Ich habe aber leider mit derlei Automatisierung nur bedingt Erfahrung.

Hat hier vielleicht jemand eine Idee, ob und wenn ja wie das gehen könnte?


Für hilfreiche Antworten im Vorraus allerbesten Dank! :)
« Letzte Änderung: 11.06.2021, 18:57:45 von Mirko0508 »

Ob man das im Networkmanager machen kann weiß ich nicht da ich es bis jetzt nicht hingekommen haben über den Networkmanager überhaupt eine OpenVPN Verbindung einzurichten.
Es müsste aber per Bash Script recht einfach zu lösen sein.
prinzipiell kannst du ja ne openvpn Verbindung auch ganz einfach im Terminal starten mit
sudo openvpn KONFIGURATIONSDATEI.ovpndie Konfigurationsdateien würde ich dann in einem extra Ordner anlegen, beispielsweise bei mir ~/.openvpn/
was du natürlich auch im command berücksichtigen müsstest.
Ansonsten müsste die Konfigurationsdatei direkt in $HOME/ liegen.
Dann müsstest du halt irgendwie ne Schleife oder so was scripten mit nem Befehl der die Wartezeit einbaut (welcher das ist weiß ich nicht aber das wirst du sicher schnell ergooglen können.
Das einzige "Problem" was sich da noch ergeben könnte wäre die Übergabe der Zugangsdaten fürs jeweilige VPN,
das hab ich bis jetzt auch nicht rausbekommen wie das im BASH Script zu verwirklichen wäre.

Hoffe ich konnte helfen

Edit 2021-06-12_16-28:
Bezüglich der Wartezeiten bzw. zeitlichen Kontrolle könntest du eine crontab verwenden.
Habe ich gerade in einem anderen Thread was zu gelesen.
Ich selbst habe noch nicht damit gearbeitet aber es scheint von Prinzip her recht simpel zu sein.
Eine einführende Dokumentation findest du zum Beispiel unter
https://wiki.ubuntuusers.de/Cron/
« Letzte Änderung: 12.06.2021, 16:27:55 von Kreuz Elf »

Falls es dir nicht bereits bekannt ist:
Dein Bash Script müsstest du in eines der $PATH Directories ablegen, damit du von überall drauf zugreifen kannst und mit
sudo chmod 755 DEINSCRIPT"aktivieren".
Ein hierfür üblichen $PATH Directory wäre /usr/local/bin

Hallo Mirko0508,
ich konnte die Lösung leider nicht testen, da ich nur eine VPN Verbindung habe ;-) Ich weiß auch nicht, wie es sich auf laufende Anwendung auswirkt, wenn die Verbindung plötzlich wechselt. Es werden ja dabei neue Routen gesetzt.
Hier trotzdem eine eventuelle Lösung, ganz ohne sudo und root:

Lass dir mit "nmcli connection show" deine Verbindungen Anzeigen und trage die Namen in das folgende Skript ein (da wo jetzt p1, p2, p3 steht):
#!/bin/bash

# Hier die Profilname eintragen
PROFILES=('p1' 'p2' 'p3')

ACTIVE_FILE="$HOME/.active_vpn"

RANDOM=$$$(date +%s)

PROFILE=${PROFILES[$RANDOM % ${#PROFILES[@]}]}

if [ -f "$ACTIVE_FILE" ]; then
active=$(cat "$ACTIVE_FILE")
echo "Deactivating $active"
nmcli connection down "$active"
rm "$ACTIVE_FILE"
else
echo "No active connection found"
fi

echo "Activating $PROFILE"
nmcli connection up "$PROFILE"
echo "$PROFILE" > "$ACTIVE_FILE"
Speicher das Skript irgendwo ($HOME/bin wäre ein guter Ort) und mache es ausführbar (chmod +x SKRIPT).

Lege die Verzeichnisse für Systemd user service an:
mkdir -p ~/.config/systemd/userund erstelle folgende Dateien:

~/.config/systemd/user/change_vpn.timer
# $HOME/.config/systemd/user/change_vpn.timer
[Unit]
Description=Change VPN provider every hour

[Timer]
OnBootSec=1min
OnUnitActiveSec=1h

[Install]
WantedBy=timers.target

~/.config/systemd/user/change_vpn.service
# $HOME/.config/systemd/user/change_vpn.service
[Unit]
Description=Change VPN provider

[Service]
# Hier den Pfad anpassen
ExecStart=/Pfad/zum/SKRIPT.sh

Jetzt hast du zwei Möglichkeiten:
1. Die Automatik nur bei Bedarf laufen lassen: systemctl --user start change_vpn.timer
2. Die Automatik bei jedem Login starten lassen: systemctl --user enable --now change_vpn.timer

Viele Grüße
Whitie

Zitat
Ich weiß auch nicht, wie es sich auf laufende Anwendung auswirkt, wenn die Verbindung plötzlich wechselt.
Ja das ist auf jeden fall ein Punkt den man bedenken sollte.
Wenn du grade was downloadest / uploadest oder über ssh irgendwas machst oder so könnte ich mir gut vorstellen dass du Probleme kriegst.
Wäre vielleicht von daher gar nicht so besonders sinnvoll sich sowas überhaupt einzurichten.
Es sei denn dir ist das egal.
Was diese Gefahr aus dem weg räumen würde wäre zum Beispiel:
Du legst dir einfach nur ne reihe von bash scripts an die jeweils den Namen des vpn tragen und führst die manuell immer wieder mal aus wenn du weißt dass es gerade nichts zerschießen wird
Oder du nutzt halt die Möglichkeit eins von Whitie

Hallo ihr beiden,

erstmal danke für eure hilfreichen Antworten! :)

Die Anleitung von Whitie werde ich definitiv mal probieren, das klingt ganz vielversprechend. :)

Bei einem automatischen Switch des Servers jedenfalls mache ich mir wenig Gedanken - wenn dieser wenige Sekunden dauert ist das kompensierbar, zumal ich sowieso nur noch per VPN-Verbindung im Netz unterwegs bin und meine Firewall so konfiguiert habe, dass es bei einem Drop der Verbindung der Zugang ins Internet über meine reguläre Leitung sofort gekappt wird. Ein Verbindungsaufbau zu den VPN-Servern ist aber dennoch problemlos möglich.

Hallo Whitie,

folgendes habe ich jetzt schon mal vorbereitet:



Lass dir mit "nmcli connection show" deine Verbindungen Anzeigen und trage die Namen in das folgende Skript ein (da wo jetzt p1, p2, p3 steht):
#!/bin/bash

# Hier die Profilname eintragen
PROFILES=('p1' 'p2' 'p3')

ACTIVE_FILE="$HOME/.active_vpn"

RANDOM=$$$(date +%s)

PROFILE=${PROFILES[$RANDOM % ${#PROFILES[@]}]}

if [ -f "$ACTIVE_FILE" ]; then
active=$(cat "$ACTIVE_FILE")
echo "Deactivating $active"
nmcli connection down "$active"
rm "$ACTIVE_FILE"
else
echo "No active connection found"
fi

echo "Activating $PROFILE"
nmcli connection up "$PROFILE"
echo "$PROFILE" > "$ACTIVE_FILE"
Speicher das Skript irgendwo ($HOME/bin wäre ein guter Ort) und mache es ausführbar (chmod +x SKRIPT).

Lege die Verzeichnisse für Systemd user service an:
mkdir -p ~/.config/systemd/userund erstelle folgende Dateien:

~/.config/systemd/user/change_vpn.timer
# $HOME/.config/systemd/user/change_vpn.timer
[Unit]
Description=Change VPN provider every hour

[Timer]
OnBootSec=1min
OnUnitActiveSec=1h

[Install]
WantedBy=timers.target

~/.config/systemd/user/change_vpn.service
# $HOME/.config/systemd/user/change_vpn.service
[Unit]
Description=Change VPN provider

[Service]
# Hier den Pfad anpassen
ExecStart=/Pfad/zum/SKRIPT.sh

Ich würde es testweise jetzt erstmal auf Bedarf laufen lassen. Was muss ich da dann tun? Im Terminal dann einfach den Befehl ( im Ordner /systemd/user (?) ) "start change_vpn.timer" eingeben, oder im Terminal einfach "systemctl --user start change_vpn.timer" und das würde dann bei einem Neustart wieder verworfen werden?
« Letzte Änderung: 12.06.2021, 21:33:36 von Mirko0508 »

Wenn alle Dateien an den richtigen Orten sind, einfach im Terminal:
systemctl --user start change_vpn.timer
Danach kann man noch folgendes prüfen:
systemctl --user list-timers
Gruß
Whitie