{"id":133,"date":"2012-02-15T23:43:18","date_gmt":"2012-02-15T22:43:18","guid":{"rendered":"http:\/\/blog.brimbelle.org\/?p=133"},"modified":"2012-08-10T16:40:28","modified_gmt":"2012-08-10T15:40:28","slug":"passerelle-vpn-l2tpipsec-pour-smartphone-avec-openbsd","status":"publish","type":"post","link":"https:\/\/blog.brimbelle.org\/index.php\/2012\/02\/15\/passerelle-vpn-l2tpipsec-pour-smartphone-avec-openbsd\/","title":{"rendered":"Passerelle VPN L2TP\/IPsec pour smartphone avec OpenBSD"},"content":{"rendered":"<p><a onclick=\"ps_imagemanager_popup(this.href,'logo.png','400','400');return false\" onfocus=\"this.blur()\" href=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/logo.png\" rel=\"lightbox[133]\"><img loading=\"lazy\" decoding=\"async\" title=\"logo.png\" src=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/.thumbs\/.logo.png\" alt=\"logo.png\" width=\"96\" height=\"96\" align=\"left\" border=\"0\" hspace=\"10\" \/><\/a>Dans cet article, je vais pr\u00e9senter la marche \u00e0 suivre pour configurer une passerelle VPN utilisant les protocoles L2TP\/IPsec sur un syst\u00e8me OpenBSD (en version 5.1). Cette passerelle vous permettra de vous y connecter \u00e0 l&rsquo;aide de votre smartphone Android (test\u00e9 avec Android 4.0 ICS) ou iPhone, puisque ces terminaux supportent maintenant nativement ces types de VPN.<\/p>\n<p>Le protocole L2TP (Layer 2 Tunneling Protocol) est un protocole de tunneling \u00e0 la popularit\u00e9 grandissante, car support\u00e9 nativement par de nombreux OS : Windows, MacOS X, Linux, etc. mais \u00e9galement par les plate-formes mobiles populaires que sont Android et iOS. De plus, L2TP permet ais\u00e9ment de r\u00e9aliser des VPN au dessus d&rsquo;infrastructures existantes puisqu&rsquo;il est transport\u00e9 dans des paquets IP\/UDP sur le port 1701. Dans la suite du document, nous allons utiliser le nouveau <em>daemon<\/em> <a title=\"Sources de npppd(8)\" href=\"http:\/\/www.openbsd.org\/cgi-bin\/cvsweb\/src\/usr.sbin\/npppd\/\" target=\"_blank\">npppd(8)<\/a>, inclus dans le syst\u00e8me de base d&rsquo;OpenBSD.<\/p>\n<p>Afin de rendre le VPN plus s\u00fbr, la m\u00e9thode est de chiffrer le trafic L2TP dans un tunnel IPsec. Ici rien de bien nouveau, nous nous reposerons sur l&rsquo;extr\u00eame simplicit\u00e9 de configuration offerte par OpenBSD.<\/p>\n<p><!--more-->Un petit HOWTO est disponible avec les sources du &lsquo;daemon&rsquo; npppd(8) que nous allons utiliser \u00e0 <a title=\"HOWTO fourni avec les sources de npppd(8)\" href=\"http:\/\/www.openbsd.org\/cgi-bin\/cvsweb\/~checkout~\/src\/usr.sbin\/npppd\/HOWTO_PIPEX_NPPPD.txt?rev=1.8;content-type=text%2Fplain\" target=\"_blank\">cette adresse<\/a>. Seulement, cet exemple de configuration ne s&rsquo;int\u00e9resse qu&rsquo;au cas g\u00e9n\u00e9rique et ne peut pas \u00eatre repris tel quel dans certains sc\u00e9narios.<\/p>\n<p style=\"padding-left: 30px;\"><strong>1. El\u00e9ments d&rsquo;architecture<\/strong><\/p>\n<p>Mon op\u00e9rateur internet est Free. J&rsquo;utilise une Freebox Revolution (v6) en mode routeur afin d&rsquo;utiliser toutes les fonctionnalit\u00e9s multimedia qu&rsquo;elle offre. Il faut donc noter que ma passerelle VPN poss\u00e8de une adresse IPv4 priv\u00e9e (192.168.0.1) sur le r\u00e9seau interne de ma Freebox. Il ne faut donc pas oublier de configurer la Freebox pour rediriger le trafic IPsec et L2TP (chiffr\u00e9 avec IPsec) sur la passerelle VPN, en utilisant une IP \u00ab\u00a0DMZ\u00a0\u00bb dans l&rsquo;interface de configuration de la Freebox.<\/p>\n<p><em><strong>Note :<\/strong> Les simples redirections de ports ne fonctionnent pas, car il faut non seulement rediriger le trafic UDP sur les ports 500 et 4500 (pour respectivement les protocoles ISAKMP et NAT-Traversal concernant la gestion de cl\u00e9s) mais \u00e9galement le trafic ESP (Encap Security Payload), qui a le num\u00e9ro de protocole IP n\u00b050 ; et qui concerne nos donn\u00e9es utiles chiffr\u00e9es.<\/em><\/p>\n<p>Ensuite, mon op\u00e9rateur mobile est \u00e9galement Free. Free ne pouvant techniquement pas assigner une adresse IP publique \u00e0 chaque \u00e9quipement mobile sur son r\u00e9seau, lorsque vous utilisez des connexions pour de la donn\u00e9e, vous vous retrouvez avec une IP en adressage priv\u00e9 (10.X.X.X).<\/p>\n<p>Ces points sont \u00e0 prendre en compte, surtout concernant la configuration IPsec qui devient l\u00e9g\u00e8rement plus complexe sur notre passerelle.<\/p>\n<p style=\"padding-left: 30px;\"><strong>2. Configuration de la passerelle VPN<\/strong><\/p>\n<p>L&rsquo;\u00e9tape d&rsquo;installation de l&rsquo;OS OpenBSD ne sera pas d\u00e9taill\u00e9e puisque c&rsquo;est une installation tout ce qu&rsquo;il y a de plus standard. Deux points sont cependant \u00e0 noter.<\/p>\n<p>D&rsquo;une part, vous aurez besoin d&rsquo;utiliser au minimum OpenBSD 5.1 dont la date de sortie est comme d&rsquo;habitude (cycles de d\u00e9veloppement de 6 mois) fix\u00e9e au 1er mai 2012. A l&rsquo;heure o\u00f9 je r\u00e9dige cet article, OpenBSD 5.1 est seulement tagg\u00e9 dans le CVS, vous pouvez donc utiliser un <a title=\"Snapshots OpenBSD\" href=\"http:\/\/ftp.fr.openbsd.org\/pub\/OpenBSD\/snapshots\/\">snapshot<\/a> de -current.<\/p>\n<p>D&rsquo;autre part, vous aurez besoin d&rsquo;installer les sources de l&rsquo;OS (src, pas xenocara ni les ports). J&rsquo;utilise pour ma part une machine \u00e0 base de <a title=\"Carte Soekris net5501\" href=\"http:\/\/soekris.com\/products\/net5501.html\" target=\"_blank\">Soekris net5501<\/a> avec le syst\u00e8me install\u00e9 sur une carte flash. Ne pouvant pas vraiment installer les sources et compiler les outils n\u00e9cessaires, du fait de l&rsquo;utilisation d&rsquo;une carte flash, je monte les r\u00e9pertoires (\/usr\/obj et \/usr\/src) via un partage NFS export\u00e9 par une autre machine.<\/p>\n<p>Je vous invite \u00e0 lire la <a title=\"FAQ d'OpenBSD\" href=\"http:\/\/www.openbsd.org\/faq\/fr\/\" target=\"_blank\">FAQ d&rsquo;OpenBSD<\/a> qui est un mod\u00e8le du genre pour de plus amples informations sur l&rsquo;installation de l&rsquo;OS.<\/p>\n<p>Une fois l&rsquo;OS OpenBSD 5.1 install\u00e9, ainsi que ses sources, il faut modifier le fichier \/etc\/sysctl.conf pour autoriser certaines fonctionnalit\u00e9s au niveau du noyau d&rsquo;OpenBSD. Pour cela, il faut s&rsquo;assurer que ces lignes soient d\u00e9-comment\u00e9es :<br \/>\n<code>net.inet.ip.forwarding=1 # transfert IP entre interfaces<br \/>\nnet.inet.gre.allow=1 # autorise le protocole de tunneling GRE<br \/>\nnet.pipex.enable=1 # acc\u00e9l\u00e9rateur de transfert IP pour PPP<\/code><\/p>\n<p style=\"padding-left: 30px;\"><strong>4. Installation et configuration de npppd(8)<\/strong><\/p>\n<p>Ensuite, il faut compiler le <em>daemon<\/em> npppd(8). Celui-ci est d\u00e9j\u00e0 stable ; il n&rsquo;est cependant pas compil\u00e9 par d\u00e9faut, suite \u00e0 un manque de documentation mais \u00e9galement \u00e0 une configuration qui doit \u00eatre r\u00e9-\u00e9crite, afin de coller \u00e0 la syntaxe des autres <em>daemons<\/em> d&rsquo;OpenBSD. Pour compiler npppd(8) :<br \/>\n<code>$ cd \/usr\/src\/usr.sbin\/npppd<br \/>\n$ make<br \/>\n$ sudo make install<\/code><\/p>\n<p>Pour compiler npppdctl(8), son outil de contr\u00f4le :<br \/>\n<code>$ cd \/usr\/src\/usr.sbin\/npppctl<br \/>\n$ make<br \/>\n$ sudo make install<\/code><\/p>\n<p>Cr\u00e9er le fichier npppd.conf (issu du HOWTO \u00e9voqu\u00e9 pr\u00e9c\u00e9demment) :<br \/>\n<code>interface_list: tun0<br \/>\ninterface.tun0.ip4addr: 10.0.0.1<br \/>\npool.dyna_pool: 10.0.0.0\/25<br \/>\npool.pool: 10.0.0.128\/25<br \/>\nauth.local.realm_list: local<br \/>\nauth.local.realm.acctlist: \/etc\/npppd\/npppd-users.csv<br \/>\nrealm.local.concentrate: tun0<br \/>\nlcp.mru: 1400<br \/>\nauth.method: mschapv2 chap<br \/>\npptpd.enabled: true<br \/>\npptpd.ip4_allow: 0.0.0.0\/0<br \/>\nl2tpd.enabled: true<br \/>\nl2tpd.ip4_allow: 0.0.0.0\/0<br \/>\nl2tpd.require_ipsec: false<\/code><\/p>\n<p>Adapter ce fichier \u00e0 votre convenance, en particulier les param\u00e8tres :<\/p>\n<ul>\n<li><code>interface_list<\/code> : l&rsquo;interface tun(4) \u00e0 utiliser, \u00ab\u00a0tun0\u00a0\u00bb si aucun autre tunnel n&rsquo;existe.<\/li>\n<li><code>interface.tunX.ip4addr<\/code> : l&rsquo;adresse de l&rsquo;interface tun(4).<\/li>\n<li><code>pool.dyna_pool<\/code> : la plage dynamique des IP attribu\u00e9es \u00e0 vos utilisateurs.<\/li>\n<li><code>pool.pool<\/code> : la plage utilis\u00e9e pour les utilisateurs disposant d&rsquo;adresses statiques (pr\u00e9cis\u00e9 plus bas).<\/li>\n<li><code>realm.local.concentrate<\/code> : doit correspondre \u00e0 l&rsquo;interface tun(4) configur\u00e9e pr\u00e9c\u00e9demment.<\/li>\n<\/ul>\n<p>Cr\u00e9er le fichier npppd-users.csv (issu du HOWTO \u00e9voqu\u00e9 pr\u00e9c\u00e9demment) :<br \/>\n<code>Username,Passwd,IP-Address,IP-Netmask,Descr,Calling-Id<br \/>\nuser1,user1's secret,10.0.0.129,,memo for user1<\/code><\/p>\n<p>Ce fichier contiendra les noms d&rsquo;utilisateurs, leur mot de passe, l&rsquo;adresse IP statique qui leur est affect\u00e9e, ainsi que des informations optionnelles.<\/p>\n<p>Une fois ces fichiers cr\u00e9\u00e9s et ajust\u00e9s \u00e0 vos besoins, placez-les \u00e0 l&rsquo;endroit appropri\u00e9 :<br \/>\n<code>$ sudo mkdir -m 0755 \/etc\/npppd<br \/>\n$ sudo cp npppd.conf \/etc\/npppd\/<br \/>\n$ sudo cp npppd-users.csv \/etc\/npppd\/<\/code><\/p>\n<p>Ensuite, nous pouvons d\u00e9marrer npppd(8) :<br \/>\n<code>$ sudo npppd -D<\/code><\/p>\n<p style=\"padding-left: 30px;\"><strong>5. Confiruration IPsec<\/strong><\/p>\n<p>Sous OpenBSD, la configuration IPsec est extr\u00eamement simple et se trouve centralis\u00e9e dans le fichier \/etc\/ipsec.conf. \u00c9diter ce fichier, pour y ajouter la configuration IPsec :<br \/>\n<code>ike dynamic esp transport \\<br \/>\nproto udp from AA.AA.AA.AA (192.168.0.1) to any port 1701 \\<br \/>\naggressive auth \"hmac-sha\" enc \"3des\" group modp1024 \\<br \/>\nquick auth \"hmac-sha\" enc \"aes\" \\<br \/>\nsrcid \"server@my.domain\" dstid \"client@my.domain\" \\<br \/>\npsk \"myandroidpsk\"<\/code><\/p>\n<p>Quelques pr\u00e9cisions :<\/p>\n<ul>\n<li><code>dynamic<\/code> : aide les configurations dans lequel le client a une IP qui change constemment.<\/li>\n<li><code>AA.AA.AA.AA<\/code> : adresse IP publique de la connexion internet de notre passerelle VPN.<\/li>\n<li><code>192.168.0.1<\/code> : adresse IP priv\u00e9e de notre passerelle VPN.<\/li>\n<li><code>aggressive<\/code> : ce mode est n\u00e9cessaire lors de l&rsquo;utilisation d&rsquo;ID sp\u00e9cifiques pour la connexion.<\/li>\n<li><code>srcid \"server@my.domain\"<\/code> : ID IPsec du serveur, utilis\u00e9 comme identit\u00e9 de la passerelle.<\/li>\n<li><code>dstid \"client@my.domain\"<\/code> : ID IPsec du client, \u00e0 configurer dans le client VPN du smartphone.<\/li>\n<\/ul>\n<p><em><strong>Note :<\/strong> ici, nous utilisons des ID sp\u00e9cifiques (srcid et dstid) car par d\u00e9faut, les ID utilis\u00e9s sont les IP des machines : c&rsquo;est-\u00e0-dire les IP priv\u00e9es du smartphone et de la passerelle sur leur r\u00e9seau respectif. Or, nos deux connexions \u00e0 internet (celle du smartphone et celle de la passerelle VPN) sont derri\u00e8re du NAT. Donc les ID utilis\u00e9s par d\u00e9faut ne sont pas reconnus par la machine distante, puisque la machine locale ne voit que l&rsquo;IP publique de la machine distante.<\/em><\/p>\n<p>Une fois la configuration IPsec effectu\u00e9e, il faut :<\/p>\n<ul>\n<li>D\u00e9marrer l&rsquo;interface virtuelle enc(4), sur laquelle le trafic IPsec d\u00e9chiffr\u00e9 va circuler,<\/li>\n<li>D\u00e9marrer le &lsquo;daemon&rsquo; isakmpd(8) qui a pour but d&rsquo;assurer la gestion des cl\u00e9s IPsec avec le protocole IKEv1,<\/li>\n<li>Charger la configuration IPsec.<\/li>\n<\/ul>\n<p>Cela se traduit par les commandes :<br \/>\n<code>$ sudo ifconfig enc0 up<br \/>\n$ sudo isakmpd -Kv<br \/>\n$ sudo ipsecctl -f \/etc\/ipsec.conf<\/code><\/p>\n<p style=\"padding-left: 30px;\"><strong>6. Le filtrage avec PF<\/strong><\/p>\n<p>Je ne vais pas d\u00e9tailler l&rsquo;utilisation de Packet Filter (PF), le filtre de paquets d&rsquo;OpenBSD ; pour cel\u00e0 vous pouvez vous r\u00e9f\u00e9rer \u00e0 l&rsquo;excellente <a title=\"FAQ de PF\" href=\"http:\/\/www.openbsd.org\/faq\/pf\/fr\/\" target=\"_blank\">FAQ de PF<\/a>.<\/p>\n<p>Je vais par contre d\u00e9tailler les points importants concernant notre utilisation dans le cadre de cette passerelle VPN L2TP\/IPsec.<\/p>\n<p>PF est maintenant activ\u00e9 par d\u00e9faut dans OpenBSD, il est seulement n\u00e9cessaire d&rsquo;\u00e9diter sa configuration qui se fait dans le fichier \/etc\/pf.conf.<\/p>\n<p>Tout d&rsquo;abord, commen\u00e7ons par \u00e9tablir quelques variables utiles :<br \/>\n<code># Interface r\u00e9seau physique<br \/>\n$ext_if = vr3<br \/>\n# Interface r\u00e9seau virtuelle tun(4)<br \/>\n$tun_if = tun0<br \/>\n# Plage des clients VPN<br \/>\n$vpn_net = \"10.0.0.0\/24\"<br \/>\n# Ports pour IPsec en UDP<br \/>\n$serv_udp = \"{ isakmp, ipsec-nat-t }\"<br \/>\n# Ports pour IPsec en TCP ainsi que SSH pour le management<br \/>\n$serv_tcp = \"{ ssh, ipsec-nat-t }\"<\/code><\/p>\n<p>Notre r\u00e8gle par d\u00e9faut bloque tout en entr\u00e9e, mais pas en sortie ; par d\u00e9faut avec PF, ce qui n&rsquo;est pas bloqu\u00e9 est autoris\u00e9 :<br \/>\n<code>block in all<\/code><\/p>\n<p>Ensuite, d\u00e9finissons une r\u00e8gle de NAT pour que les clients VPN qui arrivent sur l&rsquo;interface virtuelle, puissent sortir sur l&rsquo;interface physique, et donc les r\u00e9seaux locaux de notre passerelle (et internet).<br \/>\n<code>match out on $ext_if inet from $vpn_net nat-to $ext_if<\/code><\/p>\n<p>Passons maintenant au filtrage \u00e0 proprement dit. Commen\u00e7ons par autoriser le trafic IPsec sur notre interface physique :<\/p>\n<ul>\n<li>Le protocole ESP (le trafic L2TP chiffr\u00e9 avec IPsec),<\/li>\n<li>Les protocoles IKEv1 et NAT-Traversal pour les \u00e9changes de cl\u00e9s<\/li>\n<\/ul>\n<p>Cela se traduit par les r\u00e8gles :<br \/>\n<code>pass in on $ext_if proto esp to $ext_if<br \/>\npass in on $ext_if proto udp to $ext_if port $serv_udp<br \/>\npass in on $ext_if proto tcp to $ext_if port $serv_tcp<\/code><\/p>\n<p>Puis, autorisons le trafic d\u00e9chiffr\u00e9, c&rsquo;est \u00e0 dire le trafic L2TP venant du smartphone vers notre passerelle, \u00e0 passer sur l&rsquo;interface enc(4) :<br \/>\n<code>pass in on enc0 proto udp to $ext_if port l2tp keep state (if-bound)<\/code><\/p>\n<p><em><strong>Note :<\/strong> le mot cl\u00e9 &lsquo;keep state (if-bound)&rsquo; est n\u00e9cessaire sur une interface enc(4). Il permet de lier l&rsquo;\u00e9tat cr\u00e9\u00e9 dans PF \u00e0 l&rsquo;interface enc0 (par d\u00e9faut, les \u00e9tats sont flottants), \u00e9vitant ainsi d&rsquo;avoir des flux non chiffr\u00e9s sur d&rsquo;autres interfaces.<\/em><\/p>\n<p>Pour finir, autorisons le trafic utile de notre VPN : le trafic encapsul\u00e9 dans le VPN, \u00e0 destination de notre r\u00e9seau local, d&rsquo;internet, etc. \u00e0 entrer sur l&rsquo;interface virtuelle tun0. Celui-ci sera ensuite automatiquement rout\u00e9 vers la bonne interface :<br \/>\n<code>pass in on $tun_if inet proto { icmp, tcp, udp } from $vpn_net<\/code><\/p>\n<p style=\"padding-left: 30px;\"><strong>7. Rendre permanente la configuration<\/strong><\/p>\n<p>Pour configurer l&rsquo;interface enc0 \u00e0 chaque d\u00e9marrage :<br \/>\n<code>$ sudo sh -c \"echo up &gt; \/etc\/hostname.enc0\"<br \/>\n$ sudo chmod 640 \/etc\/hostname.enc0<\/code><\/p>\n<p>Pour d\u00e9marrer isakmpd(8) au d\u00e9marrage, ajouter ces lignes au fichier \/etc\/rc.conf.local :<br \/>\n<code>ipsec=YES<br \/>\nisakmpd_flags=\"-K\"<\/code><\/p>\n<p>Pour d\u00e9marrer npppd(8) automatiquement, ajouter ces lignes au fichier \/etc\/rc.local :<br \/>\n<code>echo -n 'starting site daemons:'<br \/>\nif [ -x \/usr\/sbin\/npppd ] ; then<br \/>\n\/usr\/sbin\/npppd -D<br \/>\necho -n ' npppd'<br \/>\nfi<br \/>\necho '.'<\/code><\/p>\n<p style=\"padding-left: 30px;\"><strong>8. Configuration du client<\/strong><\/p>\n<p>La configuration d&rsquo;un VPN sur un t\u00e9l\u00e9phone Android est tr\u00e8s simple. Pour cela, allons dans les param\u00e8tres, puis les param\u00e8tres sans fil, puis dans la section VPN :<\/p>\n<p><a onclick=\"ps_imagemanager_popup(this.href,'01_parametres.png','720','1280');return false\" onfocus=\"this.blur()\" href=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/01_parametres.png\" rel=\"lightbox[133]\"><img loading=\"lazy\" decoding=\"async\" title=\"01_parametres.png\" src=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/.thumbs\/.01_parametres.png\" alt=\"01_parametres.png\" width=\"96\" height=\"171\" border=\"0\" hspace=\"10\" \/><\/a><a onclick=\"ps_imagemanager_popup(this.href,'02_sans_fil.png','720','1280');return false\" onfocus=\"this.blur()\" href=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/02_sans_fil.png\" rel=\"lightbox[133]\"><img loading=\"lazy\" decoding=\"async\" title=\"02_sans_fil.png\" src=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/.thumbs\/.02_sans_fil.png\" alt=\"02_sans_fil.png\" width=\"96\" height=\"171\" border=\"0\" hspace=\"10\" \/><\/a><a onclick=\"ps_imagemanager_popup(this.href,'03_ajout_VPN.png','720','1280');return false\" onfocus=\"this.blur()\" href=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/03_ajout_VPN.png\" rel=\"lightbox[133]\"><img loading=\"lazy\" decoding=\"async\" title=\"03_ajout_VPN.png\" src=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/.thumbs\/.03_ajout_VPN.png\" alt=\"03_ajout_VPN.png\" width=\"96\" height=\"171\" border=\"0\" hspace=\"10\" \/><\/a><\/p>\n<p>Ajoutons maintenant un nouveau VPN en s\u00e9lectionnant le type \u00ab\u00a0L2TP\/IPsec PSK\u00a0\u00bb, puis remplissons les donn\u00e9es que nous avons indiqu\u00e9es pr\u00e9c\u00e9demment :<\/p>\n<p><a onclick=\"ps_imagemanager_popup(this.href,'04_l2tpipsec_psk.png','720','1280');return false\" onfocus=\"this.blur()\" href=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/04_l2tpipsec_psk.png\" rel=\"lightbox[133]\"><img loading=\"lazy\" decoding=\"async\" title=\"04_l2tpipsec_psk.png\" src=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/.thumbs\/.04_l2tpipsec_psk.png\" alt=\"04_l2tpipsec_psk.png\" width=\"96\" height=\"171\" border=\"0\" hspace=\"10\" \/><\/a><\/p>\n<ul>\n<li>Nom : peut \u00eatre ce que vous souhaitez,<\/li>\n<li>Type : doit \u00eatre \u00ab\u00a0L2TP\/IPsec PSK\u00a0\u00bb,<\/li>\n<li>Adresse du serveur : l&rsquo;adresse IP publique de votre connexion internet ou alors votre nom de domaine si vous en poss\u00e9dez un,<\/li>\n<li>Secret L2TP : laissez vide,<\/li>\n<li>Identifiant IPsec : doit correspondre \u00e0 ce que vous avez indiqu\u00e9 pour le param\u00e8tre \u00ab\u00a0dstid\u00a0\u00bb dans le fichier \/etc\/ipsec.conf de la passerelle,<\/li>\n<li>Cl\u00e9 pr\u00e9-partag\u00e9e IPsec : doit correspondre \u00e0 ce que vous avez indiqu\u00e9 pour le param\u00e8tre \u00ab\u00a0psk\u00a0\u00bb dans le fichier \/etc\/ipsec.conf de la passerelle.<\/li>\n<\/ul>\n<p>Une fois les param\u00e8tres renseign\u00e9s, d\u00e9marrons la connexion, en fournissant le nom d&rsquo;utilisateur et le mot de passe indiqu\u00e9s dans le fichier npppd-users.conf :<\/p>\n<p><a onclick=\"ps_imagemanager_popup(this.href,'05_connexion.png','720','1280');return false\" onfocus=\"this.blur()\" href=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/05_connexion.png\" rel=\"lightbox[133]\"><img loading=\"lazy\" decoding=\"async\" title=\"05_connexion.png\" src=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/.thumbs\/.05_connexion.png\" alt=\"05_connexion.png\" width=\"96\" height=\"171\" border=\"0\" \/><\/a><\/p>\n<p>La connexion VPN est d\u00e9marr\u00e9e une fois que la petite cl\u00e9 est pr\u00e9sente dans la barre de notification en haut \u00e0 gauche :<\/p>\n<p><a onclick=\"ps_imagemanager_popup(this.href,'06_connecte.png','720','1280');return false\" onfocus=\"this.blur()\" href=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/06_connecte.png\" rel=\"lightbox[133]\"><img loading=\"lazy\" decoding=\"async\" title=\"06_connecte.png\" src=\"\/wp-content\/uploads\/VPN_L2TP_IPsec\/.thumbs\/.06_connecte.png\" alt=\"06_connecte.png\" width=\"96\" height=\"171\" border=\"0\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;\"><strong>9. Gestion de la passerelle<\/strong><\/p>\n<p>Pour avoir une vision de ce qu&rsquo;il se passe en temps r\u00e9el sur notre passerelle VPN, deux commandes sont tr\u00e8s utiles.<\/p>\n<p>Tout d&rsquo;abord, pour consulter les sessions IPsec en cours et en particulier la Security Association Database (SAD) :<br \/>\n<code>$ sudo ipsecctl -sa<br \/>\nFLOWS:<br \/>\nflow esp in proto udp from BB.BB.BB.BB to 192.168.0.1 peer BB.BB.BB.BB srcid server@my.domain dstid client@my.domain type use<br \/>\nflow esp out proto udp from 192.168.0.1 to BB.BB.BB.BB peer BB.BB.BB.BB srcid server@my.domain dstid client@my.domain type require<\/code><\/p>\n<p><code>SAD:<br \/>\nesp transport from 192.168.0.1 to BB.BB.BB.BB spi 0x026f944d auth hmac-sha1 enc aes-256<br \/>\nesp transport from BB.BB.BB.BB to 192.168.0.1 spi 0x20510079 auth hmac-sha1 enc aes-256<\/code><\/p>\n<p>Et ensuite pour consulter les sessions L2TP d\u00e9marr\u00e9es dans npppd(8) ainsi que des statistiques utiles :<br \/>\n<code>$ sudo npppctl session all<br \/>\nPpp Id = 14<br \/>\nPpp Id : 14<br \/>\nUsername : user1<br \/>\nRealm Name : local<br \/>\nConcentrated Interface : tun0<br \/>\nAssigned IPv4 Address : 10.0.0.129<br \/>\nTunnel Protocol : L2TP<br \/>\nTunnel From : BB-BB-BB-BB.romanichel.net:43682<br \/>\nStart Time : 2012\/02\/15 16:48:57<br \/>\nElapsed Time : 114 sec (1 minute)<br \/>\nInput Bytes : 3214 (3.1 KB)<br \/>\nInput Packets : 45<br \/>\nInput Errors : 0 (0.0%)<br \/>\nOutput Bytes : 6861 (6.7 KB)<br \/>\nOutput Packets : 25<br \/>\nOutput Errors : 0 (0.0%)<\/code><\/p>\n<p><strong>Note :<\/strong> Depuis OpenBSD 5.2, un certain nombre de corrections ont \u00e9t\u00e9 apport\u00e9es. Voici une configuration \/etc\/ipsec.conf qui devrait mieux fonctionner (test\u00e9 avec Android 4.1 Jelly Bean) :<br \/>\n<code>ike passive esp transport \\<br \/>\nproto udp from AA.AA.AA.AA (192.168.0.1) to any port 1701 \\<br \/>\naggressive auth \"hmac-sha\" enc \"aes\" group modp1024 \\<br \/>\nquick auth \"hmac-sha\" enc \"aes\" \\<br \/>\nsrcid \"server@my.domain\" dstid \"client@my.domain\" \\<br \/>\npsk \"myandroidpsk\"<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, je vais pr\u00e9senter la marche \u00e0 suivre pour configurer une passerelle VPN utilisant les protocoles L2TP\/IPsec sur un syst\u00e8me OpenBSD (en version 5.1). Cette passerelle vous permettra de vous y connecter \u00e0 l&rsquo;aide de votre smartphone Android (test\u00e9 avec Android 4.0 ICS) ou iPhone, puisque ces terminaux supportent maintenant nativement ces types [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,3],"tags":[118,119,120,115,114,121,6,7,116,117],"class_list":["post-133","post","type-post","status-publish","format-standard","hentry","category-informations-pour-les-geeks","category-securite","tag-android","tag-ios","tag-iphone","tag-ipsec","tag-l2tp","tag-npppd","tag-openbsd","tag-pf","tag-psk","tag-vpn"],"_links":{"self":[{"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/posts\/133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/comments?post=133"}],"version-history":[{"count":0,"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/posts\/133\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/media?parent=133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/categories?post=133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.brimbelle.org\/index.php\/wp-json\/wp\/v2\/tags?post=133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}