# Hier habe ich einen OpenVPN-Server implementiert. # Clients aus meinem lokalen Netz verbinden sich über meinen Router # mit dem Server (automatisch beim booten des Client und schedule reconnect nach Sleep oder Verbindungsabbrüchen) # Nach erfolgreicher Verbindung wird der OpenVpn Tunnel über das Device tun0 via UDP-Protokoll aufgebaut und die Verbindung ist sicher. # Alle verbundenen Clients können sich über ihre virtuellen Tunneladressen aus dem Netz 10.8.0.0 erreichen (ping, SSH, SFTP) # Durch das stete prüfen ob die Verbindung funktioniert und ggf. einer erneuten etablierung innerhalb weniger Sekunden habe ich sozusagen ein # zuverlässiges VPN und meine privaten Daten sind mit meinem Laptop/Handy weltweit sicher erreichbar. # Ich habe hier mal die Server und Client Konfiguration am Beispiel eines Ubuntu 16.04 LTS- Servers und einem LinuxMint 18 Sarah Cleint sowie # Hier habe ich einen OpenVPN-Server implementiert. # Clients aus meinem lokalen Netz verbinden sich über meinen Router # mit dem Server (automatisch beim booten des Client und schedule reconnect nach Sleep oder Verbindungsabbrüchen) # Nach erfolgreicher Verbindung wird der OpenVpn Tunnel über das Device tun0 via UDP-Protokoll aufgebaut und die Verbindung ist sicher. # Alle verbundenen Clients können sich über ihre virtuellen Tunneladressen aus dem Netz 10.8.0.0 erreichen (ping, SSH, SFTP) # Durch das stete prüfen ob die Verbindung funktioniert und ggf. einer erneuten etablierung innerhalb weniger Sekunden habe ich sozusagen ein # zuverlässiges VPN und meine privaten Daten sind mit meinem Laptop/Handy weltweit sicher erreichbar. # Ich habe hier mal die Server und Client Konfiguration am Beispiel eines Ubuntu 16.04 LTS- Servers und einem LinuxMint 18 Sarah Cleint sowie # eines Android Smartphones für alle die sowas auch machen wollen zusammen gestellt. # Ich wünsche euch gutes Gelingen 😉
# Anmelden am V-Server per SSH als root oder besser User einloggen und dann mit sudo -i arbeiten.
apt-get update && apt-get dist-upgrade apt-get install openvpn easy-rsa
# RSA-Skripte in ein Unterveizeichnis kopieren um Änderungen durch Paketupgrades zu verhindern
mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
nano /etc/openvpn/easy-rsa/vars
#––––––––––––––––- vars –––––––––––––––––––––––––– # Werte alle Ändern, diese werden nämlich verschlüsselt !!!
# Verschlüsselung mit 4096
export KEY_SIZE=4096 ... export CA_EXPIRE=3650 # 7300 = 20 Jahre # 9125 = 25 Jahre ... export KEY_EXPIRE=3650 # 7300 = 20 Jahre # 9125 = 25 Jahre ... export KEY_COUNTRY="DE" export KEY_PROVINCE="NRW" export KEY_CITY="Düsseldorf" export KEY_ORG="Meine Firma" export KEY_EMAIL="name@adresse.de" export KEY_OU="Analyst" ... export KEY_NAME="My VPN"
#–––––––––––––––– vars ––––––––––––––––––––––––––-
# Create Certificate Authority (CA) für Signaturen
cd /etc/openvpn/easy-rsa/ source vars # die Varaibalen sollten immer vor jedem Aufruf eines Skriptes aus diesem Vereichnis gesetzt werden!!!!
# dann das Root-CA erstellen
./build-ca
# danach ./build-key-server server
cp server.crt server.key ca.crt dh4096.pem /etc/openvpn/
# Jetzt sind die Client-Zertifikate dran. # Ich empfehle Client-Zertifikate für jeden Client einzeln zu erstellen und # keine Passphrasen-Abfrage zu benutzen, da die Cleints dann nicht (ohne großen Aufwand) automatisch gestartet werden können. cd /etc/openvpn/easy-rsa/ source vars
./build-key Jupiter
#********************************************
/etc/openvpn/easy-rsa/keys/Jupiter.crt /etc/openvpn/easy-rsa/keys/Jupiter.key /etc/openvpn/ta.key /etc/openvpn/easy-rsa/Jupiter.conf
# Dies Prozedur kann nun (ab #******) für alle weiteren Cleitns wiederholt werden (z.B. für Saturn, # Mars, Uranus....etc.)
# VORBEREITUNGEN ––––––––––––––––––––––––––––––––––––––––––––––– #============================================================================================================ mkdir /etc/openvpn/ccd
# speichern und exit
# START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES #–––––––––––––––––––––––––––––––––––––––––––––––––––––––– # Hier mit eth0 das korrekte Interface angeben, bei VServern oft "venet0"
# Hier
DEFAULT_FORWARD_POLICY="ACCEPT"
# einstellen.
ufw allow OpenSSH ufw default deny
ufw enable uft status
#!/bin/bash
KEY_DIR=/etc/openvpn/easy-rsa/keys OUTPUT_DIR=/etc/openvpn/ccd/files BASE_CONFIG=/etc/openvpn/ccd/base.conf
cat ${BASE_CONFIG} \ <(echo -e '<ca>') \ ${KEY_DIR}/ca.crt \ <(echo -e '</ca>\n<cert>') \ ${KEY_DIR}/${1}.crt \ <(echo -e '</cert>\n<key>') \ ${KEY_DIR}/${1}.key \ <(echo -e '</key>\n<tls-auth>') \ ${KEY_DIR}/ta.key \ <(echo -e '</tls-auth>') \ > ${OUTPUT_DIR}/${1}.ovpn
#––––––––––––––––––––
# Die BASE_CONFIG=/etc/openvpn/ccd/base.conf Datei wird später im Abschnitt Client-Konfiguration erstellt
sudo adduser --system --no-create-home --disabled-login --ingroup geheimvpn geheimvpn
# Der Nutzer kann also gar nix und das ist gut, weil sicher. 😉
# SERVER-Konfiguration-––––––––––––––––––––––––––––––––––––- #================================================================================================ # Server-Konfiguration durchführen für UDP-Protokoll auf Port 443. # Default wäre port 1194, allerdings ist der nicht in jedem WiFi-Hotspot offen. # Port 443 wird normalerweise für HTTPS verwendet und kann daher auch für openvpn # verwendet werden. Port 443 ist meisten offen in der Aussenwelt.
nano /etc/openvpn/server.conf
#––––––––- /etc/openvpn/server.conf –––––––––––––––––––––––––– port 443 proto udp ca /etc/openvpn/ca.cert cert /etc/openvpn/server.crt key /etc/openvpn/server.key
# Diffie-Hellmann-Parameter angeben
dh dh4096.pem
# Das ist sozusagen der Tunnel, den openvpn erstellt. # Die virtuellen Client-IP's werden dann hieraus genommen.
server 10.8.0.0 255.255.255.0 # Tunnel
# Der Datensatz in openvpn mit der Zuordnung des virtuellen Client zu seiner virutellen IP soll # auch bei Verbindungsabbruch (z.B. restart openvpn) erhalten bleiben
ifconfig-pool-persists ipp.txt
./make_config.sh Jupiter
#Die ovpn Dateien liegen im Unterverzeichnis "files". #Diese können auf die jeweiligen Clients aufgespielt werden.
cd files ll Jupiter.ovpn
#Die .ovpn Dateien haben dann alles Zertifikate inline enthalten, was das portieren zum Client #bequemer macht.
#–––––––––––––––––––––––––––––––––––––––––––
# (wie die key files oder .ovpn-Files) anlegen ohne Extension (also z.B. # touch /etc/openvpn/ccd/Jupiter
ifconfig-push 10.8.0.5 10,8,0,6
# Das sieht eigenartig aus. ist aber so! Es muss aber ein zweiter Eintrag mit einer IP +1 hinein.
# [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38] # [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58] # [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78] # [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98] # [101,102] [105,106] [109,110] [113,114] [117,118] # [121,122] [125,126] [129,130] [133,134] [137,138] # [141,142] [145,146] [149,150] [153,154] [157,158] # [161,162] [165,166] [169,170] [173,174] [177,178] # [181,182] [185,186] [189,190] [193,194] [197,198] # [201,202] [205,206] [209,210] [213,214] [217,218] # [221,222] [225,226] [229,230] [233,234] [237,238] # [241,242] [245,246] [249,250] [253,254]
# erlaubt. Wobei der Openvpn-Server dem Client dann immer die erste der beiden Zahlen als fixe IP # vergibt.
# Das muss man unbeddingt einhalten sonst startet der Client nicht.
# Damit ist seine IP die 73 im Netz. Für alle Ubuntu Clients oder Windows Clients funktioniert aber # die +1 Regel.
#––––––––––––––––––––––––––––––––––––––––––––––– #============================================================================================== # Client installieren
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! WICHTIG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # Ebenso muss die Protweiterleitung oder Port-Triggering im Router enabled werden. Da dies für jedes Modell # unterschiedlich ist kann ich hier kein allgemeingültiges Beispiel gegeben werden # Bei meiner einfachen Router ist das sehr einfach über das Menü zu erreichen # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
sudo apt-get install openvpn sudo apt-get install network-manager-gnome network-manager-openvpn-gnome network-manager-openvpn
cd /etc/openvpn sftp $Deine_Server_IP cd /etc/openvpn/ccd/files get Jupiter.ovpn exit
# Damit der Client automatisch gestartet werden kann muss die Dateiextension umbenannt # werden in .conf
mv /etc/openvpn/Jupiter.ovpn /etc/openvpn/Jupiter.conf
sudo openvpn --config Jupiter.conf
oder einfach
sudo service openvpn start
# Checken ob der Tunnel aufgebaut ist # Vom Server aus Jupiter anpingen ping 10.8.0.5
#–––––––––––––––––––––––––––––––––––––––––––––––––-
# Auf einem Linux Mint/Ubuntu-Client # Kopieren der Datei Jupiter.ovpn nach /etc/openvpn und umbenennen
# rename /etc/openvpn/Jupiter.ovpn /etc/openvpn/Jupiter.conf
# Autostart funktioniert natürlich nur, ohne weitere Einstellungen, wenn keine Passphrase für das Client-Zertifikat benötigt # wird, also das Client-Zertifikat mit ./build-key und nicht mit ./build-key-pass erstell worden # ist.
# Soll der Client automatisch beim booten starten und eine Verbindung zum Tunnel sudo ln -s /lib/systemd/system/openvpn\@.service openvpn\@Jupiter.service
# letzteeres sollte aber bereits schon durch 1.) erledigt ein
# Damit sollte der Tunnel beim booten automatisch aufgebaut werden, sofern das Netzwerk an ist.
# ein Provider reset oder wenn die lease abgelaufen oder einfach das Client-Laptop aus dem # Sleep-Modus zurückkehrt ist, dann kann u.U. der openvpn Client aktiv # laufen aber durch irgendeine Änderung am Netz nicht mehr connecten.
# Wenn der Client nach x-Minuten stirbt und kein reconnect stattfindet gibt es also einen # ========================================================================================
# If you put your client system to sleep, and on resume OpenVPN does not restart, resulting in mkdir /root/scripts
nano /root/scripts/check-online.sh
# durch den jeweiligen OpenVPN-Client-Namen ersetzt werden muss
#–––––––––––––––––––––– check-online.sh ––––––––––––––– #!/bin/sh IP=10.8.0.1 LOG="/root/log_online.log" LOG_FAIL="/root/log_offline.log" HIDE_RUNS=-1 DEV="tun0" OVPN_CLIENT_PID="Jupiter.pid" # TUN device online? #
for f in /var/run/openvpn/$OVPN_CLIENT_PID do
OPENVPN_PID=cat $f
#echo "PID war zuletzt $OPENVPN_PID."
[ -f /proc/$OPENVPN_PID/exe ] && HIDE_RUNS=1 || echo "date
- OpenVPN(Hide) is user-disabled. NOT restarting." > $LOG
done
if [ $HIDE_RUNS -eq 1 ] then ping -c 1 -I $DEV $IP > /dev/null
if [ $? -eq 0 ]
then
echo "date
- OpenVPN(Hide) is up and I can ping through it." > $LOG
else
echo "date
- OpenVPN(Hide) is up, but I CAN'T PING THROUGH IT. RESTARTING OPENVPN AND NETWORK." > $LOG_FAIL
/etc/init.d/openvpn stop
sleep 5
nmcli networking off
sleep 5
nmcli networking on
sleep 5
/etc/init.d/openvpn start
fi fi
#––––––––––––––––- check-online.sh ––––––––––––––––––––-
# Dieses Skript schedulen mit Cron Job! */5 * * * * /bin/sh /root/scripts/check-online.sh
# Danach sollten Verbindungsabbrüche nach Sleep des host- oder guest-systems auf der Client-Seite # automatisch gefixt werden durch prüfan alle 5 Minuten und im Fehler restart des Netzwerks und OpenVPN-Client.
#**************************************************************************************
# Der Android Client wird hier der Einfachheit halber Saturn genannt # Die App OpenVpn von Arne Schwabe installieren
source vars
./build-key Saturn
# Die ovpn Dateien liegen im Unterverzeichnis "files". # Diese können auf die jeweiligen Clients aufgespielt werden.
# Die .ovpn Dateien haben dann alles Zertifikate inline enthalten, was das portieren zum Client # bequemer macht.
# Fixe IP-Zuordnungen liefen mit der Android App nur # Z.B heisst die Client.conf Saturn.conf dann im Verzeichnis
# /etc/openvpn/ccd (oden beschrieben)
# Datei anlegen mit gleichem Namen wie .ovpn-Datei im Androidgerät aber ohne Extension. # z.b. Saturn
nano /etc/openvpn/ccd/Saturn # speichern.
# Jetzt die Datei /etc/openvpn/ccd/files/Saturn.ovpn vom Server auf das # Android Gerät (Saturn) schieben.
# Auf dem Android Client die OpenVPN App von Arne Schwabe öffnen (im Google Play Store) # Beim Start über das Ordnersymbol oben rechts die Jupiter.ovpn # importieren und ggf. anpassen (evtl. Port 443 einstellen)
# Jetzt die Verbindung starten. # Mit einer App wie z.B. ghost commander können dan Verbindungen aufgebaut werden z.B. # zu anderen Clients und Dateien traferiert werden. # Mit Juice SSH können SSH Verbindungen aufgebaut werden. # Die App von Arne Schwabe kann sich bei Abbrüchen oder Netztwechseln automatisch reconnecten. # Dies sollte, wenn die VPN-Verbindung steht die Ip des OpenVpn-Servers anzeigen
#––––––––––––––––––––––––––––––––––––––––––––––-
h machen wollen zusammen gestellt. # Ich wünsche euch gutes Gelingen 😉
# Anmelden am V-Server per SSH als root oder besser User einloggen und dann mit sudo -i arbeiten.
apt-get update && apt-get dist-upgrade apt-get install openvpn easy-rsa
# RSA-Skripte in ein Unterveizeichnis kopieren um Änderungen durch Paketupgrades zu verhindern mkdir /etc/openvpn/easy-rsa/ cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
nano /etc/openvpn/easy-rsa/vars #––––––––––––––––- vars –––––––––––––––––––––––––– # Werte alle Ändern, diese werden nämlich verschlüsselt !!!
# Verschlüsselung mit 4096
export KEY_SIZE=4096 ... export CA_EXPIRE=3650 # 7300 = 20 Jahre # 9125 = 25 Jahre ... export KEY_EXPIRE=3650 # 7300 = 20 Jahre # 9125 = 25 Jahre ... export KEY_COUNTRY="DE" export KEY_PROVINCE="NRW" export KEY_CITY="Düsseldorf" export KEY_ORG="Meine Firma" export KEY_EMAIL="name@adresse.de" export KEY_OU="Analyst" ... export KEY_NAME="My VPN"
#–––––––––––––––– vars ––––––––––––––––––––––––––-
# Create Certificate Authority (CA) für Signaturen
cd /etc/openvpn/easy-rsa/ source vars # die Varaibalen sollten immer vor jedem Aufruf eines Skriptes aus diesem Vereichnis gesetzt werden!!!!
# dann das Root-CA erstellen
./build-ca
# danach ./build-key-server server
cp server.crt server.key ca.crt dh4096.pem /etc/openvpn/
# Jetzt sind die Client-Zertifikate dran. # Ich empfehle Client-Zertifikate für jeden Client einzeln zu erstellen und # keine Passphrasen-Abfrage zu benutzen, da die Cleints dann nicht (ohne großen Aufwand) automatisch gestartet werden können. cd /etc/openvpn/easy-rsa/ source vars
./build-key Jupiter
#********************************************
/etc/openvpn/easy-rsa/keys/Jupiter.crt /etc/openvpn/easy-rsa/keys/Jupiter.key /etc/openvpn/ta.key /etc/openvpn/easy-rsa/Jupiter.conf
# Dies Prozedur kann nun (ab #******) für alle weiteren Cleitns wiederholt werden (z.B. für Saturn, # Mars, Uranus....etc.)
# VORBEREITUNGEN ––––––––––––––––––––––––––––––––––––––––––––––– #============================================================================================================ mkdir /etc/openvpn/ccd
# speichern und exit
# START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES #–––––––––––––––––––––––––––––––––––––––––––––––––––––––– # Hier mit eth0 das korrekte Interface angeben, bei VServern oft "venet0"
# Hier
DEFAULT_FORWARD_POLICY="ACCEPT"
# einstellen.
ufw allow OpenSSH ufw default deny
ufw enable uft status
#!/bin/bash
KEY_DIR=/etc/openvpn/easy-rsa/keys OUTPUT_DIR=/etc/openvpn/ccd/files BASE_CONFIG=/etc/openvpn/ccd/base.conf
cat ${BASE_CONFIG} \ <(echo -e '<ca>') \ ${KEY_DIR}/ca.crt \ <(echo -e '</ca>\n<cert>') \ ${KEY_DIR}/${1}.crt \ <(echo -e '</cert>\n<key>') \ ${KEY_DIR}/${1}.key \ <(echo -e '</key>\n<tls-auth>') \ ${KEY_DIR}/ta.key \ <(echo -e '</tls-auth>') \ > ${OUTPUT_DIR}/${1}.ovpn
#––––––––––––––––––––
# Die BASE_CONFIG=/etc/openvpn/ccd/base.conf Datei wird später im Abschnitt Client-Konfiguration erstellt
sudo adduser --system --no-create-home --disabled-login --ingroup geheimvpn geheimvpn
# Der Nutzer kann also gar nix und das ist gut, weil sicher. 😉
# SERVER-Konfiguration-––––––––––––––––––––––––––––––––––––- #================================================================================================ # Server-Konfiguration durchführen für UDP-Protokoll auf Port 443. # Default wäre port 1194, allerdings ist der nicht in jedem WiFi-Hotspot offen. # Port 443 wird normalerweise für HTTPS verwendet und kann daher auch für openvpn # verwendet werden. Port 443 ist meisten offen in der Aussenwelt.
nano /etc/openvpn/server.conf
#––––––––- /etc/openvpn/server.conf –––––––––––––––––––––––––– port 443 proto udp ca /etc/openvpn/ca.cert cert /etc/openvpn/server.crt key /etc/openvpn/server.key
# Diffie-Hellmann-Parameter angeben
dh dh4096.pem
# Das ist sozusagen der Tunnel, den openvpn erstellt. # Die virtuellen Client-IP's werden dann hieraus genommen.
server 10.8.0.0 255.255.255.0 # Tunnel
# Der Datensatz in openvpn mit der Zuordnung des virtuellen Client zu seiner virutellen IP soll # auch bei Verbindungsabbruch (z.B. restart openvpn) erhalten bleiben
ifconfig-pool-persists ipp.txt
./make_config.sh Jupiter
#Die ovpn Dateien liegen im Unterverzeichnis "files". #Diese können auf die jeweiligen Clients aufgespielt werden.
cd files ll Jupiter.ovpn
#Die .ovpn Dateien haben dann alles Zertifikate inline enthalten, was das portieren zum Client #bequemer macht.
#–––––––––––––––––––––––––––––––––––––––––––
# (wie die key files oder .ovpn-Files) anlegen ohne Extension (also z.B. # touch /etc/openvpn/ccd/Jupiter
ifconfig-push 10.8.0.5 10,8,0,6
# Das sieht eigenartig aus. ist aber so! Es muss aber ein zweiter Eintrag mit einer IP +1 hinein.
# [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38] # [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58] # [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78] # [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98] # [101,102] [105,106] [109,110] [113,114] [117,118] # [121,122] [125,126] [129,130] [133,134] [137,138] # [141,142] [145,146] [149,150] [153,154] [157,158] # [161,162] [165,166] [169,170] [173,174] [177,178] # [181,182] [185,186] [189,190] [193,194] [197,198] # [201,202] [205,206] [209,210] [213,214] [217,218] # [221,222] [225,226] [229,230] [233,234] [237,238] # [241,242] [245,246] [249,250] [253,254]
# erlaubt. Wobei der Openvpn-Server dem Client dann immer die erste der beiden Zahlen als fixe IP # vergibt.
# Das muss man unbeddingt einhalten sonst startet der Client nicht.
# Damit ist seine IP die 73 im Netz. Für alle Ubuntu Clients oder Windows Clients funktioniert aber # die +1 Regel.
#––––––––––––––––––––––––––––––––––––––––––––––– #============================================================================================== # Client installieren
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! WICHTIG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # Ebenso muss die Protweiterleitung oder Port-Triggering im Router enabled werden. Da dies für jedes Modell # unterschiedlich ist kann ich hier kein allgemeingültiges Beispiel gegeben werden # Bei meiner einfachen Router ist das sehr einfach über das Menü zu erreichen # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
sudo apt-get install openvpn sudo apt-get install network-manager-gnome network-manager-openvpn-gnome network-manager-openvpn
cd /etc/openvpn sftp $Deine_Server_IP cd /etc/openvpn/ccd/files get Jupiter.ovpn exit
# Damit der Client automatisch gestartet werden kann muss die Dateiextension umbenannt # werden in .conf
mv /etc/openvpn/Jupiter.ovpn /etc/openvpn/Jupiter.conf
sudo openvpn --config Jupiter.conf
oder einfach
sudo service openvpn start
# Checken ob der Tunnel aufgebaut ist # Vom Server aus Jupiter anpingen ping 10.8.0.5
#–––––––––––––––––––––––––––––––––––––––––––––––––-
# Auf einem Linux Mint/Ubuntu-Client # Kopieren der Datei Jupiter.ovpn nach /etc/openvpn und umbenennen
# rename /etc/openvpn/Jupiter.ovpn /etc/openvpn/Jupiter.conf
# Autostart funktioniert natürlich nur, ohne weitere Einstellungen, wenn keine Passphrase für das Client-Zertifikat benötigt # wird, also das Client-Zertifikat mit ./build-key und nicht mit ./build-key-pass erstell worden # ist.
# Soll der Client automatisch beim booten starten und eine Verbindung zum Tunnel sudo ln -s /lib/systemd/system/openvpn\@.service openvpn\@Jupiter.service
# letzteeres sollte aber bereits schon durch 1.) erledigt ein
# Damit sollte der Tunnel beim booten automatisch aufgebaut werden, sofern das Netzwerk an ist.
# ein Provider reset oder wenn die lease abgelaufen oder einfach das Client-Laptop aus dem # Sleep-Modus zurückkehrt ist, dann kann u.U. der openvpn Client aktiv # laufen aber durch irgendeine Änderung am Netz nicht mehr connecten.
# Wenn der Client nach x-Minuten stirbt und kein reconnect stattfindet gibt es also einen # ========================================================================================
# If you put your client system to sleep, and on resume OpenVPN does not restart, resulting in mkdir /root/scripts
nano /root/scripts/check-online.sh
# durch den jeweiligen OpenVPN-Client-Namen ersetzt werden muss
#–––––––––––––––––––––– check-online.sh ––––––––––––––– #!/bin/sh IP=10.8.0.1 LOG="/root/log_online.log" LOG_FAIL="/root/log_offline.log" HIDE_RUNS=-1 DEV="tun0" OVPN_CLIENT_PID="Jupiter.pid" # TUN device online? #
for f in /var/run/openvpn/$OVPN_CLIENT_PID do
OPENVPN_PID=cat $f
#echo "PID war zuletzt $OPENVPN_PID."
[ -f /proc/$OPENVPN_PID/exe ] && HIDE_RUNS=1 || echo "date
- OpenVPN(Hide) is user-disabled. NOT restarting." > $LOG
done
if [ $HIDE_RUNS -eq 1 ] then ping -c 1 -I $DEV $IP > /dev/null
if [ $? -eq 0 ]
then
echo "date
- OpenVPN(Hide) is up and I can ping through it." > $LOG
else
echo "date
- OpenVPN(Hide) is up, but I CAN'T PING THROUGH IT. RESTARTING OPENVPN AND NETWORK." > $LOG_FAIL
/etc/init.d/openvpn stop
sleep 5
nmcli networking off
sleep 5
nmcli networking on
sleep 5
/etc/init.d/openvpn start
fi fi
#––––––––––––––––- check-online.sh ––––––––––––––––––––-
# Dieses Skript schedulen mit Cron Job! */5 * * * * /bin/sh /root/scripts/check-online.sh
# Danach sollten Verbindungsabbrüche nach Sleep des host- oder guest-systems auf der Client-Seite # automatisch gefixt werden durch prüfan alle 5 Minuten und im Fehler restart des Netzwerks und OpenVPN-Client.
#**************************************************************************************
# Der Android Client wird hier der Einfachheit halber Saturn genannt # Die App OpenVpn von Arne Schwabe installieren
source vars
./build-key Saturn
# Die ovpn Dateien liegen im Unterverzeichnis "files". # Diese können auf die jeweiligen Clients aufgespielt werden.
# Die .ovpn Dateien haben dann alles Zertifikate inline enthalten, was das portieren zum Client # bequemer macht.
# Fixe IP-Zuordnungen liefen mit der Android App nur # Z.B heisst die Client.conf Saturn.conf dann im Verzeichnis
# /etc/openvpn/ccd (oden beschrieben)
# Datei anlegen mit gleichem Namen wie .ovpn-Datei im Androidgerät aber ohne Extension. # z.b. Saturn
nano /etc/openvpn/ccd/Saturn # speichern.
# Jetzt die Datei /etc/openvpn/ccd/files/Saturn.ovpn vom Server auf das # Android Gerät (Saturn) schieben.
# Auf dem Android Client die OpenVPN App von Arne Schwabe öffnen (im Google Play Store) # Beim Start über das Ordnersymbol oben rechts die Jupiter.ovpn # importieren und ggf. anpassen (evtl. Port 443 einstellen)
# Jetzt die Verbindung starten. # Mit einer App wie z.B. ghost commander können dan Verbindungen aufgebaut werden z.B. # zu anderen Clients und Dateien traferiert werden. # Mit Juice SSH können SSH Verbindungen aufgebaut werden. # Die App von Arne Schwabe kann sich bei Abbrüchen oder Netztwechseln automatisch reconnecten. # Dies sollte, wenn die VPN-Verbindung steht die Ip des OpenVpn-Servers anzeigen
#––––––––––––––––––––––––––––––––––––––––––––––-
Moderiert von sebix:
Keine Supportfrage erkennbar. Thema in einen passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.