Ich wurde kürzlich gebeten, herauszufinden, wie ein L2-Tunnel für eine Brücke zwischen zwei Remote-LANs konfiguriert werden kann, und ich war erstaunt, wie wenige praktische Lösungen ich finden konnte. Bisher war ich nicht an diesem Thema interessiert und glaubte naiv, dass jedes adäquate VPN-Protokoll Broadcast-Pakete abfangen und über einen regulären L3-Tunnel weiterleiten kann. Leider gibt es keine universellen Lösungen "out of the box". Es gibt verschiedene Protokolle und Tools für diese, von denen die meisten unter sehr eingeschränkten Bedingungen funktionieren oder vollständig veraltet sind. Ich werde die angenehmste Option weiter teilen.
Warum genau L2?
Ich habe diese Frage zuallererst gestellt: Ich arbeite selten mit Netzwerkperipheriegeräten, und es schien mir, dass seit langem alle Geräte auf L3 laufen können. Egal wie es ist: Jemand braucht Zugang zu Bürodruckern, jemand zu Videorecordern und jemand möchte sich nur mit einem Freund in einem LAN-Duell zu Tode hacken - natürlich ohne das Haus zu verlassen. Sehr attraktiv ist auch die Idee von freigegebenen / Netzwerkordnern im Büro, die von zu Hause aus zugänglich sind, insbesondere während der Zeit des allgemeinen Entfernens.
Gleichzeitig werden L2-Bridges unter den Entwicklern von VPN-Clients aus irgendeinem Grund als eine seltsame Laune von ein oder zwei Prozent der Benutzer angesehen, die im Großen und Ganzen von niemandem benötigt wird. In industriellen Netzwerken, in denen viele veraltete oder schlecht kompatible Geräte vorhanden sind, ist die Situation völlig anders, und das L2VPN-Konzept (dargestellt durch eine Reihe anderer Abkürzungen) wird auf der Ebene des Netzwerks und der Geräte des Anbieters implementiert.
Technologie
Es gibt viele von ihnen, und alle arbeiten mit Verrücktheit und Einschränkungen:
- Beispielsweise sollte das Layer 2 Tunneling Protocol (L2TP), wie der Name schon sagt, OSI L2 unterstützen, einschließlich Broadcast-Weiterleitung. Aber nein, das herkömmliche L2TP + IPsec-Bundle erlaubt keine Überbrückung von Netzwerken auf L2-Ebene!
- PPTP - ist aufgrund schwerwiegender Schwachstellen zu einem Mem geworden, ist jetzt irgendwie behoben, hat aber nichts mit L2 zu tun.
- MPLS — «» . , RouterOS ( , ).
- PPPoE PPPoEoE , . PPPoE , Cisco.
- EoIP L2VPN made right, , . PPTP, GRE, NAT.
Und dann war ich überrascht, dass echtes Ethernet-Bridging ... OpenVPN!
Wir verwenden häufig ein persönliches oder geschäftliches VPN. Viele haben es kontinuierlich aktiviert, um das Blockieren zu umgehen (obwohl dieser Trend nach dem Entfernen des Telegrammblocks abnimmt). Bei meinen Arbeitsaufgaben verwende ich auch ständig Remote-Hosts für die Entwicklung und fast immer OpenVPN. Lange habe ich nicht verstanden, warum ich ein Bundle OpenVPN Access Server + OpenVPN Connect auf dem Client benötige. Für meine Aufgaben hatte ich immer genug von der klassischen Version mit manueller Bearbeitung von Konfigurationen, und die dedizierten Administratoren und die grafische Benutzeroberfläche schienen in einem schlanken, dünnen Client fehl am Platz zu sein. Es stellte sich jedoch heraus, dass die Schnittstelle zum Einrichten der Brücke viel praktischer ist als die Konfigurationsblätter im Terminal, obwohl nicht alles perfekt damit ist.
Einrichten
Tatsache ist, dass Access Server (AS) als kostenpflichtiges und ziemlich teures Produkt herauskam, und sie haben fleißig alle Arten von Leckereien hineingepfercht, nur um es zu kaufen. Daher wurde im Webadministrationsbereich ein Menü-Unterelement angezeigt, mit dem Sie den Netzwerkmodus (L2-Bridging / L3-Routing) auswählen können. Nach einer Weile wurde es aus demselben Grund stillschweigend von dort abgeschnitten: „Niemand braucht es“. Die Bridging-Funktionalität selbst und die entsprechenden Skripte wurden jedoch nicht entfernt und können weiterhin angepasst werden.
Installation
Wir brauchen einen Server oder eine virtuelle Maschine. Das Image dafür befindet sich auf der Download-Seite , und wir werden den Fall mit der Installation auf einem Server unter Ubuntu 18.04 weiter analysieren:
apt update && apt -y install ca-certificates wget net-tools gnupg
wget -qO - https://as-repository.openvpn.net/as-repo-public.gpg | apt-key add -
echo "deb http://as-repository.openvpn.net/as/debian bionic main">/etc/apt/sources.list.d/openvpn-as-repo.list
apt update && apt -y install openvpn-as
Nach der Installation steigt der Server von selbst an. Die folgende Meldung wird angezeigt:
+++++++++++++++++++++++++++++++++++++++++++++++
Access Server 2.8.4 has been successfully installed in /usr/local/openvpn_as
Configuration log file has been written to /usr/local/openvpn_as/init.log
Access Server Web UIs are available here:
Admin UI: https://185.209.31.165:943/admin
Client UI: https://185.209.31.165:943/
+++++++++++++++++++++++++++++++++++++++++++++++
Sie müssen sofort das Kennwort für das Administratorkonto angeben:
passwd openvpn
Anschließend können Sie das Admin-Panel im Browser öffnen (unter: 943 / admin, wie oben angegeben), sich als openvpn-Benutzer mit dem angegebenen Kennwort anmelden und den Server konfigurieren.
AS kann von zwei Benutzern kostenlos verwendet werden. Sie können dann nur für 18 USD / Monat für einen Benutzer hinzufügen. Daher ist es besser, Ihre Prozesse für den Tunnel sofort mit zwei Clients zu entwerfen.
Return Bridging
cd /usr/local/openvpn_as/scripts
./sacli --key "von.general.osi_layer" --value "2" ConfigPut
./sacli start
Wenn alles gut gegangen ist, enthält die Ausgabe json Folgendes:
{
"errors": {},
"last_restarted": "Thu Jul 2 00:07:37 2020",
"service_status": {
"api": "on",
"auth": "on",
"bridge": "on",
...
}
}
Im Admin-Bereich ändert sich der Status "OSI Layer: 3 (Routing / NAT)" in "2 (Bridging)".
Hinweis: In neueren Versionen bleiben Informationen zu L3 möglicherweise bei aktivierter Bridge erhalten. Warum - ich habe nicht verstanden, sicher in dieser Hinsicht Versionen um 2.4
Eigentlich endet dieses Know-how, dann müssen Sie nur noch den Server für sich selbst konfigurieren, einen zweiten Benutzer über dieselbe Weboberfläche erstellen und sich auf der Benutzerseite über Port 943 (ohne / admin) anmelden. Es gibt Links zum Herunterladen von OpenVPN Connect-Clients für alle Plattformen mit einer gebackenen Konfiguration für die Verbindung (außer für mobile Anwendungen müssen Sie die Adresse manuell eingeben, und dann wird alles von selbst installiert).
Nach erfolgreicher Verbindung und Überbrückung von Clients steht ein L2-Tunnel mit TCP / UDP-Verkehr zur Verfügung. Clients können als Volume für das interne Netzwerk fungieren. All dies wird auch im Admin-Bereich konfiguriert.