Sommaire :
- Pré-requis
- Installation et configuration de SSHFS avec un Nas Synology
- Installation et configuration de Transmission
- Installation et configuration d’Openvpn avec VPNfacile.net
- Installation et configuration de Couchpotato
- 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 :
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…