Für das offsite Backup war es vorteilhaft den Raspi per VPN in mein Netzwerk zu bekommen. Dises macht portforwarding und konfigurationen an der offsite Location unnötig.
Der bei mir eingesetze Router ist eine Fritzbox 7490
DynDNS sollte auf der FritzBox aktiviert sein, so das sie unter einer Statischen Adresse erreichbar ist. Hierfür bietet sich der MyFritz service von AVM an.
Einrichtung von VPN bei der Fritzbox
Zuerst wird unter System-> FRITZ!Box- Benutzer ein neuer User angelegt.
Hier muss der Zugang aus dem Internet gewährt werden und VPN (natürlich freigeschaltet werden, alles andere wird abgewählt.
wir merken uns die angaben aus den Iphone einstellungen:
- Beschreibung:
- Server:arpdggefuegr23723n.myfritz.net
- Account:vpn_user
- Kennwort:Kennwort des FRITZ!Box-Benutzers „vpn_user“
- Zertifikat verwenden ist deaktiviert
- Gruppenname:vpn_user
- Shared Secret:TANrpS1y34hHHJGIS4
Jetz geht es auf den Raspi weiter….
Installation:
sudo apt-get install vpnc
Config erstellen und anpassen:
sudo nano /etc/vpnc/fritzbox.conf
IPSec gateway arpdggefuegr23723n.myfritz.net
IPSec ID vpn_user
IPSec secret TANrpS1y34hHHJGIS4
IKE Authmode psk
Xauth username vpn_user
Xauth password <passwort>
local port 0
DPD idle timeout (our side) 0
erster test des tunnels:
sudo vpnc fritzbox.conf
Beenden der VPn Verbindung:
sudo vpnc-disconnect
Ich habe das starten des Scripts in der /etc/rc.local eingetragen damit die VPN verbindung beim booten aufgebaut wird.
vpnc fritzbox.conf
—- Update —-
da die VPN Verbindung teilweise unkontrolliert abbricht hat Abdelkader Wahb ein Script gemacht, das die Verbindung überwacht und bei bedarf neustartet. Das möchte ich euch nicht vorenthalten:
#!/bin/bash
# hier wird die Logfile-Datei definiert
LOGFILE=/data/log_vpnc/fritzbox.log
# hier wird die IP-Adresse von Fritzbox definiert. wenn die VPN Verbindung steht, dann sollte ping funktionieren.
myHost=“192.168.178.1″
# Wert -> wie oft soll gepingt werden
wert=4
# Ausgabe Wert für „count“ soll bei erfolgreichen ping 4 sein, bei erfolglosen ping 0.
count=$(ping -c $wert $myHost | grep ‚received‘ | awk ‚{print $4}‘)
if [ $count == 4 ]
then
# die kommenden echos sind die Info-Ausgaben in Logfile
echo „$(date +%Y-%m-%d:%T) :Fritzbox mit der IP $myHost ist erreichbar und VPN Verbindung steht“ | tee -a $LOGFILE
else
echo „“ | tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :Fritzbox mit der IP $myHost ist nicht erreichbar“ |tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :VPN-Verbindung trennen“ |tee -a $LOGFILE
#hier wird das VPNC-Demon gestoppt, damit es nicht meherer im Hintergrund laufen
vpnc-disconnect
# oft ist die Wlan Verbindungen gebrochen. hier werden alle Netzwerkverbindungen neugestartet.
echo „$(date +%Y-%m-%d:%T) :Netzwerkverbindungen neu starten“ | tee -a $LOGFILE
/etc/init.d/networking restart
# 10 Sekunden warten
sleep 10
# auslesen von der Wlan Ip-Adresse
ipwlan=$(ifconfig wlan0 | grep „inet Adresse“ | cut -b 24-38)
echo „$(date +%Y-%m-%d:%T) :Netzwerkverbindungen wurde neugestart. WLAN IP-Adresse: $ipwlan “ | tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :VPN Verbindung neu aufbauen, der Skript vpnc_fritzbox starten“ | tee -a $LOGFILE
# starten von VPNC-Demon. PID und VPN-IP Adresse auslesen
vpnc fritzbox.conf
pid=$(pidof vpnc)
ipvpn=$(ifconfig tun0 | grep „inet Adresse“ | cut -b 24-38)
echo „$(date +%Y-%m-%d:%T) :Die VPN-Verbindung wurde erfolgreich aufgebaut. die VPN IP-Adresse ist: $ipvpn. VPNC-Demon ist aktiv unter id: $(pidof vpnc)“ | tee -a $LOGFILE
echo „“ | tee -a $LOGFILE
fi
Eintrag im /etc/crontab, damit es bei booten automatisch jede 3 Minuten durchgeführt werden:
*/3 * * * * root /etc/init.d/autovpncscript
das ganze als System.d service.
Datei /etc/vpnc/fritzbox.conf erzeugen wie oben dargestellt
eine weitere Datei erzeugen:
nano /etc/systemd/system/fritzbox.service
[Service]
ExecStart=/usr/sbin/vpnc /etc/vpnc/fritzbox.conf
WorkingDirectory=/etc/vpnc
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=vpnc_fritzbox
User=root
Group=root
[Install]
WantedBy=multi-user.target
mit
Hallo don.redhorse,
Bin ein absoluter raspi newbe. Habe eine VNP Verbindung zur FB erfolgreich aufgebaut. Das mit dem service klappt allerdings nicht. nach dem reboot ist die verbindung wieder weg. Auch rc.local funktioniert irgendwie nicht. Irgendeine Idee?
Danke.
Hallo,
hat jemand eine idee wie das ganze bei einer unifi usg gehen würde?
Hallo, ich vermute genauso.
Von auf dem usg ist ja kein Problem, das hab ich gerade durch, bin auch ubiquiti Fan
https://youtu.be/-vbwEGBTlLQ
Zu der raspberry Seite kann ich aktuell nichts sagen, da ich die Lösung nicht mehr laufen habe
Hallo, ja auf der usg läuft der server.
Mit windows verbinden ist auch kein problem.
Wollte nur eben einen pi als clienten einbinden, aber leider scheitere ich da mit meinen kenntnissen.
Super! Vielen Dank! Hier noch einmal das skript mit korrekter Formatierung (und minimal abgewandelt): https://pastebin.com/r0Pgh93J
Super Risaer!
leider habe ich noch einen Fehler, den ich nicht zuordnen kann.
Er liest zwar die Ping-Ausgabe fehlerfrei aus bekomme danach aber den Fehler /etc/init.d/autovpnscript.sh: 24 [: 4: unexpected operator.
Danach kann das script den Wert 4 nicht handhaben und startet die VPN-Verbindung neu, obwohl eine besteht.
Kannst Du dies zuordnen?
Grüße
Armin
Hallo Raiser,
hier noch die Fehlermeldung im Detail:
+ count=4 packets transmitted, 4 received, 0% packet loss, time 3088ms
+ [ 4 packets transmitted, 4 received, 0% packet loss, time 3088ms -eq 4 ]
/etc/init.d/autovpnscript.sh: 24: [: 4: unexpected operator
Grüße Armin
Hallo Risaer,
ich habe den Fehler gefunden:
Original: count=$(ping -c $wert $myHost | grep „received“ | awk „{print $4 }“)
Update:count=$(ping -c $wert $myHost | grep „received“ | awk ‚{print $4 }‘)
Viele Grüße
Armin
Ich kriege leider vpnc: no response from target
Anbei mal das Script von Peter, ohne Probleme bei der Formatierung
https://nopaste.xyz/?ea6c75b98018ec03#r/zXv4qeTlHtbdLpuKfrNLU7BNlH38DZamqiNkvGerg=
Hallo,
habe nach der Anleitung erfolgreich eine VPN Verbindung von einem Raspberry zu meiner Fritz Box hergestellt, leider habe ich mit dem Script ein Problem. 🙁 Obwohl eine Verbindung zu Fritz Box (192.168.178.1) steht, bekomme ich keine Antwort bei ping und alle 3 Minuten wird die Verbindung unterbrochen und neu gestartet. Hat jemand eine Lösung für das Problem?
Vielleicht noch als Info, da ich an dem Standort wo mein Raspberry steht keinen festen Internet Anschluss habe, verbinde ich mich über ein USB Stick mit eine SimKarte.
LG, Adam
Hallo,
super genau was ich suche, bin Anfänger,
Aber bei mir wird im Script entweder die Fritzboxadresse nicht in der Variable übergeben, da der Ping erfolglos bleibt. gebe ich im Testscript Ping 192.168.178.1 ein (steht nur ping … drin), dann bekomme ich eine Antwort
mfg
Frank
Danke für die Vorarbeit!
Ich habe das Skript auch mal gedebugged. Vllt kann ich damit ja jemanden die Arbeit abnehmen 😉
Folgenden Code in eine shell Datei kopieren. Folgendes Kommando dafür: sudo nano /etc/init.d/autovpnscript.sh
———
#!/bin/bash
# set -x auskommentieren für den Debug Modus. Die Ausgabe erscheint in der Kommandozeile.
#set -x
# hier wird die Logfile-Datei definiert
# Logfile muss erst mit „sudo nano fritzbox.log“ am Zielort erstellt werden erstellt werden
LOGFILE=/home/fritzbox.log
# hier wird die IP-Adresse von Fritzbox definiert. wenn die VPN Verbindung steht, dann sollte ping funktionieren.
myHost=192.168.178.1
# Wert -> wie oft soll gepingt werden
wert=4
# Ausgabe Wert für „count“ soll bei erfolgreichen ping 4 sein, bei erfolglosen ping 0.
count=$(ping -c $wert $myHost | grep ‚received‘ | awk ‚{print $4 }‘)
if [ $count -eq 4 ]
then
# die kommenden echos sind die Info-Ausgaben in Logfile
echo „$(date +%Y-%m-%d:%T) :Fritzbox mit der IP $myHost ist erreichbar und VPN Verbindung steht“ | tee -a $LOGFILE
else
echo „“ | tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :Fritzbox mit der IP $myHost ist nicht erreichbar“ |tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :VPN-Verbindung trennen“ |tee -a $LOGFILE
#hier wird das VPNC-Demon gestoppt, damit es nicht meher im Hintergrund lauft
/usr/sbin/vpnc-disconnect
# oft ist die Wlan Verbindungen unterbrochen. hier werden alle Netzwerkverbindungen neugestartet.
echo „$(date +%Y-%m-%d:%T) :Netzwerkverbindungen neu starten“ | tee -a $LOGFILE
/etc/init.d/networking restart
# 12 Sekunden warten
sleep 12
# auslesen von der Wlan Ip-Adresse
# grep Adresse muss bei Englischen Spracheinstellungen evtl. geändert werden. Mit dem Debug Modus ausprobieren
ipwlan=$(/sbin/ifconfig wlan0 | grep „inet Adresse“ | cut -b 24-38)
echo „$(date +%Y-%m-%d:%T) :Netzwerkverbindungen wurde neugestart. WLAN IP-Adresse: $ipwlan “ | tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :VPN Verbindung neu aufbauen, der Skript vpnc_fritzbox starten“ | tee -a $LOGFILE
# starten von VPNC-Demon. PID und VPN-IP Adresse auslesen
/usr/sbin/vpnc fritzbox.conf
pid=$(pidof vpnc)
ipvpn=$(/sbin/ifconfig tun0 | grep „inet Adresse“ | cut -b 24-38)
echo „$(date +%Y-%m-%d:%T) :Die VPN-Verbindung wurde erfolgreich aufgebaut. die VPN IP-Adresse ist: $ipvpn. VPNC-Demon ist aktiv unter id: $(pidof vpnc)“ | tee -a $LOGFILE
echo „“ | tee -a $LOGFILE
fi
———
Automatisch alle 3 Minuten
sudo nano /etc/crontab
Folgender Code:
*/3 * * * * root sh /etc/init.d/autovpnscript.sh >/dev/null 2>&1
Da die Formatierung im Browser den Code zerstört, habe ich ihn hochgeladen
https://fh-swf.sciebo.de/index.php/s/3fvYCRtpHp4qto7
Hallo Nils. Wäre es möglich, dass du es noch mal hochlädst? LG
Hi
Danke für die Hilfe zwei fragen habe ich noch, was muss ich genau in die rc.local Datei eintragen. Beim klappt der Autostart nicht und wie muss ich den Script zum überwachen einbinden? Bin noch ein noob.
Danke schon mal
Hallo zusammen,
Vielen Dank für die Anleitung. Habe sie fast Erfolgreich nachbauen können. Ich habe nur das Problem wenn er dir VPN Verbindung verliert baut er keine neue mehr auf. Außer ich starte den Pi neu.
Woran kann es liegen?
lg
Hallo,
Vielen Dank für die Anleitung.
Leider kann ich via SSH nicht auf den Pi zugreifen auch Ping geht nicht. Laut Protokoll sehe ich auf der Fritz!Box das die VPN Verbindung aufgebaut wurde.
Muss ich noch irgendwas anderes Einstellen?
LG
Ich hatte Probleme mit dem Script, insbesondere da kein PATH gesetzt war. Meine Version sieht so aus:
#!/bin/bash
# hier wird die Logfile-Datei definiert
LOGFILE=/var/log/fritzbox.log
# hier wird die IP-Adresse des Gateways definiert
myGw=“192.168.0.1″
# hier wird die IP-Adresse von Fritzbox definiert. wenn die VPN Verbindung steht, dann sollte ping funktionieren.
myHost=“192.168.10.1″
# Wert -> wie oft soll gepingt werden
wert=4
# Ausgabe Wert für „count“ soll bei erfolgreichen ping 4 sein, bei erfolglosen ping 0.
########################## check lokales Netz
count=$(ping -c $wert $myGw | grep „received“ | awk ‚{print $4}‘)
if [ $count -eq 4 ]
then
# die kommenden echos sind die Info-Ausgaben in Logfile
echo „$(date +%Y-%m-%d:%T) :Router mit der IP $myGw ist erreichbar“ | tee -a $LOGFILE
else
echo „“ | tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :Router mit der IP $myGw ist nicht erreichbar“ |tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :VPN-Verbindung trennen“ |tee -a $LOGFILE
#hier wird das VPNC-Demon gestoppt, damit es nicht meherer im Hintergrund laufen
/usr/sbin/vpnc-disconnect
# oft ist die Wlan Verbindungen gebrochen. hier werden alle Netzwerkverbindungen neugestartet.
echo „$(date +%Y-%m-%d:%T) :Netzwerkverbindungen neu starten“ | tee -a $LOGFILE
/etc/init.d/networking restart
# 20 Sekunden warten
sleep 20
# auslesen von der lokalen Ip-Adresse
ipwlan=$(ifconfig eth0 | grep „inet Adresse“ | cut -b 24-38)
echo „$(date +%Y-%m-%d:%T) :Netzwerkverbindungen wurde neugestart. LAN IP-Adresse: $ipwlan “ | tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :VPN Verbindung neu aufbauen, der Skript vpnc_fritzbox starten“ | tee -a $LOGFILE
# starten von VPNC-Demon. PID und VPN-IP Adresse auslesen
/usr/sbin/vpnc fritzbox.conf
sleep 1
pid=$(pidof vpnc)
ipvpn=$(ifconfig tun0 | grep „inet Adresse“ | cut -b 24-38)
echo „$(date +%Y-%m-%d:%T) :Die VPN-Verbindung wurde erfolgreich aufgebaut. die VPN IP-Adresse ist: $ipvpn. VPNC-Demon ist aktiv unter id: $(pidof vpnc)“ | tee -a $LOGFILE
echo „“ | tee -a $LOGFILE
fi
########################## check Destination Netz
count=$(ping -c $wert $myHost | grep „received“ | awk ‚{print $4}‘)
if [ $count -eq 4 ]
then
# die kommenden echos sind die Info-Ausgaben in Logfile
echo „$(date +%Y-%m-%d:%T) :Fritzbox mit der IP $myHost ist erreichbar und VPN Verbindung steht“ | tee -a $LOGFILE
else
echo „“ | tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :Fritzbox mit der IP $myHost ist nicht erreichbar“ |tee -a $LOGFILE
echo „$(date +%Y-%m-%d:%T) :VPN-Verbindung trennen“ |tee -a $LOGFILE
#hier wird das VPNC-Demon gestoppt, damit es nicht meherer im Hintergrund laufen
/usr/sbin/vpnc-disconnect
# 10 Sekunden warten
sleep 20
# starten von VPNC-Demon. PID und VPN-IP Adresse auslesen
/usr/sbin/vpnc fritzbox.conf
sleep 1
pid=$(pidof vpnc)
ipvpn=$(ifconfig tun0 | grep „inet Adresse“ | cut -b 24-38)
echo „$(date +%Y-%m-%d:%T) :Die VPN-Verbindung wurde erfolgreich aufgebaut. die VPN IP-Adresse ist: $ipvpn. VPNC-Demon ist aktiv unter id: $(pidof vpnc)“ | tee -a $LOGFILE
echo „“ | tee -a $LOGFILE
fi
Hallo,
Vielen Dank für die Anleitung.
Kann mir jemand nochmal etwas genauer erklären, wie das mit dem Script funktioniert und wo ich was hinschreiben muss.?
Vielen Dank
Vielen, vielen Dank für die Hilfe!!! Endlich klappt der Verbindungsaufbau von meinem Server zur Fritzbox!
Ich will über die VPN-Verbindung den Server mit Hilfe von Nagios (welches im Heimnetzwerk auf einem Pi läuft) überwachen, ohne einen zusätzlichen VPN-Server auf dem Server zu öffnen.
Jetzt hab ich nur noch ein Problem:
Ist die VPN-Verbindung zur Fritzbox aufgebaut, ist der Server nicht mehr aus dem Internet erreichbar… Hast Du eine Idee, wie ich das ändere???
Moment mal, du baust von einem Server, welcher wahrscheinlich bei einem der großen Hoster steht und mit fester IP erreichbar ist, eine VPN-Verbindung zu deinem Heimnetz auf um den Server mit Nagios zu überwachen?
Ich sag nur check_by_ssh und du kannst dir das VPN in dein Heimnetz sparen.
Hallo ITSAW,
ja richtig, der Server steht bei einem Hoster und hat eine feste IP. SSH ist nicht der präferierte Lösungsweg, da ich zum LogIn Google Authenticator nutze.
Ich bekomme immer die Meldung „no response from target“
Was mache ich falsch?
ping zum server funktioniert. Gebe ich einen falschen Servernamen an, kommt auch eine andere Fehlermeldung.
Verwende ich die Zugangsdaten und Schlüssel auf dem Android-Handy, funktioniert es auch, also die Konfiguration in der Fritzbox scheint richtig zu sein.
Hast du mittlerweile eine Lösung gefunden? Ich habe ebenfalls keinen Zugriff auf den pi
Hallo, ich weis die Kommentare sind etwas älter aber immer noch hilfreich. Wer das Problem hat, dass er eine VPN Verbindung ausbauen kann aber aus dem Heimnetzwerk den Raspi nicht anpingen kann, der sollte die Netzwerkadresse des Raspi ändern. In der Fritz Anleitung steht das die Netzwerkadressen der beiden Unterschiedlich sein müssen. Das war bei mir das Problem. UMTS Router und Fritzbox hatten 192.168.1.1, das geht nicht.