Comparatif VPN » Historique » Version 10
Version 9 (Baptiste Jonglez, 31/05/2014 08:23) → Version 10/15 (Laurent GUERBY, 31/05/2014 09:02)
{{>toc}}
h1. VPN
Comparaison de différentes solutions de VPN, selon plusieurs critères (facilité de mise en place, performance, sécurité, etc). L'usage considéré est celui de transport d'IP publiques (collecte virtuelle), voir [[Partage ADSL OpenVPN]].
Pour des benchmarks détaillés sur des petits routeurs OpenWRT, voir [[Benchmark VPN]].
Overview OpenWRT : http://wiki.openwrt.org/doc/howto/vpn.overview
h2. OpenVPN
Avantages :
* simple à mettre en place, éprouvé, documenté
* standard de fait, existe pour tous les OS décents
* chiffrement (optionnel)
* authentification forte (certificat SSL, secret partagé, ...)
* transport UDP ou TCP (passe bien le NAT, voire les firewalls restrictifs)
* fragmentation intégrée (mais peut aussi poser problème niveau performances)
Inconvénients :
* faible performance sur des petits routeurs (même sans chiffrement) → raison : tunnel userspace
* maintenabilité : obligé de configurer un nouveau tunnel point-à-point pour chaque connexion VPN (alternative : mode serveur multi-client, mais peu pratique pour faire du routage un peu complexe)
Liens :
* [[OpenVPN]]
* [[Partage_ADSL_OpenVPN]]
h2. GRE
Avantages :
* extrêmement simple à mettre en place, disponible absolument partout
* performance : implémentation kernelspace, encapsulation très simple
Inconvénients :
* pas d'authentification
* pas de chiffrement
* maintenabilité : configurer un nouveau tunnel pour chaque connexion VPN
* ni TCP, ni UDP : certains firewalls n'aiment pas (e.g. Livebox)
* pas de keepalive intégré : pose problème pour la connectivité bidirectionnelle à travers un NAT / firewall stateful
* IPv6 pas super bien intégré (notamment, pas mal de bugs sur le link-local)
h2. PPP/L2TPv2
On parle ici de L2TPv2 (RFC 2661), qui encapsule obligatoirement du PPP et qui est obligatoirement transporté sur UDP.
Avantages :
* authentification (login / mot de passe)
* performance : datapath en kernelspace
* maintenabilité : un daemon userspace s'occupe automatiquement de créer des interfaces pppX quand les clients se connectent, et d'attribuer des IP aux clients
* transport sur UDP, passe bien les firewalls
Inconvénients :
* pas de chiffrement
* authentification faible (MSCHAP et compagnie)
* difficile à mettre en place (interaction userspace/kernelspace, outils antiques comme pppd)
* overhead (20 octets IP + 8 octets UDP + 8 octets L2TP + 4 octets PPP = 40 octets)
Liens :
* https://www.kernel.org/doc/Documentation/networking/l2tp.txt
* https://www.xelerance.com/services/software/xl2tpd/
* http://www.frameip.com/l2tp-pppoe-ppp-ethernet/ : très bon article sur PPP, L2TP, etc
h2. PPP/L2TPv2/IPsec
Même chose, mais en utilisant IPsec comme transport. Ce qui veut dire encore plus difficile à mettre en place, et des performances moindres.
Liens :
* RFC 3193
h2. L2TPv3
Il existe également L2TPv3 (RFC 3931) qui est censé permettre plus de choses : transport d'autres protocols que PPP (IP, Ethernet, etc), meilleure sécurité, possibilité de tunnels statiques, encapsulation directe dans IP, etc.
Linux supporte L2TPv3 depuis quelques années (2.6.35), et OpenWRT supporte les tunnels statiques L2TPv3 dans uci.
Liens :
* https://www.kernel.org/doc/Documentation/networking/l2tp.txt
* http://wiki.openwrt.org/doc/uci/network#protocol.l2tp.l2tp.pseudowire.tunnel
* http://wiki.openwrt.org/doc/howto/pseudowire#l2tpv3.with.openwrt
* http://en.wikipedia.org/wiki/L2TPv3
* http://www.openl2tp.org/pipermail/openl2tp-users/2010-April/000836.html
h2. Tinc
* http://www.tinc-vpn.org/
Plus facile a configurer que OpenVPN, fait du mesh automatiquement quand c'est possible.
h2. socat Autres
* http://www.dest-unreach.org/socat/doc/socat-tun.html
h2. OpenSSH
http://www.debian-administration.org/article/539/Setting_up_a_Layer_3_tunneling_VPN_with_using_OpenSSH
h2. Autres
TODO
* http://www.tinc-vpn.org/
h1. VPN
Comparaison de différentes solutions de VPN, selon plusieurs critères (facilité de mise en place, performance, sécurité, etc). L'usage considéré est celui de transport d'IP publiques (collecte virtuelle), voir [[Partage ADSL OpenVPN]].
Pour des benchmarks détaillés sur des petits routeurs OpenWRT, voir [[Benchmark VPN]].
Overview OpenWRT : http://wiki.openwrt.org/doc/howto/vpn.overview
h2. OpenVPN
Avantages :
* simple à mettre en place, éprouvé, documenté
* standard de fait, existe pour tous les OS décents
* chiffrement (optionnel)
* authentification forte (certificat SSL, secret partagé, ...)
* transport UDP ou TCP (passe bien le NAT, voire les firewalls restrictifs)
* fragmentation intégrée (mais peut aussi poser problème niveau performances)
Inconvénients :
* faible performance sur des petits routeurs (même sans chiffrement) → raison : tunnel userspace
* maintenabilité : obligé de configurer un nouveau tunnel point-à-point pour chaque connexion VPN (alternative : mode serveur multi-client, mais peu pratique pour faire du routage un peu complexe)
Liens :
* [[OpenVPN]]
* [[Partage_ADSL_OpenVPN]]
h2. GRE
Avantages :
* extrêmement simple à mettre en place, disponible absolument partout
* performance : implémentation kernelspace, encapsulation très simple
Inconvénients :
* pas d'authentification
* pas de chiffrement
* maintenabilité : configurer un nouveau tunnel pour chaque connexion VPN
* ni TCP, ni UDP : certains firewalls n'aiment pas (e.g. Livebox)
* pas de keepalive intégré : pose problème pour la connectivité bidirectionnelle à travers un NAT / firewall stateful
* IPv6 pas super bien intégré (notamment, pas mal de bugs sur le link-local)
h2. PPP/L2TPv2
On parle ici de L2TPv2 (RFC 2661), qui encapsule obligatoirement du PPP et qui est obligatoirement transporté sur UDP.
Avantages :
* authentification (login / mot de passe)
* performance : datapath en kernelspace
* maintenabilité : un daemon userspace s'occupe automatiquement de créer des interfaces pppX quand les clients se connectent, et d'attribuer des IP aux clients
* transport sur UDP, passe bien les firewalls
Inconvénients :
* pas de chiffrement
* authentification faible (MSCHAP et compagnie)
* difficile à mettre en place (interaction userspace/kernelspace, outils antiques comme pppd)
* overhead (20 octets IP + 8 octets UDP + 8 octets L2TP + 4 octets PPP = 40 octets)
Liens :
* https://www.kernel.org/doc/Documentation/networking/l2tp.txt
* https://www.xelerance.com/services/software/xl2tpd/
* http://www.frameip.com/l2tp-pppoe-ppp-ethernet/ : très bon article sur PPP, L2TP, etc
h2. PPP/L2TPv2/IPsec
Même chose, mais en utilisant IPsec comme transport. Ce qui veut dire encore plus difficile à mettre en place, et des performances moindres.
Liens :
* RFC 3193
h2. L2TPv3
Il existe également L2TPv3 (RFC 3931) qui est censé permettre plus de choses : transport d'autres protocols que PPP (IP, Ethernet, etc), meilleure sécurité, possibilité de tunnels statiques, encapsulation directe dans IP, etc.
Linux supporte L2TPv3 depuis quelques années (2.6.35), et OpenWRT supporte les tunnels statiques L2TPv3 dans uci.
Liens :
* https://www.kernel.org/doc/Documentation/networking/l2tp.txt
* http://wiki.openwrt.org/doc/uci/network#protocol.l2tp.l2tp.pseudowire.tunnel
* http://wiki.openwrt.org/doc/howto/pseudowire#l2tpv3.with.openwrt
* http://en.wikipedia.org/wiki/L2TPv3
* http://www.openl2tp.org/pipermail/openl2tp-users/2010-April/000836.html
h2. Tinc
* http://www.tinc-vpn.org/
Plus facile a configurer que OpenVPN, fait du mesh automatiquement quand c'est possible.
h2. socat Autres
* http://www.dest-unreach.org/socat/doc/socat-tun.html
h2. OpenSSH
http://www.debian-administration.org/article/539/Setting_up_a_Layer_3_tunneling_VPN_with_using_OpenSSH
h2. Autres
TODO
* http://www.tinc-vpn.org/