Projet

Général

Profil

Comparatif VPN » Historique » Version 8

Version 7 (Baptiste Jonglez, 31/05/2014 04:41) → Version 8/15 (Baptiste Jonglez, 31/05/2014 07:31)

{{>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/



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

h2. Autres

* http://www.dest-unreach.org/socat/doc/socat-tun.html
* http://www.tinc-vpn.org/