Immae's blog

egrep -ri TODO /etc

Installer un VPN en IPv6 avec un serveur OVH

Langues : anglais

Introduction

Ce tutoriel combine une solution à deux problèmes différents mais assez liés :

Dans le cas précis que je vais traiter, j'ai un serveur personnel (chez OVH), possédant une unique adresse IPv4 (198.51.100.24), et un /64 en IPv6 (2001:db8:200:13::/64), toutes les deux fixes.

À côté de ça, j'ai plusieurs PCs avec des configurations diverses et des accès à Internet plus ou moins restreints, dans des réseaux différents et non nécessairement connectés entre eux (voire pas dans le même pays) et que j'aimerais relier par un réseau virtuel.

Pour créer le réseau virtuel, deux possibilités s'offrent à nous :

Création d'un sous-réseau virtuel

Pour créer ce réseau, j'utilise tinc. C'est un programme assez simple, et assez intuitif une fois qu'on a compris en quoi consiste un VPN.

Dans ce cas particulier, la façon d'interconnecter nos machines est assez simple : toutes sont capables de se connecter au serveur (qui a une IPv4 publique). Il suffit donc de demander à chacune de s'y connecter. tinc s'occupe alors de l'interconnexion entre elles !

Partie commune

Cette partie est à faire pour chacun des hôtes du VPN, que ce soit le client ou le serveur :

Partie serveur

La partie serveur est la partie la plus complexe. Plus en détails :

Partie client

J'utilise ici le terme NomDuServeur pour désigner le nom du serveur tel qu'on l'a défini à la ligne Name dans le fichier tinc.conf pour le serveur.

Connexion Client-Serveur

J'utilise ici NomDuClient pour désigner le nom choisi par un client.

Fin, détails de configuration

Plus qu'à démarrer les différents services tinc sur les machines, et tout le monde sera interconnecté et pourra accéder au net en IPv6 ! Pour résumer, les répertoires /etc/tinc/NAME/ devraient ressembler à ça :

# Serveur$ ls -1R /etc/tinc/NAME
/etc/tinc/NAME:
hosts
rsa_key.priv
tinc-down
tinc-up
tinc.conf

/etc/tinc/NAME/hosts:
Serveur
Client1
Client1-up
Client1-down
Client2
Client2-up
Client2-down

et

# Client1$ ls -1R /etc/tinc/NAME
/etc/tinc/NAME:
hosts
rsa_key.priv
tinc-down
tinc-up
tinc.conf

/etc/tinc/NAME/hosts:
Serveur
Client1


Remarque importante

Par défaut, les distributions récentes de Linux donnent priorité à l'IPv6 pour les connexions Internet. Cela signifie concrètement que toutes les connexions vont passer en priorité par votre serveur dès lors que l'IPv6 est disponible pour le service demandé. Pour éviter cela, on peut éditer le fichier /etc/gai.conf, dans lequel une section explique justement comment faire (i.e. donner priorité à l'IPv4). Notez que cette configuration se fait au choix sur chaque client indépendamment (voir ci-dessous).