Je continue l’exploitation des usages du petit routeur/pare-feu ZeroShell. Toutefois, cette distribution est utilisée à titre d’exemple et l’implémentation présentée dans le cadre de cet article n’est en en aucun cas limité à ce produit.
Le sujet de cet article m’a été demandé par Nicolas dans le cadre d’un projet personnel.
Dans le cadre de cet article, nous allons poser le contexte suivant :
- Le Client1 : Tous les utilisateurs de ce client sont présents sur un site physique : Site1. Ce site est équipé d’un serveur : Server1.1. Ce site dispose d’un accès à l’internet au travers d’un routeur ZeroShell : RouteurSite1. Ce client loue un serveur chez l’hébergeur : Server1.2. Le réseau local est en 10.0.11.0/24. La passerelle est 10.0.11.254.
- Le Client2 : Tous les utilisateurs de ce client sont présents sur un site physique : Site2. Ce site est équipé d’un serveur : Server2.1. Ce site dispose d’un accès à l’internet au travers d’un routeur ZeroShell : RouteurSite1. Ce client loue un serveur chez l’hébergeur : Server2.2. Le réseau local est en 10.0.12.0/24. La passerelle est 10.0.12.254.
- L’hébergeur : Il dispose d’un accès internet protégé par ZeroShell : Router. Derrière ce routeur, se trouvent deux serveurs : Server1.2 & Server2.2. Chacun de ces serveurs doit pouvoir être utilisé sans contrainte depuis les sites de Client1 et Client2. Le routeur est administré depuis le réseau 10.0.0.0/24. Son IP dans ce réseau est 10.0.0.254. Le serveur Server1.2 est dans le réseau 10.0.1.0/24. La passerelle de ce réseau est 10.0.1.254. Le serveur Server1.2 est dans le réseau 10.0.2.0/24. La passerelle de ce réseau est 10.0.2.254.
Comme je ne dispose pas de 3 sites physiques, de 4 serveurs et 3 routeurs, j’ai monté une maquette construite sous Microsoft HyperV. Pour cela, j’ai créé un réseau privé simulant l’internet : 10.0.3.0/24. Chaque site dispose d’une IP « publique » fixe dans ce réseau :
- LeSite1 : 10.0.3.109
- Le Site2 : 10.0.3.110
- L’hébergeur : 10.0.3.101
Vous trouverez ci-dessous le résumé graphique de cette configuration.
Créer les VPN entre les Sites et l’Hébergeur
Création VPN Site1 vers Hébergeur
Paramétrage Routeur
Créer 2 VPN, l’un à destination de Site1 (entre 10.0.3.101 & 10.0.3.109), l’autre à destination de Site 2 (entre 10.0.3.101 & 10.0.3.110)
Se reporter à l’article précédent sur la création d’un vpn lan to lan pour les détails
Attention chaque VPN requiert un port UDP différent
Paramétrage VPN Site1 – coté Hébergeur
Paramétrage VPN Site1 – coté RouteurSite1
Paramétrage VPN Site2 – coté Hébergeur
Paramétrage VPN Site2 – coté RouteurSite2
Créer les routes vers l’hébergeur
Paramétrage RouterSite1
Tester l’accès à Internet
Tester l’accès à Server 1.2 (10.0.1.1)
Tester l’absence d’accès à Server 2.2 (10.0.2.1)
Paramétrage RouterSite2
Tester l’accès à Internet
Tester l’accès à Server 2.2 (10.0.2.1)
Tester l’absence d’accès à Server 1.2 (10.0.1.1)
Sécuriser les espaces client coté hébergeur
Création des routes à destination de Site1 et Site2
Interdire les échanges entre le ETH03 et ETH02 sur Routeur
Depuis Server 1.2
Tester l’accès vers l’internet
Tester l’accès vers Server 1.1 (10.0.11.1)
Tester l’absence d’accès de Server 2.2 vers Server 2.2 (10.0.2.1)
Tester l’absence d’accès de Server 2.2 vers Server 2.1 (10.0.12.1)
Depuis Server 2.2
Tester l’accès vers l’internet
Tester l’accès vers Server 2.1 (10.0.12.1)
Tester l’absence d’accès de Server 2.2 vers Server 1.2 (10.0.1.1)
Tester l’absence d’accès de Server 2.2 vers Server 1.1 (10.0.11.1)
Cette solution permet bien d’héberger deux serveurs mis à la disposition de deux clients distincts. Toutefois, si cette approche est assez simple à mettre en œuvre, elle impose plusieurs contraintes importantes :
- Disposer d’une carte réseau par client hébergé,
- Les réseaux locaux des Site1 et Site2 doivent être différents
- La complexité du paramétrage du pare-feu croit exponentiellement avec le nombre de clients.
- Comment faire si deux clients ont le même lan sur site ?
Néanmoins, cet article a été une approche intéressante et n’hésitez pas à me faire part de vos remarques car je ne suis pas un spécialiste des réseaux. Il y a peut-être une façon plus intelligente d’utiliser Zeroshell