Vpn
Des informations générales sur les VPN et leur fonctionnement sont disponibles sur la page VPN du wikix. Dans ce wiki seront développés exclusivement l'installation et la configuration d'un serveur OpenVPN.
Motivations
Un certain nombre d'entre nous peut avoir besoin de contourner les restrictions du proxy de l'X pour jouer, télécharger ou même pire ! Des solutions payantes existent et fonctionnent bien (Frozenway par exemple) mais restent relativement chères. Il peut donc être intéressant de monter un serveur vpn privé dès 3 ou 4 utilisateurs ! Un exemple concret est celui de la section volley 2015 qui possède son vpn avec une dizaine d'utilisateurs.
Dimensionnement du serveur
La première étape est de choisir quel type de serveur louer, et chez quel hébergeur. Le rôle du vpn étant d'être le point de passage de (quasi) toutes les connections des utilisateurs, la qualité de la bande passante fournie est primordiale. La puissance du processeur du serveur est moins fondamentale. Il faut garder en tête que :
- la connection a l'X dépasse très rarement les 5 mo/s (en download) dans un casert, donc si l'on note n le nombre d'utilisateurs du serveur et m le minimum entre la vitesse en upload et la vitesse en download garanties par l'hébergeur, on doit avoir 5*n < m pour ne pas réduire la vitesse de la connection d'un utilisateur.
- Un serveur VPS peut permettre de diminuer les coûts mais fait perdre le contrôle sur la bande passante et la puissance disponible en fonction des autres usagers.
- Il ne sert a rien d'avoir une bande passante garantie de 1Gbps si votre serveur a un disque dur mécanique (120 mo/s grand maximum en lecture/écriture). Il faut donc privilégier le SSD !
- Il existe de très nombreuses offres de serveur dédiés de bonne qualité (pour ce que l'on cherche a mettre en place) et à moins de 10€ par mois.
Un excellent compromis est la Dedibox SC SSD de chez online.net qui offre:
- Une connection garantie à 1GBps (125 mo/s) minimum, donc 20 clients potentiels sans problème
- Un disque dur SSD de 120go
- Un prix raisonnable de 11€ par mois, soit environ 0,50€ par personne pour 20 clients !
En pratique un tel serveur loué chez online.net affiche une vitesse de connection allant jusqu'à 170 mo/s et un ping de 10ms.
Pré-configuration du serveur
Installez sur votre serveur la distribution de votre choix (de préférence Debian ou équivalent) et connectez vous en ssh.
- Installer les paquets nécessaires :
apt-get install openvpn easy-rsa libopenssl cp -a /usr/share/easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa source vars ./clean-all
- Créer les certificats de l'autorité de certification :
./build-ca
Vous devriez voir apparaitre ces lignes :
Generating a 2048 bit RSA private key .................+++ ............................................................................................................................................................+++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [CA]: Locality Name (eg, city) [SanFrancisco]: Organization Name (eg, company) [Fort-Funston]: Organizational Unit Name (eg, section) [MyOrganizationalUnit]: Common Name (eg, your name or your server's hostname) [Fort-Funston CA]: Name [EasyRSA]: Email Address [me@myhost.mydomain]:
Laissez les paramètres par défaut (sauf si vous souhaitez réellement les changer)
Pour vérifier que les certificats ont bien été créés :
ls keys/
Vous devez voir les fichiers :
ca.crt ca.key
- Générer la clé Diffie-Hellman qui permet de sécuriser les échanges :
./build-dh
Il est possible que cette étape dure un certain temps, ne pas s'inquiéter et laisser le serveur travailler.
- Générer les certificats du serveur :
./build-key-server srvcert
Laissez les paramètres par défaut, sauf pour la ligne :
Common Name (eg, your name or your server's hostname) [srvcert]:
pour laquelle vous pouvez renseigner votre nom de domaine.
Configuration de OpenVPN
- Copiez la configuration par défaut dans le dossier d'openvpn :
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
- Editez cette configuration :
nano /etc/openvpn/server.conf
- Décommenter (enlever les ";") ces deux lignes pour que le service openvpn ne tourne pas sous un utilisateur dangereux :
user nobody group nogroup
- Le serveur OpenVPN se lance par défaut sur le port 1194. Ce port n'est pas atteignable (ni en TCP ni en UDP) depuis les caserts, il faut donc le changer. Vous trouverez sur cette page la liste des ports autorisés par le proxy de l'X. En particulier il peut être judicieux de choisir un port non contrôlé par le proxy pour le serveur, ainsi vous aurez accès à internet même en cas de plantage du proxy. De plus cela améliore votre ping, ce qui peut se révéler crucial si le vpn est destiné à des joueurs. Au 9 Juin 2016, le port 554 est accessible librement en TCP depuis les caserts du bâtiment 70.
Trouver la ligne
port 1194
Remplacer 1194
par le port de votre choix
Trouver la ligne
proto udp
Remplacer udp
par tcp
- Indiquer les bons chemins de la clé et des certificats :
ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/srvcert.crt key /etc/openvpn/easy-rsa/keys/srvcert.key # This file should be kept secret
- Trouver la ligne :
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
et la remplacer par :
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
- Pour que le serveur OpenVPN soit considéré comme la passerelle par défaut et que les clients qui s'y connectent soient invités à router tout leur trafic à travers celui-ci ajouter :
push "redirect-gateway def1 bypass-dhcp"
- Indiquer le DNS a utiliser :
push "dhcp-option DNS 8.8.8.8"
Ici 8.8.8.8
est un serveur DNS de google, il est possible de le remplacer par celui de l'hébergeur du serveur, à votre convenance.
Sauvegarder le fichier puis quitter.
Lancement du serveur
La commande pour lancer manuellement le serveur openvpn est :
openvpn /etc/openvpn/server.conf
Vous devriez voir apparaitre en dernière ligne :
Mon Jun 22 20:02:15 2015 Initialization Sequence Completed
Il est possible de tester si l'interface du VPN est bien en fonctionnement, pour cela laisser le shell dans lequel est lancé OpenVPN ouvert et ouvrir une deuxième connection. Dans ce second shell :
ifconfig tun0
Vous devez observer un bloc semblable à celui-ci :
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)