[ Accueil ] [ Avant propos ] [ Les clés du chiffrement ] [ Méthodes ] [ OpenVPN simple ] [ OpenSSL ] [ Tunnel sécurisé ] [ Applications ]
A partir d'une configuration très classique comme celle-ci, où deux hôtes sont connectés à l'internet :
Il est possible de réaliser pas mal de choses...
C'est le cas le plus simple, que nous avons vu dans la démonstration, et qui pourra probablement intéresser pas mal de monde, surtout si je vous dis qu'OpenVPN existe également pour Windows.
Notez que pour réaliser un tunnel entre deux systèmes Windows, il existe une solution intégrée, à base de PPtP, protocole Microsoft, qui réalise elle aussi un tunnel point à point. Mais avec OpenVPN, vous pourrez réaliser un tunnel entre plate-formes différentes.
Nous avons vu qu'OpenVPN crée un tunnel sur UDP, en utilisant un seul port. Il devient alors très simple, si les pare-feux savent faire du "port forwarding", de prolonger le tunnel dans les réseaux privés, jusqu'aux hôtes que l'on souhaite relier :
Dans cette illustration, et en gardant les conventions de la manipulation précédente, il suffira de modifier quelques détails :
le serveur OpenVPN est toujours sur AARON,
le client OpenVPN est toujours sur CYCLOPE
les deux hôtes utilisent toujours les adresses IP publiques de leurs passerelles respectives,
la passerelle du réseau A devra rediriger le trafic entrant port 8147 sur le port 8147 d'AARON,
la passerelle du réseau B devra rediriger le trafic entrant port 8147 sur le port 8147 de CYCLOPE.
Si les deux passerelles sont de type Linux, avec un kernel 2.4 ou supérieur, une règle de type :
iptables -t NAT -A PREROUTING -i ppp0 -p udp --dport 8147 -j DNAT --to-destination xx.xx.xx.xx
ppp0 peut-être autre chose, suivant le type de connexion à l'internet, xx.xx.xx.xx étant l'adresse IP de l'extrémité du tunnel dans le réseau considéré.
Si AARON et CYCLOPE sont les routeurs/pare-feux des réseaux A et B, à partir du moment où l'on a établi un tunnel entre ces deux machines, il n'y a aucune raison de ne pas pouvoir établir une route entre les réseaux A et B à travers ce tunnel. Alors, tous les hôtes de A pourront communiquer avec tous les hôtes de B et réciproquement, nous ramenant à une configuration vue avec le tunnel GRE, mais avec plus de sécurité (et moins de bande passante).
Imaginons :
que le réseau A soit 192.168.1.0, avec le masque 255.255.255.0,
que le réseau B soit 192.168.0.0, avec le masque 255.255.255.0.
Il suffira alors d'écrire quelques routes bien senties sur les deux passerelles:
sur AARON :
route add -net 192.168.0.0 gw 192.168.25.2 netmask 255.255.255.0
sur CYCLOPE :
route add -net 192.168.1.0 gw 192.168.25.1 netmask 255.255.255.0
Bien entendu, il ne faudra pas oublier le pare-feu, en lui permettant le "forward" entre le tunnel et le réseau privé sur chacune des passerelles, et nos deux réseaux A et B seront interconnectés.
OpenVPN permet d'ailleurs d'effectuer automatiquement l'ajout de la route dans ses paramètres de configuration, par l'option "--route".
Par exemple, pour le démarrage du serveur sur AARON :
openvpn --port 8147 \
> --dev tun1 \
> --ifconfig 192.168.25.1 192.168.25.2 \
> --route 192.168.0.0 255.255.255.0 192.168.25.2 \
> --tls-server \
> --dh dh1024.pem \
> --ca aaron-ca.crt
> --cert aaron.crt \
> --key aaron.key
> --reneg-sec 21600
> --comp-lzo
> --verb 5
Et vous retrouverez automatiquement la bonne route dans la table de routage :
aaron:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.25.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
...
192.168.0.0 192.168.25.2 255.255.255.0 UG 0 0 0 tun1
...
0.0.0.0 193.253.160.3 0.0.0.0 UG 0 0 0 ppp0
aaron:~#
je vous laisse trouver l'équivalent sur CYCLOPE.