4. OpenVPN

Sommaire :

  1. Pré-requis
  2. Installation et configuration de SSHFS avec un Nas Synology
  3. Installation et configuration de Transmission
  4. Installation et configuration d’Openvpn avec VPNfacile.net
  5. Installation et configuration de Couchpotato
  6. Installation et configuration de Sickbeard

On ne change pas les habitudes, pour installer OpenVPN :

apt-get install openvpn

Ensuite récupérez le fichier de configuration fourni par votre fournisseur VPN. Pour VPNfacile.net il se trouve ici. Les fichiers intéressants sont ceux ci :

  • ca.crt = certificat racine  de l’autorité de certification (AC)
  • ta.key = la clé nous permettant de monter le tunnel SSL
  • fichiers.ovpn = ces fichiers contiennent la configuration du tunnel. Ils m’ont servis à créer mon propre fichier de conf.

Placez les fichiers « ca.crt » et « ta.key » dans le répertoire « /etc/openvpn/ ».

Nous allons maintenant créer notre propre fichier de configuration openvpn :

nano /etc/openvpn/client.conf

Puis ajoutez y ceci :

client
dev tun
proto tcp
nobind

;Pas de modification depuis le serveur de la table de routage
route-nopull

;Scripts locaux gérant les routes et le client torrent
;script-security 2
;up up.sh
;down down.sh

;CERT
tls-auth ta.key 1
ca ca.crt
cipher AES-256-CBC
keysize 256
link-mtu 1560

;HOST
remote-random
remote nl10.vpnfacile.net 443
remote nl9.vpnfacile.net 443
remote nl8.vpnfacile.net 443
remote nl6.vpnfacile.net 443
remote nl5.vpnfacile.net 443
remote nl4.vpnfacile.net 443
remote nl1.vpnfacile.net 443

resolv-retry infinite




;AUTH
auth-user-pass pass
persist-key
persist-tun

comp-lzo

;Maintien de la connexion: ping envoyé toutes les 10s, restart si pas de réponses pendant 60s
keepalive 10 60

Les paramètres importants de ce script sont ceux-ci :

  • route-nopull = cela évite au serveur de nous envoyer sa propre table de routage. Par défaut, toutes les connexions du serveur empruntent le tunnel ce qui dans notre cas ne nous intéresse pas.
  • up up.sh et down down.sh = pour le moment ils sont commentés pour tester que le VPN fonctionne correctement. Ces paramètres nous servent à lancer un script lors du montage / démontage du tunnel.
  • remote-random = nous permets de nous connecter aléatoirement à une passerelle VPN.

Vous noterez que le tunnel SSL se monte en utilisant le port 443, pensez donc à ouvrir ce port dans votre firewall.

N’oubliez pas de créer un fichier « pass » dans le répertoire « /etc/openvpn/ » :

nano /etc/openvpn/pass

Ajoutez y vos identifiants VPNfacile.net comme ceci :

user
password

La commande « auth-user-pass » du fichier de conf précise d’aller y chercher nos identifiants.

Maintenant nous pouvons tester la configuration de notre tunnel avec cette commande :

/etc/init.d/openvpn start /etc/openvpn/client.conf

Si tout s’est bien passé vous devriez voir une interface « tun0 »  avec la commande ifconfig :

root@nsXXXXXXX:/#ifconfig

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet adr:10.14.0.190  P-t-P:10.14.0.189  Masque:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          Packets reçus:175204476 erreurs:0 :0 overruns:0 frame:0
          TX packets:338940582 errors:0 dropped:957174 overruns:0 carrier:0
          collisions:0 lg file transmission:100
          Octets reçus:22677809011 (22.6 GB) Octets transmis:456191678014 (456.1 GB)

La suite va consister à dé-commenter les lignes 10,11 et 12 afin que les scripts fassent le nécessaire au niveau du routage et du service Transmission.

Tout d’abord créons la table de routage VPN :

nano /etc/iproute2/rt_tables

Et ajoutez la table VPN à la fin :

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1 VPN

Ensuite créez un fichier up.sh :

nano /etc/openvpn/up.sh

Puis ajoutez y ceci :

#! /bin/sh
# 

#Creation de la route pour mon VPN

echo "$dev : $ifconfig_local -> $ifconfig_remote gw: $route_vpn_gateway" 

ip route add default via $ifconfig_remote dev $dev table VPN
ip rule add from $ifconfig_local/32 table VPN
ip rule add to $ifconfig_remote/32 table VPN
ip route flush cache


/etc/init.d/transmission-daemon stop
sed s/IP_ADDRESS/$ifconfig_local/ /etc/transmission-daemon/settings-template.json > /etc/transmission-daemon/settings.json
/etc/init.d/transmission-daemon start

#Demarrage du script verifiant que le VPN est toujours actif
killall checkVPN
/usr/bin/checkVPN &

Les différentes variables proviennent d’Openvpn, nous pouvons ainsi créer le routage de la table VPN

Nous arrêtons ensuite le service Transmission  afin de pouvoir modifier le fichier de configuration. Nous remplaçons la variable IP_ADDRESS du fichier que nous avions créer « settings-template.json » par l’adresse IP du tunnel (variable $ifconfig-local). Puis nous injectons le contenu dans le fichier « settings.json ». Ensuite nous redémarrons le service Transmission qui est maintenant « bindé » sur l’interface de notre tunnel.

Enfin on lance le script checkVPN qui se charge de vérifier que notre tunnel est toujours actif et dans le cas contraire relance Openvpn.

Nous allons d’ailleurs créer ce dernier script :

nano /usr/bin/checkVPN

On y ajoute ceci :

#! /bin/bash

#On fait un ping vers www.google.com toutes les 5min, et si aucun paquet n'est reçu en retour (0 packets received, le 0 étant à la position 23 sur la ligne venant de ping) on relance le VPN
#

while [ "1" -gt "0" ]; do
        sleep 300
    T=`ping -I tun0 -c 1 www.google.com |grep "packets transmitted"`
    if [[ ${T:23:1} != "1" ]]
    then 
        /etc/init.d/openvpn restart
    fi
done

Puis on rends le tout exécutable (up.sh aussi d’ailleurs) :

chmod +x /etc/openvpn/up.sh 
chmod +x /usr/bin/checkVPN

Il nous reste à créer le script qui annule tout ceci lorsqu’on stop le service Openvpn :

nano /etc/openvpn/down.sh

Puis ajoutez y ceci :

#! /bin/sh
# This script disables policy routing before the tunnel interface is brought down

killall checkVPN
/etc/init.d/transmission-daemon stop

#On efface les routes liés VPN

ip rule del to $ifconfig_remote/32 table VPN
ip rule del from $ifconfig_local/32 table VPN
ip route del default via $ifconfig_remote dev $dev table VPN
ip route flush cache

cp /etc/transmission-daemon/settings-direct.json /etc/transmission-daemon/settings.json
/etc/init.d/transmission-daemon start

On annule tout ce qui à été effectué avec le script up.sh puis on copie le fichier de conf transmission « settings-direct.json » vers « settings.json » afin que le trafic de transmission sorte directement par notre ip publique.

On oublie pas de rendre ce dernier script executable :

chmod +x /etc/openvpn/down.sh

A partir de maintenant si vous lancez Openvpn, Transmission devrait emprunter notre tunnel VPN.

Pour s’en assurer vous pouvez télécharger ce torrent qui provient du site checkmytorrentip.net. Si tout se passe bien vous devriez voir cette ligne dans votre transmission :

torrent

L’adresse IP doit correspondre à l’IP externe de votre passerelle VPN.

Enfin pour automatiser la connexion du tunnel VPN au lancement de votre machine editez le fichier suivant :

nano /etc/default/openvpn

Puis modifiez cette ligne :

#AUTOSTART="All"

en :

AUTOSTART="client.conf"

Redémarrez et admirez 😉

Passons maintenant à la partie la plus simple, la patate en couche : Couchpotato !

Bon ok c’est nul…

Lire la suite

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.