Page suivante - Page précédente - Table des matières

2. Théorie

2.1 Qu'est-ce qu'un VPN?

VPN est l'acronyme de Virtual Private Network, ou réseau privé virtuel. Un VPN utilise l'Internet comme mécanisme de transport, en maintenant la sécurité des données sur le VPN.

Mais c'est quoi, en vrai, un VPN?

Et bien il y a plusieurs réponses à cette question. Cela dépends vraiment de l'apparence du réseau. En général, on dispose d'un réseau principal unique, avec des noeuds distants qui utilisent le VPN pour gagner un accès complet au réseau central. Les noeuds distants sont généralement des bureaux éloignés, ou des employés travaillant à partir de chez eux. Il est aussi possible de relier deux réseaux plus petits (ou même plus grands!) pour former un seul réseau encore plus grand.

Alors, ça marche comment?

Pour simplifier, pour réaliser un VPN, vous créez un tunnel sécurisé entre deux réseaux et l'utilisez pour router les datagrammes IP. Au cas ou vous seriez déjà perdu, vous devriez lire Le Linux Networking Overview HOWTO pour vous informer au sujet des réseaux sous Linux.

Prière de ne pas m'en vouloir, mes schémas ASCII mériterait un peu plus de travail.

\          \
---------       /          /      ---------
Réseau ______| Routeur |______\ Internet \_____| Routeur |______ Réseau
Distant      | Client  |      /          /     | Serveur |       Privé
---------       \          \      ---------
/          /
Routeur Client
----------------------------------------------------
|   /->    10.0.0.0/255.0.0.0   \                    |
Réseau      |  |-->  172.16.0.0/255.240.0.0  |--> Tunnel>---\   |
Distant>---|--|--> 192.168.0.0/255.255.0.0 /                 |--|----> Internet
192.168.12.0 |  |                                              |  |
|   \-----> 0.0.0.0/0.0.0.0 --> Masquarade IP>--/   |
----------------------------------------------------
Routeur Serveur
----------------------------------------------------
|                   /->    10.0.0.0/255.0.0.0    \   |
|   /--> Tunnel>--|-->  172.16.0.0/255.240.0.0   |--|----> Réseau
Internet>--|--|                \--> 192.168.0.0/255.255.0.0 /   |      Privé
|  |                                                 |     172.16.0.0/12
|   \-----> 0.0.0.0/0.0.0.0 -----> /dev/null         |    192.168.0.0/16
----------------------------------------------------

Le diagramme ci-dessus montre comment le réseau peut être mis en place. Si vous ne savez pas ce qu'est la masquarade IP, vous ne devriez probablement pas être ici. Allez lire Le Linux Networking Overview HOWTO et revenez une fois informé.

Le routeur client est une machine Linux tenant le rôle de passerelle/firewall pour le réseau distant. Comme vous pouvez le voir, le réseau distant utilise le réseau local 192.168.12.0. Pour plus de simplicité dans le diagramme, j'ai laissé les informations de routage sur les routeurs. L'idée de base est de router le trafic destiné aux réseaux privés (10.0.0.0, 172.16.0.0, et 192.168.0.0) via le tunnel. L'installation montrée ici est une manière de le faire. C'est à dire qu'alors que le réseau distant peut voir le réseau privé, le réseau privé ne peut pas nécessairement voir le réseau distant. Pour que ceci arrive, il faut spécifier que les routes sont bidirectionnelles.

Vous devriez aussi remarquer sur le schéma que tout le trafic sortant du routeur client apparaît comme en provenant, c'est à dire qu'il porte toujours la même adresse IP. Vous pouvez router les valeurs véritables de l'intérieur de votre réseau, mais cela induit une grande diversité de problèmes de sécurité.

2.2 SSH et PPP

Le système que je décris pour implémenter un VPN utilise SSH et PPP. Schématiquement, je me sers de ssh pour créer une connexion protégée par tunnel, puis utilise pppd pour y démarrer le trafic TCP/IP. C'est ainsi que le tunnel est mis en place.

Le véritable truc pour faire fonctionner ssh et pppd ensemble correctement est l'utilitaire écrit par Arpad Magosanyi qui permet la redirection de l'entrée et de la sortie standard vers un pseudo tty. Ceci permets à pppd de parler au travers de ssh comme s'il s'agissait d'une liaison série. Du côté du serveur, pppd est lancé comme interpreteur de commande utilisateur dans la session ssh, complétant le lien. Après cela, tout ce qu'il reste a faire est de réaliser le routage.

2.3 Systèmes VPN alternatifs

Il y a bien sur d'autres moyens de mettre en place un VPN, dont voici quelques exemples.

PPTP

PPTP est un protocole Microsoft pour les VPN. Il est supporté sous Linux, mais est connu pour avoir de nombreux problèmes de sécurité. Je ne décris pas ici la manière de l'utiliser, étant donné que ce thème est couvert par Linux VPN Masquerade HOWTO.

IPSec

IPSec est un ensemble de protocoles différents de SSH. Franchement, je n'en connais pas énormément à son sujet. De fait, si quelqu'un veut m'aider d'une description, je lui en serais très reconnaissant. Encore une fois, je ne décris pas comment l'utiliser étant donné que le Linux VPN Masquerade HOWTO couvre le sujet.

CIPE

CIPE est un système de chiffrement au niveau noyau probablement mieux adapté aux dispositifs d'entreprise. Vous pourrez en savoir plus sur la page de CIPE. J'envisage de m'y intéresser plus sérieusement, et aurais donc peut être plus d'informations à son sujet bientôt.


Page suivante - Page précédente - Table des matières