[openvpn] vpn depuis la maison comme si on était dans l'entreprise

Bonjour à tous,

Me revoilà pour vous demander à nouveau de l’aide. Je vous fais le résumé :slight_smile:

Je souhaite pouvoir avoir accès à tout le réseau de “mon” entreprise depuis chez moi (comme si j’étais sur le LAN à l’entreprise). Je me suis donc lancé dans le monde fou d’OpenVPN (qui me trottait dans la tête depuis longtemps). J’ai fais ENORMENT de tests (en tun ou tap), suivi tous les tutos possibles et imaginables mais impossible de pinger les postes de l’entreprise alors que la connexion VPN semble OK. Je me propose donc d’écouter vos conseils. Pour ne pas partir sur de mauvaises bases, je vais partir de “zéros” enfin presque car je pense que les certificats et clés sont ok niveau fonctionnement et compréhension tout comment l’ouverture du port sur la box entreprise pour laisser passer le VPN. C’est la partie configuration serveur et client que je souhaite revoir (.conf côté serveur et client).

Je vous fait un schéma de mon installation actuelle :slight_smile:

[DEBIAN (MAISON)] : 192.168.201.34 ----- 192.168.201.254 : [BOX (MAISON)] : 123.123.123.123 (IP publique maison) ======= INTERNET =======234.234.234.234 (IP Publique entreprise) : [BOX (ENTREPRISE)] : 192.168.3.179 -----192.168.3.251 [DEBIAN (ENTREPRISE) AVEC PARTAGE A ACCEDER]

Si vous avez besoin de plus d’infos, n’hésitez pas à me le demander.

Merci d’avance de l’aide que vous pourrez m’apporter et qui me rendrait un grand service :wink:

Si je comprends bien, le réseau de l’entreprise est constitué d’un simple LAN privé derrière une box ?
Où se situe le serveur VPN ?

Oui c’est ça

Sur une VM sur le réseau de l’entreprise

Pontée avec le LAN, dans le même sous-réseau IP ?
Ou dans un sous-réseau virtuel distinct ?

Ben pour le moment j’ai mis sur cette vm une seule interface réseau avec un ip du réseau entreprise (192.168.3.70) mais je ne sais pas si c’est bon.
Ma vision des choses… Je me connecte sur l’openvpn situé dans l’entreprise qui lui me donne accès à tout le réseau de l’entreprise

Ce n’est ni bon ni mauvais. D’un point de vue du routage, cela simplifie les choses. Je suppose que la box fait une redirection des flux openvpn entrants vers cette adresse ?

Ce n’est pas si simple. Un VPN n’est pas un relais, un proxy un routeur ni un pont. C’est juste une liaison réseau, comme une seconde carte réseau de la VM sur laquelle tu serais connecté.

Pour “rebondir” depuis le serveur VPN vers le reste du LAN, il faut mettre en place d’autres mesures. Par exemple :

  • un proxy SOCKS, relais de port ou dispositif similaire sur la VM qui sert d’intermédiaire entre le poste client (qui doit explicitement utiliser le proxy ou le relais) et les ressources du LAN.

  • un pontage ethernet entre l’interface openvpn (impérativement en mode tap) et l’interface ethernet de la VM connectée au LAN ; côté poste client, l’interface openvpn devra avoir une adresse IP et le masque du réseau du LAN pour que les machines du LAN puissent communiquer avec lui.

  • du routage IP simple sur la VM ; le VPN (en mode tun ou tap) sera un réseau distinct du LAN et le poste client devra avoir une adresse IP dans ce réseau et une route pour atteindre le réseau IP du LAN via l’adresse VPN serveur openvpn ; les machines du LAN ou la box devront avoir une route pour atteindre le réseau openvpn via le serveur openvpn.

  • du routage IP avec NAT sur la VM ; comme le routage simple mais la route du LAN vers le VPN est remplacée par une règle iptables SNAT ou MASQUERADE.

Oui c’est bien ça

1an

Oula je ne voyais pas ça si compliqué… Les tutos trouvé sur le net semblait plus simple. As tu un lien complet qui explique la mise en place d’un proxy sock.

Si je comprend bien ma vm doit avoir deux interfaces réseaux. Une avec une adresse ip vers le LAN entreprise et une autre vers un autre reseau (exemple 10.8.0.1) réservé au vpn ? Mais comment peut-on faire le pont entre les deux ?

Je me perds :thinking:

Ça semble plus simple à mettre en place.

Pour résumé je suis totalement perdu… Je ne sais pas par où commencer… J’ai comprend les grands lignes mais c’est tout… Comment dois je commencer à t on avis ?

Je pensais qu’il fallait mettre en place les 4 points que tu m’as expliqué mais je viens de relire a nouveau ton post et tu va me dire si je me trompe mais il faut choisir un seul des 4 points et celui citer au dessus me semble le plus simple dans la mise en place… Est ce que je me trompe ?

En effet il faut choisir une seule des solutions proposées, pas toutes à la fois. D’ailleurs ce serait impossible car certaines sont incompatibles entre elles.

La plus simple à mettre en place est le routage avec NAT. Mais c’est aussi la moins propre, qui a le plus d’inconvénients à l’usage car certains protocoles ne fonctionnent pas bien avec du NAT.

Le pontage est la solution la plus simple à l’utilisation car c’est comme si le poste client VPN était connecté directement au LAN. Mais ce n’est pas forcément à la plus simple à configurer sur le serveur VPN. Son avantage (comme le routage avec NAT) par rapport au routage simple est de ne pas nécessiter la mise en place de routes de retour sur les autres machines du LAN, toute la configuration se fait sur la VM qui fait office de serveur VPN.

La VM a déjà deux interfaces réseau : son interface ethernet et l’interface tap du VPN. La configuration IP se fait uniquement sur l’interface représentant le pont ; les interfaces pontées (appelées “ports”, comme les ports d’un switch) ne doivent pas avoir d’adresse IP.

On peut manipuler les ponts ethernet avec la commande brctl du paquet bridge-utils. On peut définir un pont dans le fichier /etc/network/interfaces avec des options spécifiques bridge_* décrites dans la page de manuel de bridge-utils-interfaces, notamment bridge_ports pour lister les interfaces servant de ports au pont.

L’intégration d’un interface tap d’openvpn dans un pont peut poser problème si le pont est créé avant le lancement d’openvpn et la création de l’interface tap. Je ne me souviens pas si openvpn a des options pour ponter l’interface.

Cette solution semble plus simple à l’usage mais comment la mettre en place ? As tu un lien qui explique cela ? c’est ça le tap ?

heu j’ai pas tout suivi :confused:

Pour ça je suis d’accord … sur ma VM, j’ai créer l’interface VPN qui point vers le LAN entreprise et l’interface tap se crée toute seule lors du demarrage du service openvpn … c’est bien ça

Le web doit regorger de tutoriels dont tu peux t’inspirer après avoir compris la démarche (mais pas suivre aveuglément).
Le mode tap n’est pas le pontage, il en est une condition nécessaire mais non suffisante. On ne peut ponter que des interfaces de type Ethernet. Le mode tap d’openvpn crée une interface de type ethernet qui peut être pontée, alors que le mode tun crée une interface sans couche MAC, qui ne peut être pontée.

Qu’est-ce qui n’est pas clair pour toi ?

Non, l’interface VPN est l’interface tap créée dynamiquement par openvpn. L’interface vers le LAN est une interface ethernet permanente.

Hello @gudbes,

Je vais essayer de t’expliquer le problème différemment, en espérant ne pas écrire de bêtises, je laisse @PascalHambourg rectifier si nécessaire. :wink:

Comme écrit plus haut le VPN ne “fusionne” pas les réseaux de ton entreprise et de ton domicile, en l’occurence il crée seulement un autre réseau (virtuel) avec deux nœuds dont l’un se trouve dans le LAN de ton domicile et l’autre dans le LAN de ton entreprise.

Pour l’instant je comprends que tu utilises ton VPN en mode TUN des deux côtés et donc que ton VPN utilise son propre sous-réseau (distinct des LAN domicile et entreprise), mettons que l’adresse du côté du client VPN (ton domicile) soit 10.8.0.2 et celle côté serveur VPN (ton entreprise) 10.8.0.1 et que tu essaies d’atteindre la machine 192.168.3.251 dans le LAN de ton entreprise.

Lorsque tu envoies des paquets depuis ton domicile pour joindre 192.168.3.251 ils ont alors 10.8.0.2 comme IP source et 192.168.3.251 comme IP de destination. Ils sont transmis à travers le VPN et arrivent donc au serveur OpenVPN qui se trouve dans le LAN de ton entreprise. La VM du serveur OpenVPN connait les routes du LAN de l’entreprise et peut donc router les paquets vers 192.168.3.251 (en passant par ta box entreprise).

Le problème c’est qu’une fois que les paquets ont atteint leur destination les réponses doivent être renvoyés à l’adresse IP source, soit 10.8.0.2. Mais cette adresse ne fait pas partie du LAN de l’entreprise et la machine qui a reçu les paquets ne connaît pas de route spécifique (qui doit passer par l’adresse locale du serveur OpenVPN, 192.168.3.70). Dans cette configuration :

  • Soit tu déclares la route directement sur la machine, il faudra alors le faire pour chaque machine que tu veux joindre dans le LAN de ton entreprise.
  • Soit tu déclares la route sur la box de ton entreprise à qui les machines du LAN de l’entreprise envoie les paquets par défaut lorsqu’elles n’ont pas de route plus spécifique.

C’est la 3ème option décrite par @PascalHambourg.

Une autre approche est d’attribuer au serveur OpenVPN dans ton entreprise et au client OpenVPN à ton domicile des adresses IP du LAN de ton entreprise (plus de problème de routage “retour” dans ce cas). Il faut alors ponter (“bridge” en anglais) l’interface réseau du serveur OpenVPN (en mode TAP) avec l’interface connectée au LAN de ton entreprise, elles “partageront” alors l’adresse du LAN de ton entreprise.
C’est la 2ème option décrite par @PascalHambourg.

Il y a des explications sur comment faire dans les deux cas sur cette page (regarde la section “Expanding the scope of the VPN to include additional machines on either the client or server subnet”) mais ça nécessite un peu de connaissance réseau.

Une autre solution dans ton cas serait pourrait être de connecter les machines du LAN de ton entreprise que tu veux joindre à ton VPN et d’utiliser l’option client-to-client (qui permet aux clients du VPN de communiquer entre eux).

Merci @sclarckone pour cette explication très complète et je comprend mieux maintenant.

En lisant donc ton explication, la solution qui semble la moins contraignante est l’option n°2 décrite par @PascalHambourg.

J’ai déjà lu cette partie et malheureusement, cela n’a pas abouti … de tête (car j’ai testé tellement de choses tun ou encore en tap …), j’arrivais à me connecter mais pas à pinger.

Le problème aujourd’hui c’est que j’ai fais tellement de tests que je ne sais pas vraiement ce que je fais de bien ou de mal.

@sclarckone : penses tu, sans vouloir abuser de ta gentillesse, pouvoir me faire un petit résumé de ce que je dois faire (une sorte de sommaire pour partir sur des bonnes bases) du style :

1 - génération du certificat serveur
2 - génération du certificat client
3 - définition du port “LAN-HOME” avec IP fixe (ip en 192.168.201.x)
4 - définition du port “LAN-ENTREPRISE” avec IP fixe (ip en 192.168.3.x)
5 - Configuration server.conf en mode tap
6 - Configuration bridge LAN_HOME / LAN_ENTREPRISE
7- Configuration client.conf

Cela me permettra de m’assurer que je passe bien par les bonnes étapes.

Merci encore de votre aide à tous les deux, c’est grâce à des gens comme vous que je suis revenu à mon très cher Linux :blush:

Pas sûr que je sois de très bon conseil car je n’utilise OpenVPN que dans une configuration très simple (en mode TUN, pas TAP) et je ne suis pas un expert niveau réseau.

Il faut que tu définisses aussi comment tu répartis/attribues les adresses IP entre le LAN de ton entreprise et les clients OpenVPN de ton domicile (qui doivent avoir des adresses dans le même LAN).

Pour la configuration du bridge sur ta VM je pense que ça doit ressembler pas mal à ça