ipsec-tools, NAT-Traversal et Roadwarrior

ATTENTION BIP BIP

Il se trouve que pour les possesseurs de carte rezal bge(4), la configuration roadwarrior (et pas NAT-T) fontionne mal (seulement icmp et forwarding..). J'ai pu pour le moment tester ce howto uniquement avec xe(4) et sis(4) donc des retours d'expérience sont souhaités pour les autres chipsets.

Intro

Du fait de la complexité à sa mise en oeuvre[1], dans le monde du libre IPSec est souvent delaissé au profit d'OpenVPN ou d'autres solutions SSL plus simples à configurer. Pourtant, moyennant un effort considérable de ton cerveau, tu peux arriver à faire des trucs qui rOOXOoor à l'aide d'IPsec. Notamment établir un tunnel alors que t'es derrière une gateway qui renifle le pas-bon, ou bien encore forwarder tout ton trafic sur un endroit plus sûr (et, évidemment, de manière cryptée).

Mmmh je sens que je commence à t'interesser toi, petit lutin.

Ainsi, malgrés IPv6 qui devait arriver hier je crois, ce n'est encore pas chose faite, et il faut bien avouer que la plupart des réseaux se retrouvent NATé (nouvel adjectif grand robert) et qu'on est loin d'avoir exorcisé NATAN (je me surpasse la).

Heureusement pour toi lutin, le petit article qui va suivre va te permettre de réaliser tes reves les plus fous !!

Pour simplifier les choses au maximum, voilà un petit dessin qui explique comment planter des radis dans un sol plein de prod' :

Comme tu peux le remarquer, le tunnel s'établit en faisant fi de notre passerelle “ronfleur” qui est pourtant seule visible depuis l'extérieur. Cette magie, cher lutin, s'appelle le NAT-Traversal ou natt pour les intimes..

Enfin, en guise de dessert, et comme tu es un guerrier nomade qui combat le sale (lutinroadwarrior), je vais t'enseigner l'art de te déplacer sans bouger.. un petit dessin peut-être ?

Pour ceux qui mettent en doute mon talent d'artiste, le but ici est de faire “comme si” notre machine se situait dans le reseau 172.16.1.0/24

Ca commence à faire long pour une introduction, mais avant de passer aux choses sérieuses..

Prérequis

Pour rédiger cet article, j'ai utilisé uniquement des FreeBSD 6.2-STABLE, cependant :

  • La passerelle qui sert le NAT peut etre installée sous n'importe quel OS il faut juste s'assurer de l'ouverture de deux ports.
  • Il est possible de faire la meme chose avec Linux et NetBSD qui supportent tout deux ipsec-tools et NAT-T
  • Il te faut 3 machines pour être à l'aise
  • Il te faut déjà connaitre IPsec, son fonctionnement avec des certificats et donc savoir comment mettre en place un 'simple' tunnel (tu pourras faire un tour dans les références afin d'upgrader ton cerveau).
  • Bien entendu, les connaissances de base pour l'utilisation avancée de ton systeme (recompilation noyau etc..) te seront demandées.

En ce qui concerne OpenBSD, le démon frequemment utilisé s'appelle isakmpd donc à vous de contribuer :)

Echauffement des vertèbres

Bien, pour commencer efficacement il te faut un système tout frais afin de s'assurer qu'en cas de soucis tu ne te perdras pas dans un trou noir, la technique du déplacement sans bouger étant risquée.

Alors voici le topo (reprend le petit schema 1 ca aide) :

Sur la partie gauche nous avons 2 machines :

  • ronfleur, qui est la passerelle / firewall blabla et qui NAT les machines situées dans le réseau 192.168.1.0/24 dont “chaudière”
      IP interface externe : 10.0.0.1 (ou n'importe quelle ip publique)
      IP interface interne : 192.168.1.254/24
  • chaudière, qui elle aussi possède deux interfaces et qui va nous servir de tunnel ipsec end-point
      IP interface externe : 192.168.1.200/24
      IP interface interne : 192.168.2.200/24

Enfin sur la partie de droite nous avons une machine :

  • cornichon, qui est à l'autre bout du tunnel et qui possède deux interfaces
      IP interface externe : 10.0.0.2 (même principe que pour ronfleur)
      IP interface interne : 172.16.0.254/24

Oui lutin, le but ici est de faire communiquer notre réseau 192.168.2.0/24 avec 172.16.0.0/24.

Ca, c'etait le topo general, maintenant concentrons nous sur chaque becane !

Le dormeur doit se réveiller

Commençons par le plus simple : “ronfleur”, dans mon cas c'est un FreeBSD 6.2 qui sert de gateway / firewall et enfin NAT pour permettre à mon reseau de communiquer avec le monde extérieur et violent. Mais cela pourrait être un linux, un NetBSD embarqué dans un grille-pain, cela n'a pas d'importance et c'est bien le but ! Simplement, il faut s'assurer que ton firewall laisse passer le trafic UDP sur les ports 500 et 4500.

Et que ça chauffe !

La configuration de “chaudière” et de “cornichon” sera similaire dans sa partie configuration système. Il va falloir patcher les sources du système, recompiler le tout et installer ipsec-tools comme il faut ™.

IMPORTANT !!

Dans cet exemple, j'ai patché le système pour utiliser la pile IPSec KAME, le patch permet dorénavant aussi l'utilisation d'IPSEC_FAST qui, combiné avec device crypto(4) (amis possesseurs de carte hardware d'encryption..) et, récemment, du device enc(4) permet le processing des paquets par le firewall apres décryption (comme sous OpenBSD).

Je te laisse le soin de récupérer les sources de FreeBSD (ici avec le tag RELENG_6) et de mettre à jour l'arbre des ports à coup de portsnap*

Une fois ceci fait, patche ton système à l'aide de tes mimines :

[root@chaudiere /root]# cd /usr/src/sys
[root@chaudiere /usr/src/sys]# fetch http://ipsec-tools.sourceforge.net/freebsd6-natt.diff
[root@chaudiere /usr/src/sys]# patch -p0 < freebsd6-natt.diff

Maintenant lutin, tu possèdes un système prêt à être compilé, lance vite un

[root@chaudiere /usr/src/sys]# cd /usr/src
[root@chaudiere /usr/src]# make buildworld

Pendant ce temps (variable) tu peux aller te chercher à boire, ouvrir une nouvelle console et lancer l'éditeur de ton choix sur le fichier de configuration de ton noyau qu'on va appeller CHAUDIERE pour changer.. Rajoute ces lignes :

options                IPSEC
options                IPSEC_ESP
options                IPSEC_NAT_T

Profites en pour faire la meme chose pour “cornichon” et tu pourras déstresser :)

Une fois ton buildworld terminé, recompile ton noyau (make kernel KERNCONF=“CHAUDIERE” toussa), reboot single user, mergemaster -p, make installworld, make delete-old et encore une fois mergemaster puis reboot final et tu auras ton système tout chaud.

Enfin j'espère que tu as bien preparé ton arbre des ports pour chopper la dernière version d'ipsec-tools… Fait nous un petit

[root@chaudiere /root]# cd /usr/ports/security/ipsec-tools
[root@chaudiere /usr/ports/security/ipsec-tools]# make config

Et là, cher lutin, tu nous coches :

“DEBUG” “IPV6” “ADMINPORT” “DPD” “NATT” “NATTF” “FRAG” “HYBRID”

Ensuite :

[root@chaudiere /usr/ports/security/ipsec-tools]# make install clean

Encore une fois, il faut faire la même pour “cornichon”..

Bon, à partir de là, nous avons sur les deux systèmes :

  • Un système mis à jour en 6.2-STABLE
  • Un kernel patché & ready-to-use
  • ipsec-tools installé

C'est presque fini, il faut juste vérifier que nous allons utiliser le bon setkey(8) pour cela :

[root@chaudiere /root]# /usr/local/sbin/setkey -V
setkey @(#) ipsec-tools 0.6.6 (http://ipsec-tools.sourceforge.net)

Si tu as une sortie similaire à celle-ci (le setkey du système ne supporte même pas -V), c'est bon signe, supprime le setkey du système qui est deprecated (situé dans /sbin/setkey) ou déplace le. Bref, débrouille toi pour que le setkey de ipsec-tools (par défaut dans /usr/local/sbin/) soit bien utilisé au lieu de l'autre.

Ca fume !

Bon alors, à partir de là on se focalise sur “chaudière” :

Ici mon cher lutin, tu dois savoir que le répertoire de configuration par défaut de racoon se situe dans /usr/local/etc/racoon

Dans ce même répertoire tu vas nous créer l'arborescence suivante (respecte bien les droits) :

drwxr-xr-x  2 root  wheel   512 Mar 22 07:09 certs
-r--------  1 root  wheel   805 Mar 22 07:21 racoon.conf

./certs:
total 8
lrwxr-xr-x  1 root  wheel     6 Mar 22  07:21 953311cf.0 -> ca.crt
-r--------  1 root  wheel  1322 Mar 22  07:21 ca.crt
-r--------  1 root  wheel  1399 Mar 22  07:21 chaudiere.crt
-r--------  1 root  wheel  1679 Mar 22  07:21 chaudiere.key
-r--------  1 root  wheel  1391 Mar 22  07:21 cornichon.crt

Peut-être te demandes-tu “Mais qu'est-ce donc que ces certificats ?” Lutin, je te l'ai deja dit, tu dois savoir créer toi même tes certificats x509, dans notre cas, place le certificat de “chaudière” et de “cornichon” dans le répertoire certs et places-y aussi la clef privée de “chaudière”. Enfin ajoute le ca.crt qui a permit la création de ces certificats.. Pour ce qui est du lien pointant sur ca.crt, utilises la formule magique :

[root@chaudiere /usr/local/etc/racoon/certs]# ln -s ca.crt `openssl x509 -noout -hash -in ca.crt`.0

Encore une fois : ATTENTION AUX DROITS

Tu as placé correctement tes certificats mais tu te demandes comment remplir ton racoon.conf ? regarde ci-dessous :

# racoon.conf natt configuration
# box : chaudiere (aka le client)

path include "/usr/local/etc/racoon";
path certificate "/usr/local/etc/racoon/certs";

# log debug;  à utiliser pour le debugging

listen
{
        isakmp 192.168.1.200[500]; #port normal de communication IKE
        isakmp_natt 192.168.1.200[4500]; #port utilisé pour le NAT-T
}
 
timer
{
        natt_keepalive 10 sec; #Par défaut a 20sec, on le réduit pour les essais 
                               #car faible trafic
}

#Phase 1

remote 10.0.0.2
{
        exchange_mode main; #On choisit main, car plus complet
        my_identifier asn1dn; #La méthode d'authentification avec certificats
        certificate_type x509 "chaudiere.crt" "chaudiere.key"; #C'est parlant non !?
        peers_certfile x509 "cornichon.crt"; #Vu qu'on possède le certificat du peer,
                                             #on le vérifie aussi
        nat_traversal on; #On active le natt si disponible

        proposal {
                authentication_method rsasig; #Clefs RSA
                encryption_algorithm aes; #Encryption AES
                hash_algorithm sha1; #SHA1 pour le hash
                dh_group 2; 1024bits
        }

        proposal_check obey; #On n'oblige pas à utiliser notre proposition par le serveur
}

#Phase 2

sainfo anonymous
{
        pfs_group 2; #Utilisation du PFS, longueur de clef 1024
        lifetime time 15min; #Durée de vie du SA 15 minutes
        encryption_algorithm rijndael; #AES
        authentication_algorithm hmac_sha1, hmac_md5; #Hash SHA1 puis MD5 si non disponible
        compression_algorithm deflate; #Compression
}

Maintenant que ta politique est définie, il te faut déterminer les 'routes' IPsec, pour cela crée le fichier /etc/ipsec.conf

#ipsec.conf - chaudière - NATT
spdadd 192.168.2.0/24 172.16.0.0/24 any -P out ipsec esp/tunnel/192.168.1.200-10.0.0.2/require;
spdadd 172.16.0.0/24 192.168.2.0/24 any -P in ipsec esp/tunnel/10.0.0.2-192.168.1.200/require;

Traduction : le réseau 192.168.2.0/24 est interconnecté avec le reseau 172.16.0.0/24 par le tunnel ayant pour endpoints 192.168.1.200 et 10.0.0.2 (2 routes)

Respire lutin, la configuration de chaudière est terminée..

*CROQUE*

Passons à “cornichon” :

Pareil que pour “chaudière”, tu dois avoir au final cette arborescence dans /usr/local/etc/racoon :

drwxr-xr-x  2 root  wheel  512 Mar 22 08:09 certs
-r--------  1 root  wheel  905 Mar 22 09:57 racoon.conf

./certs:
total 8
lrwxr-xr-x  1 root  wheel    6 Mar  8 14:32 953311cf.0 -> ca.crt
-r--------  1 root  wheel 1322 Mar  8 14:31 ca.crt
-r--------  1 root  wheel 1399 Mar  8 14:30 chaudiere.crt
-r--------  1 root  wheel 1391 Mar  8 14:30 cornichon.crt
-r--------  1 root  wheel 1679 Mar  8 14:31 cornichon.key

Tu remarqueras que jusqu'ici c'est similaire à “chaudière” (avec inversion des certificats) Mais cela change pour le racoon.conf (je commente uniquement les nouveautés) :

# racoon.conf natt configuration
# box : cornichon (aka le serveur)
path include "/usr/local/etc/racoon";
path certificate "/usr/local/etc/racoon/certs";

#log debug;

listen
{
        isakmp 10.0.0.2[500];
        isakmp_natt 10.0.0.2[4500];
}

timer
{
        natt_keepalive 10 sec;
}

remote 192.168.1.200
{
        exchange_mode main;
        my_identifier asn1dn;
        certificate_type x509 "cornichon.crt" "cornichon.key";
        peers_certfile x509 "chaudiere.crt";

        nat_traversal on;
        proposal_check claim; #On impose nos paramètres au client
        generate_policy on; #Nous ne connaissons pas les SPD par avance : 
                            #elles vont être générées.

        proposal {
                authentication_method rsasig;
                encryption_algorithm aes;
                hash_algorithm sha1;
                dh_group 2;
        }
}      

sainfo anonymous
{
        pfs_group 2;
        lifetime time 15min;
        encryption_algorithm rijndael;
        authentication_algorithm hmac_sha1, hmac_md5;
        compression_algorithm deflate;
}

Et.. c'est tout, grâce à la règle “generate_policy on”, lutin tu économises tes doigts !

Ping-pong

Commençons les essais lutin car tu dois être épuisé !

Sur “cornichon” :

[root@cornichon /root]# racoon -F

Ce qui a pour effet de démarrer racoon en foreground

Sur “chaudière” :

[root@chaudiere /root]# setkey -f /etc/ipsec.conf
[root@chaudiere /root]# racoon -F

C'est la même chose mais avec en plus la définition manuelle de la SPD définie dans ipsec.conf

Il te reste à établir la connexion à l'aide d'un ping (par exemple) à partir du réseau 192.168.2.0/24 :

[root@pamplemousse /root]# ping 172.16.0.254
PING 172.16.0.254 (172.16.0.254): 56 data bytes
WARNING: pseudo-random number generator used for IPsec processing
64 bytes from 172.16.0.254: icmp_seq=17 ttl=64 time=107.365 ms
64 bytes from 172.16.0.254: icmp_seq=18 ttl=64 time=117.033 ms

Tu devrais remarquer sur “cornichon” (serveur)

INFO: IPsec-SA established: ESP/Tunnel 10.0.0.1[50650]->10.0.0.2[4500] spi=170429720(0xa288d18)
INFO: IPsec-SA established: ESP/Tunnel 10.0.0.2[4500]->10.0.0.1[50650] spi=17723576(0x10e70b8)

Pour la déconnexion, utilise sur le client :

[root@pamplemousse /root]# /usr/local/etc/rc.d/racoon stop && setkey -FP && setkey -Fa

CA MARCHPAS

Connus et fréquents avec IPSec, l'établissement de ton tunnel peut foirer pour mille et une raison. Pour t'aider tu disposes de setkey(8) (voir le man), des options de debug de racoon (log debug ainsi que les options -d -F) et bien entendu tcpdump.

Le top du top c'est d'avoir la main sur tout le trajet des paquets pour bien comprendre le problème.

Mais si vraiment tu galères, n'hésite pas à venir nous en parler sur le channel IRC

Et le dessert ??

Ahoon lutin, ca ne te suffit pas ?? Tu veux devenir double zero ? Tu aimes les spaghettis ?

Alors prend ton petit dessin numero 2, oui, celui avec carotte à gauche.

Tu remarqueras qu'ici un nouveau réseau se situe derrière cornichon, il sera utilisé comme le endpoint de notre tunnel et nous allons le réserver aux roadwarriors VPN. A gauche, “chaudière” à disparue, et te voila avec “carotte” le portable aux fesses roses comme du cochon.

Voici le topo :

  • ronfleur, qui est la passerelle / firewall blabla et qui NAT les machines situées dans le réseau 192.168.1.0/24 dont “carotte”
      IP interface externe : 10.0.0.1 (ou n'importe quelle ip publique)
      IP interface interne : 192.168.1.254/24
  • carotte, notre roadwarrior de combat VERT qui accède au reste du monde grâce à “ronfleur” :
      IP interface externe : 192.168.1.200/24
  • cornichon, qui est à l'autre bout du tunnel et qui possède deux interfaces :
      IP interface externe : 10.0.0.2 (même principe que pour "ronfleur")
      IP interface interne : 172.16.0.254/24

Je ne parle pas du réseau 172.16.1.0/24 qui sera virtuel (ouaaaah)

Le but de l'opération : bouger “carotte” dans le réseau 172.16.1.0/24 sans la déplacer physiquement dans ce même réseau (ouaaaah bis)

Pour le reste, on va se servir des certificats mais aussi du login,password qu'a notre utilisateur sur la machine “cornichon”. Comment ca yen a pas ? ben il faut le créer mon lutin.. allez hop adduser toussa et choisi un mot de passe qui poutr !

Tu te demandes à quoi cela sert ? C'est en fait nécessaire pour identifier un roadwarrior d'un autre mais tu pourrais aussi utiliser PAM, RADIUS etc…

Dans notre cas, pour simplifier, on utilise les comptes du système ciblé.

miaam ça à l'air boooOOon

Le système de “ronfleur” et de “cornichon” ne change pas, mais il faut configurer “carotte” de la même manière que “cornichon” ou “chaudiére” qui peut être réemployée pour l'occasion. Oui lutin je parle bien du patch, buildworld et kernel.. Comme j'ai la flemme de me répéter deux fois, je te laisse te debrouiller : cela ne devrait pas trop te poser de problème car tu l'as déjà fait deux fois..

Par contre, pour la configuration de racoon, je te recommande de faire ceci sur “carotte” :

[root@carotte /usr/local/etc/racoon]# cp /usr/local/share/examples/ipsec-tools/roadwarrior/client/* .

tu te retrouves donc après mise en place des certificats avec :

drwxr-xr-x  2 root  wheel   512 Mar 22 07:09 certs
-r-x------  1 root  wheel  2152 Mar 22 07:16 phase1-down.sh
-r-x------  1 root  wheel  2290 Mar 22 07:18 phase1-up.sh
-r--------  1 root  wheel   805 Mar 22 07:21 racoon.conf

./certs:
total 8
lrwxr-xr-x  1 root  wheel     6 Mar 22  07:21 953311cf.0 -> ca.crt
-r--------  1 root  wheel  1322 Mar 22  07:21 ca.crt
-r--------  1 root  wheel  1399 Mar 22  07:21 carotte.crt
-r--------  1 root  wheel  1679 Mar 22  07:21 carotte.key

Cependant, un petit changement très utile est à faire pour les deux scripts de phase1-* :

phase1-up.sh :

--- /usr/local/share/examples/ipsec-tools/roadwarrior/client/phase1-up.sh       Thu Mar  8 14:15:15 2007
+++ phase1-up.sh        Tue Mar 27 15:21:47 2007
@@ -6,6 +6,9 @@
 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

 case `uname -s` in
+FreeBSD)
+       DEFAULT_GW=`netstat -rn | awk '($1 == "default"){print $2}'`
+       ;;
 NetBSD)
        DEFAULT_GW=`netstat -rn | awk '($1 == "default"){print $2}'`
        ;;
@@ -31,6 +34,12 @@
 echo "nameserver ${INTERNAL_DNS4}" >> /etc/resolv.conf

 case `uname -s` in
+FreeBSD)
+       if=`netstat -rn|awk '($1 == "default"){print $6}'`
+       ifconfig ${if} alias ${INTERNAL_ADDR4}
+       route delete default
+       route add default ${DEFAULT_GW} -ifa ${INTERNAL_ADDR4}
+       ;;
 NetBSD)
        if=`netstat -rn|awk '($1 == "default"){print $7}'`
        ifconfig ${if} alias ${INTERNAL_ADDR4}

et phase1-down.sh :

--- /usr/local/share/examples/ipsec-tools/roadwarrior/client/phase1-down.sh     Thu Mar  8 14:15:15 2007
+++ phase1-down.sh      Tue Mar 27 15:21:54 2007
@@ -7,6 +7,9 @@
 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

 case `uname -s` in
+FreeBSD)
+       DEFAULT_GW=`netstat -rn | awk '($1 == "default"){print $2}'`
+       ;;
 NetBSD)
        DEFAULT_GW=`netstat -rn | awk '($1 == "default"){print $2}'`
        ;;
@@ -30,6 +33,12 @@
 test -f /etc/resolv.conf.bak && cp /etc/resolv.conf.bak /etc/resolv.conf

 case `uname -s` in
+FreeBSD)
+       if=`netstat -rn|awk '($1 == "default"){print $6}'`
+       ifconfig ${if} delete ${INTERNAL_ADDR4}
+       route delete default
+       route add default ${DEFAULT_GW} -ifa ${LOCAL_ADDR}
+       ;;
 NetBSD)
        if=`netstat -rn|awk '($1 == "default"){print $7}'`
        ifconfig ${if} delete ${INTERNAL_ADDR4}

Et enfin, le classique racoon.conf pour “carotte” :

# racoon.conf roadwarrior natt configuration
# box : carotte (aka le roadwarrior)
path include "/usr/local/etc/racoon";
path certificate "/usr/local/etc/racoon/certs";

listen {
        #Vérifier l'existence du répertoire /var/db/racoon
        adminsock "/var/db/racoon/racoon.sock" "root" "operator" 0660; 
}

remote 10.0.0.2 {
        exchange_mode aggressive; #roadwarrior
        ca_type x509 "ca.crt"; #LE CA
        proposal_check obey;
        nat_traversal on;
        mode_cfg on; #On récupère la configuration du serveur
        script "/usr/local/etc/racoon/phase1-up.sh" phase1_up;
        script "/usr/local/etc/racoon/phase1-down.sh" phase1_down;
        passive off; #Notre client est l'initiator
        proposal {
                encryption_algorithm aes;
                hash_algorithm sha1;
                authentication_method hybrid_rsa_client;
                dh_group 2;
        }
}

sainfo anonymous {
        pfs_group 2;
        lifetime time 15min;
        encryption_algorithm rijndael;
        authentication_algorithm hmac_sha1;
        compression_algorithm deflate ;
}

et celui de “cornichon” change lui aussi, pour t'aider je rajoute un commentaire aux changements :

# racoon.conf roadwarrior natt configuration
# box : cornichon (aka le serveur)
path include "/usr/local/etc/racoon";
path certificate "/usr/local/etc/racoon/certs";

log debug;

listen
{
        isakmp 10.0.0.2[500];
        isakmp_natt 10.0.0.2[4500];
}

timer
{
        natt_keepalive 10 sec;
}

remote anonymous #attention : on ne connait à priori pas l'IP source du roadwarrior
{
        exchange_mode aggressive; #CACHANGELAFAITGAFFE
        my_identifier asn1dn;
        certificate_type x509 "cornichon.crt" "cornichon.key";
        #C'est une SAD générique donc pas de peers_certfile

        nat_traversal on;
        proposal_check claim;
        generate_policy on;

        proposal {
                authentication_method hybrid_rsa_server; #ATTENTION LA AUSSI
                encryption_algorithm aes;
                hash_algorithm sha1;
                dh_group 2;
        }
}      

mode_cfg {
        network4 172.16.1.10; #Réseau et IP de départ
        netmask4 255.255.255.0; #Netmask du réseau virtuel
        pool_size 10; #Nombre de roadwarriors simultanés
        auth_source system; #Comptes systeme
        dns4 192.168.1.1; #C'est parlant non ?
        banner "/usr/local/etc/racoon/motd"; #N'oublie pas la parole sacrée
        pfs_group 2;
}

sainfo anonymous
{
        pfs_group 2;
        lifetime time 15min;
        encryption_algorithm rijndael;
        authentication_algorithm hmac_sha1, hmac_md5;
        compression_algorithm deflate;
}

Et n'oublie pas :

[root@cornichon /usr/local/etc/racoon]# echo "BIENVENUE LUTIN MAIS ESSUIE TES PIEDS" > motd

Yen reste encore !

Alors la lutin, il ne reste “plus qu'a”

La connexion diffère du fonctionnement classique dans le sens qu'on doit démarrer la phase 1 avec racoonctl puis ensuite, une fois authentifié, tester le tunnel avec la phase 2:

Sur “cornichon” :

 
[root@cornichon /root]# racoon -F

et surtout sur “carotte” :

[root@carotte /root]# racoon
[root@carotte /root]# racoonctl vc -u lutin 10.0.0.2
Password:
Bound to address 172.16.1.10

BIENVENUE LUTIN MAIS ESSUIE TES PIEDS

[root@carotte /root]#
[root@carotte /root]#ping gcu.info
PING gcu.info (217.195.17.234): 56 data bytes
64 bytes from 217.195.17.234: icmp_seq=0 ttl=240 time=214.469 ms

Pour la déconnexion :

[root@carotte /root]# racoonctl vd 10.0.0.2
VPN connexion terminated

Références

  • [1] Les ptits gars d'OpenBSD font tout pour simplifier la mise en place d'un tunnel au point que cela donne ca :

http://openbsd.org/papers/asiabsdcon07-ipsec/index.html

  • Pour les débutants avec IPsec + certificats, je vous renvoie sur cette doc qui n'est peut-être pas à jour mais bien pratique.

Changelog

  • 28/03/2007 import du tip par hotbox plus corrections
  • 30/03/2007 corrections + warning bge(4)
freebsd/ipsec_natt_roadwarrior.txt · Last modified: 2010/01/12 13:29 (external edit)