Comparatif VPN » Historique » Version 13
« Précédent -
Version 13/15
(diff) -
Suivant » -
Version actuelle
Samuel Thibault, 30/09/2015 11:17
- Contenu
- VPN
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
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 :
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)
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
FoU (Foo over UDP)¶
Principe indentique à GRE/IPIP/SIT, sauf que c'est encapsulé dans UDP, ce qui évite la plupart des problèmes de firewall.
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
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
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
Tinc¶
Plus facile a configurer que OpenVPN, fait du mesh automatiquement quand c'est possible.
socat¶
OpenSSH¶
Autres¶
TODO