VPN ipsec avec openswan

Un petit article décrivant une interconnexion de 2 réseaux privés utilisant le VPN ipsec en utilisant les outils openswan.

I – Introduction

a – schéma

Tunnel point a point

[RxPriv1] - [Vpn1] - { } - [Vpn2] - [RxPriv2]
            -left-                  -rignt-

 

Nous avons 2 réseaux privés RxPriv1 et RxPriv2 reliés en VPN au travers Internet grâce à 2 passerelles Vpn1 et Vpn2

b – Pré requis

 

Le package openswan :

 # apt-get install openswan

 

Des IPs fixes de chaque côté.

c – Lexique

 

vpn1 # route -n

 

Lancer la commande route -n sur le serveur Vpn1

vpn1# ipsec showhostkey --left

 

Résultat de la commande

ipsec showhostkey --left

 

  • [IpIntVpn1] : Adresse Ip Interne du serveur Vpn1
  • [IpPubVpn1] : Adresse Ip publique du serveur Vpn1
  • [IpIntVpn2] : Adresse Ip Interne du serveur Vpn2
  • [IpPubVpn2] : Adresse Ip publique du serveur Vpn2

II – Configurations préalables

 

vérifier que les clefs sont bien existantes

Sur Vpn1, la clé left.

Tapez la commande suivante :

Vpn1# ipsec showhostkey --left

 

Si elle échoue, tapez :

Vpn1# ipsec newhostkey --output /etc/ipsec.secrets [--random /dev/urandom]

 

Note : /dev/urandom est à utiliser dans le cas ou le commande sans ne finirait pas son exécution.

De même sur Vpn2, pour la clé right :

Vpn2# ipsec showhostkey --tight

 

Si la commande échoue, tapez :

Vpn2# ipsec newhostkey --output /etc/ipsec.secrets [--random /dev/urandom]

III – Configuration

 

=>  Sur VPN1

Éditez le fichier /etc/ipsec.conf.

Les indentations sont nécessaires et ne doivent pas posséder de commentaires.

conn vpn1tovpn2
        left=[IpPubVpn1] (on met l'ip et pas le nom DNS si jamais sur le serveur nous avons le nom DNS qui pointe sur le localhost
        leftsubnet=[RxPriv1]
        leftid=@vpn1.mon.domaine
        leftrsasigkey=[CMD:Vpn1#ipsec showhostkey --left]
        right=[IpPubVpn2]
        rightsubnet=[RxPriv2]
        rightid=@vpn2.mon.domaine
        rightrsasigkey=[CMD:Vpn2#ipsec showhostkey --rignt]
        auto=start

 

=> Sur VPN2

Éditez le fichier /etc/ipsec.conf.

Les indentations sont nécessaires et ne doivent pas posséder de commentaires.

conn vpn1tovpn2
        left=[IpPubVpn1]
        leftsubnet=[RxPriv1]
        leftid=@vpn1.mon.domaine
        leftrsasigkey=[CMD:Vpn1#ipsec showhostkey --left]
        right=[IpPubVpn2]
        rightsubnet=[RxPriv2]
        rightid=@vpn2.mon.domaine
        rightrsasigkey=[CMD:Vpn2#ipsec showhostkey --rignt]
        auto=start

 

Bref, vous aurez remarqué que ces configurations sont strictement identiques sur les 2 serveurs :)

IV – lancement et tests

=> Lancement

Sur le VPN1 :

Vpn1#/etc/init.d/ipsec start

 

Sur le VPN2 :

Vpn2#/etc/init.d/ipsec start

 

=> Tests

On vérifie que le tunnel est bien monté (sur le VPN1 ou sur le VPN2)

Vpn1#/etc/init.d/ipsec status 
-> 1 tunnels up

 

On vérifie que, sur Vpn1, la route vers l’autre réseau privé est bien montée

Vpn1# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
[RxPriv2] ...

 

Puis sur Vpn2

Vpn2# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
[RxPriv1] ...

 

Ensuite on fait un petit ping à partir de l’interface du réseau prive1 vers le réseau prive2 (ou inversement)

Vpn1# ping -I [IpIntVpn1] [IpIntVpn2]

 

V – Cas particulier : la redondance d’accès internet

 

Imaginons que VPN2 possède 2 accès internet, on peut configurer le VPN pour se connecter en suivant la route par défaut de la passerelle.

=> Sur VPN1

Modifier /etc/ipsec.conf et remplacez la ligne

left=[IpPubVpn1]

 

par

left=%any

 

=> Sur VPN2

Dans /etc/ipsec.conf, remplacez

right=[IpPubVpn2]

 

par

right=%defaultroute

.

Après faites un script qui teste quel accès internet fonctionne bien et basculez votre route par défaut dessus.


Article lu 2696 fois

3 comments

  1. Anonyme dit :

    vréma c’est cool comme tuto réseau

Laisser un commentaire