5 août 2021

StrongSwan, un Vpn IPSEC, la série de tutos.

Dans cette série d’articles, nous allons voir Strongswan, un logiciel permettant d’établir un lien IPSEC entre deux réseaux, bref, de faire du VPN.

Pour monter un serveur VPN sous Linux, on trouve pléthore d’articles concernant OpenVPN : je ferais d’ailleurs un article dessus,m’en servant en mode « client-serveur », pour toujours avoir une IP de sortie bien spécifique pour mes PCS, tablettes, téléphones, etc…
Pour cet usage, il est parfait.

Par contre, son petit défaut, c’est qu’il est consommateur de ressources et pour un lien entre deux serveurs et leurs sous réseaux, ça ne me convient pas.
D’autres solutions existent : tunnel GRE (possible avec Openvswitch, la encore, un futur article), tunnel IPsec, etc…

Et c’est justement un tunnel IPSec que nous allons mettre en place, grâce à Strongswan.

 

I – Présentation

Voila le topo :

J’ai un serveur dédié chez Online et mon serveur à domicile. Les deux hébergent des VMS sur un(des) sous réseau(x). L’idée est de donner la possibilité à ces réseaux de dialoguer.

Côté serveur dédié,  l’IP Internet notée dans cet article IP.DEDIBOX est « branchée » sur une VM routeur. Celle ci communique avec les VMs sur un réseau 10.10.1.0/24 (cf. mon article sur Xen et Openvswitch). Les VMS entre elles, sur un réseau 10.20.1.0/24

Côté domicile, j’ai une box d’opérateur avec son ip publique IP.DOMICILE qui dessert un premier réseau 192.168.1.0/24, dédié à mes postes « clients » (pcs, portables, tablettes, téléphones, etc…).

Deux IPs particulière dans ce réseau: une première 192.168.1.250 attribuée à mon hyperviseur et une autre 192.168.1.1 attribuée à une VM routeur qui dessert un réseau 10.168.1.0/24 interne dédié à mes serveurs (VM KVM)

Bon pour être honnête, ce routeur ne fait pas que routeur, mais également DHCP pour mes machines du réseau 192.168.1.0/24 et resolveur DNS pour toutes les machines (avec donc gestion par vues, une pour 192.168.1.0/24 et une pour 10.168.1.0/24).
Autant sur la dédibox, j’ai de quoi faire une vingtaine de VM en même temps, autant sur mon serveur à Domicile, j’suis un peu plus limite (du coup, je vais à l’encontre de mon principe d’un service par vm…)

Bref….

Ensuite, au niveau du VPN, sur les deux réseaux, il est mis en place sur une VM dédiée.

Pourquoi ce choix ? Pour des raison pratiques et techniques. Une des raisons est que le vpn domicile aura une fonction particulière qu’on verra plus tard. Mais l’avoir pour le coup sur la gateway imposait beaucoup de manipulations réseaux.

J’ai donc choisi de faire quelque chose de symétrique : chaque VPN est sur une VM dédiée.

Pour résumer, coté réseau A (Dédibox), j’ai :

  • une VM routeur en IP.DEDIBOX/10.10.1.1/10.20.1.1.
  • une VM vpn en 10.10.1.2/10.20.1.2.
  •  une VM lambda pour tester en 10.10.1.69/10.20.1.69.

Coté réseau B  (domicile) :

  • une VM routeur en 192.168.1.1/10.168.1.1 (derrière une Box qui dessert 192.168.1.0/24).
  • une VM vpn en 10.168.1.2.
  • une VM lambda pour tester en 10.168.1.69.

Dans tous les cas, pour chaque VM derrière mes réseaux, la gateway par défaut est la VM routeur.

Pour mémoire,  le double réseau 10.10. 10.20. est une topologie réseau qui m’est particulière.

La principale utilité que j’en ai est de pouvoir bien distinguer les flux NET<-> VM (sur le vlan 10) et VM<->VM (sur le vlan 20).
Chaque VM a également des règles différentes au niveau FW selon le VLAN source et/ou destination.

Vous pouvez tout à faire suivre le tuto si vous n’avez qu’un sous réseau de chaque côté.

Au niveau fonctionnement, Ipsec peut utiliser le mode tunnel ou le mode route.

Le mode tunnel est celui qu’il nous faut (le mode route ne passe pas le nat…)

Plus d’explications (en grand breton) : http://www.firewall.cx/networking-topics/protocols/870-ipsec-modes.html

II – Sommaire

I – Installation et mise en place du tunnel

II – Communications entres VMs

III – Liaison Internet – VPN

IV- Encore du réseau avancé


Envie de me soutenir et de me payer un café ? C’est sur la page Don !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *