Anwendungsfälle
Natürlich möchtest du vielleicht dein Smarthome nicht nur innerhalb der Grenzen deines WLANs steuern. Manchmal willst du die Alarmanlage noch von woanders ein- oder ausschalten. Oder dir Messungen aus bestimmten Räumen anzeigen lassen. Oder einen bestimmten Netzwerkdienst nutzen. Vielleicht willst du auch einfach deinen Netzwerkverkehr gesichert über zuhause leiten, weil du dem WLAN nicht vertraust, in dem du dich befindest oder bestimmte Seiten gesperrt sind.
Ich verwende VPN laufend, weil ich so eine sichere Verbindung über mein Netzwerk nach Hause habe. Mein Datenverkehr wird verschlüsselt dorthin geleitet und ich kann die Dienste dort nutzen und auch surfen, ohne das der WLAN-Betreiber eine Chance hat, mitzulauschen. Online-Banking, Einkaufen etc. fühlt sich so einfach sicher an.
Möglichkeiten mit VPN
Wenn du eine Fritz!box hast, kannst du das dort bereits eingebaute VPN verwenden. Das wäre eine einfache und schnelle Lösung.
Inzwischen bin ich ein großer Fan von WireGuard. Es benötigt weniger Systemressourcen als z.B. OpenVPN und ist wesentlich schneller in der Datenübertragung. Dafür unterstützt es kein Layer2-Tunneling und unterstützt von Haus aus nur UDP-Verbindungen. UDP ist für VPN-Verbindungen am effizientesten, wird aber häufig durch Firewalls geblockt. Dieses Problem kann z.B. durch einen stunnel-Proxy als Zwischenschicht umgangen werden. Fritzboxen können auch Wireguard. Und ganz begeistert bin ich davon, dass ESP32-Mikrocontroller in Verbindung mit ESPHome die Technik jetzt auch unterstützen!
OpenVPN ist ein quasi-Standard unter Raspberry-VPN-Servern, da es sehr viele Dokumentationen und Hilfestellungen im Netz gibt und das System bereits seit langer Zeit etabliert ist. Es ist mächtiger als Wireguard, dafür auch langsamer.
Darüber hinaus gibt es noch weitere Lösungen. Diese jedoch auch zu Vergleichen, würde den Rahmen hier sprengen.
Vorbereitungen
DynDNS
Die erste Hausaufgabe besteht darin, einen DynDNS-Service zu nutzen. Das Vorgehen zur Einrichtung erläutere ich in dem verlinkten Beitrag.
Port-Freigaben für VPN
Darüber hinaus musst du dich für einen Port festlegen, auf dem dein VPN-Server erreichbar sein soll. OpenVPN verwendet standardmäßig Port UDP 1194, Wireguard verwendet UDP 51820.
Diese sind durch Firewalls häufig gesperrt. Es bietet sich also an, besser verfügbare Port zu verwenden.
UDP ist für VPN-Verbindungen effizienter, das die Sicherstellung erfolgreicher Datenübertragung mittels TCP bereits innerhalb des Tunnels durchgeführt wird und doppelt zu sichern nicht viel nutzt. Allerdings sind TCP-Verbindungen unauffälliger. Im Falle von OpenVPN bietet sich also aus diesem Grund TCP an.
Port, die häufig von Firewalls durchgelassen werden:
- Port 80 (HTTP)
- Port 443 (HTTPS)
- Port 25 (SMTP)
- Port 53 (DNS)
- Port 110 (POP3)
- Port 143 (IMAP)
443 und 25 bieten sich besonders an, da Daten hier häufig verschlüsselt übertragen werden und ein verschlüsselter Verkehr nicht ungewöhnlich ist. Insbesondere in Verbindung mit stunnel, der deine VPN-Verbindung als TLS-Verbindung tarnen kann.
Deinen gewählten Port mit Protokoll musst du nun auf deinem Router bei den Portfreigaben weiterleiten, damit dein VPN-Server von außen erreichbar wird.
Obfuscation
Eine VPN-Verbindung tunnelt Daten verschlüsselt zu einem anderen Ort. Allerdings ist es möglich, diese Tunnel durch eine Firewall zu blockieren, indem erkannt wird, dass es sich um eine VPN-Verbindung handelt. Es ist möglich, durch eine zusätzliche Software-Schicht, diese Tunnel zu tarnen und sie als gewöhnlichen oder unspezifischen Datenverkehr erscheinen zu lassen.
Verbreitet sind OBFS-Proxy, stunnel und Shadowsocks. Wenn du deine VPN-Verbindung erfolgreich aufgebaut hast, kannst du über einen zusätzlichen Port eine getarnte Verbindung zur Verfügung stellen. Ich habe mich entschieden, getarnte und ungetarnte Ports parallel bereitzustellen, da ich für gewöhnliche Zwecke weniger Aufwand an den Clients betreiben muss aber für Ausnahmefälle eben diese spezielle Verbindung mit höherem Aufwand auch benutzen kann.
Shadowsocks kann auch direkt als VPN verwendet werden. Es legt seinen Fokus auf Obfuscation, nicht jedoch auf Sicherheit. Asymmetrische Verschlüsselung wird nicht unterstützt.
Pingback: Router und ihre tollen Zusatzfunktionen - Tipps mit der Fritz!Box
Pingback: Verschlüsselte Backups auf ein (weit) entferntes Raspberry P (Zero W) - Smarthome DIY - Heimautomatisierung selbst gemacht