On m'a récemment demandé de comprendre comment configurer un tunnel L2 pour un pont entre deux réseaux locaux distants, et j'ai été étonné du peu de solutions pratiques que je pouvais trouver. Auparavant, je n'étais pas intéressé par ce sujet et croyais naïvement que tout protocole VPN adéquat pouvait intercepter des paquets de diffusion et les transmettre sur un tunnel L3 normal. Malheureusement, il n’existe pas de solutions universelles «prêtes à l'emploi». Il existe plusieurs protocoles et outils pour eux, dont la plupart fonctionnent dans des conditions très limitées ou sont complètement obsolètes. Je partagerai davantage l'option la plus agréable.
Pourquoi exactement L2?
J'ai posé cette question tout d'abord: je travaille rarement avec des périphériques réseau, et il m'a semblé que depuis longtemps déjà tous les équipements peuvent marcher sur L3. Quoi qu'il en soit: quelqu'un a besoin d'accéder aux imprimantes de bureau, quelqu'un a besoin de DVR, et quelqu'un veut simplement se connecter avec un ami dans un duel LAN - sans quitter la maison, bien sûr. L'idée de dossiers partagés / réseau dans le bureau, accessibles depuis la maison, est également très intéressante, en particulier pendant la période de suppression générale.
Dans le même temps, parmi les développeurs de clients VPN, les ponts L2 sont considérés pour une raison quelconque comme un étrange caprice d'un ou deux pour cent des utilisateurs, qui, dans l'ensemble, n'est nécessaire à personne. La situation est complètement différente dans les réseaux industriels, où il y a beaucoup d'équipements obsolètes ou mal compatibles, et le concept L2VPN (représenté par un tas d'autres abréviations) est mis en œuvre au niveau du réseau et du fournisseur.
La technologie
Il y en a beaucoup, et ils fonctionnent tous avec étrangeté et limites:
- Par exemple, le Layer 2 Tunneling Protocol (L2TP) devrait, comme son nom l'indique, prendre en charge OSI L2, y compris le transfert de diffusion. Mais non, le bundle L2TP + IPsec généralement accepté ne permet pas de ponter les réseaux au niveau L2!
- PPTP - est devenu un mème en raison de vulnérabilités majeures, est maintenant en quelque sorte corrigé, mais n'a aucun lien avec L2.
- MPLS — «» . , RouterOS ( , ).
- PPPoE PPPoEoE , . PPPoE , Cisco.
- EoIP L2VPN made right, , . PPTP, GRE, NAT.
Et puis j'ai été surpris de constater que le véritable pont Ethernet peut ... OpenVPN!
Nous utilisons souvent un VPN personnel ou fonctionnel, pour beaucoup, il est généralement activé en permanence pour contourner les verrous (bien que cette tendance diminue après la suppression du blocage des télégrammes). Dans mes tâches de travail, j'utilise également des hôtes de développement à distance tout le temps, et j'utilise presque toujours OpenVPN. Pendant longtemps, je n'ai pas compris pourquoi un tas d'OpenVPN Access Server + OpenVPN Connect sur le client était nécessaire. Pour mes tâches, la version classique avec édition manuelle des configurations était toujours suffisante pour moi, et les panneaux d'administration dédiés et l'interface graphique semblaient hors de propos dans un client léger mince. Mais il s'est avéré que l'interface de mise en place du pont est bien plus pratique que les fiches de configs du terminal, même si tout n'est pas parfait avec elle.
Personnalisation
Le fait est qu'Access Server (AS) est sorti comme un produit payant et plutôt cher, alors ils ont diligemment entassé toutes sortes de goodies, juste pour l'acheter. Ainsi, un sous-menu est apparu dans le panneau d'administration Web, vous permettant de sélectionner le mode réseau (pontage L2 / routage L3), et après un certain temps il a été tranquillement bu à partir de là pour la même raison «personne n'en a besoin». Cependant, la fonctionnalité de pontage elle-même et les scripts correspondants n'ont pas été supprimés et peuvent toujours être personnalisés.
Installation
Nous avons besoin d'un serveur ou d'une machine virtuelle. L'image en est sur la page de téléchargement , et nous continuerons à analyser le cas avec l'installation sur un serveur sous Ubuntu 18.04:
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
Après l'installation, le serveur montera de lui-même, vous verrez le message suivant:
+++++++++++++++++++++++++++++++++++++++++++++++
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/
+++++++++++++++++++++++++++++++++++++++++++++++
Immédiatement, vous devez spécifier le mot de passe du compte administrateur:
passwd openvpn
Ensuite, vous pouvez ouvrir le panneau d'administration dans le navigateur (à l'adresse: 943 / admin, comme décrit ci-dessus), vous connecter en tant qu'utilisateur openvpn avec le mot de passe spécifié et configurer le serveur.
AS est gratuit à utiliser par deux utilisateurs, vous ne pouvez l'ajouter que pour 18 $ / mois par utilisateur, il est donc préférable de concevoir immédiatement vos processus pour utiliser le tunnel par deux clients.
Faire le pont
cd /usr/local/openvpn_as/scripts
./sacli --key "von.general.osi_layer" --value "2" ConfigPut
./sacli start
Si tout s'est bien passé, le json de sortie contiendra les éléments suivants:
{
"errors": {},
"last_restarted": "Thu Jul 2 00:07:37 2020",
"service_status": {
"api": "on",
"auth": "on",
"bridge": "on",
...
}
}
Dans le panneau d'administration, l'état "Couche OSI: 3 (routage / NAT)" passera à "2 (pontage)"
NB: dans les dernières versions, les informations sur L3 peuvent rester lorsque le pont est activé. Pourquoi - je n'ai pas compris, sûr à cet égard les versions autour de 2.4
En fait, ce savoir-faire prend fin, il vous suffit alors de configurer un serveur pour vous-même, d'obtenir un deuxième utilisateur via la même interface Web et de vous connecter à la page utilisateur sur le port 943 (sans / admin). Il y aura des liens pour télécharger les clients OpenVPN Connect pour toutes les plates-formes avec une configuration cuite pour la connexion (sauf pour les applications mobiles, vous devrez entrer l'adresse manuellement, puis tout sera installé par lui-même).
Une fois les clients connectés et pontés avec succès, un tunnel L2 avec le trafic TCP / UDP sera disponible. Les clients peuvent agir en tant que nat pour le réseau interne, cela est également configuré dans le panneau d'administration.