Projet

Général

Profil

Comparatif VPN » Historique » Version 14

Version 13 (Samuel Thibault, 30/09/2015 11:17) → Version 14/15 (Samuel Thibault, 30/09/2015 11:18)

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

http://en.wikipedia.org/wiki/Generic_Routing_Encapsulation

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. IPIP/SIT

http://en.wikipedia.org/wiki/IP_in_IP
http://www.inetdoc.net/guides/lartc/lartc.tunnel.ip-ip.html
http://beeznest.wordpress.com/2008/07/14/ip-in-ip-or-gre-tunnel-using-iproute/

Même avantages/inconvénients que GRE

h2. FoU (Foo over UDP)

https://lwn.net/Articles/614348/

Principe indentique à GRE/IPIP/SIT (en fait c'est carrément une surcouche), GRE/IPIP/SIT, sauf que c'est encapsulé dans UDP, ce qui évite la plupart des problèmes de firewall.

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.

Tunnel broker pour L2TPv3 : https://dev.wlan-si.net/wiki/Tunneldigger

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

* 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