{"id":368,"date":"2015-02-12T12:29:37","date_gmt":"2015-02-12T11:29:37","guid":{"rendered":"http:\/\/www.fragnol.net\/?page_id=368"},"modified":"2015-02-14T12:17:24","modified_gmt":"2015-02-14T11:17:24","slug":"4-openvpn","status":"publish","type":"page","link":"https:\/\/www.fragnol.net\/?page_id=368","title":{"rendered":"4. OpenVPN"},"content":{"rendered":"<p><span style=\"text-decoration: underline;\"><em><strong>Sommaire :<\/strong><\/em><\/span><\/p>\n<ol>\n<li><a href=\"http:\/\/www.fragnol.net\/?page_id=334\">Pr\u00e9-requis<\/a><\/li>\n<li><a href=\"http:\/\/www.fragnol.net\/?page_id=339\">Installation et configuration de SSHFS avec un Nas Synology<\/a><\/li>\n<li><a href=\"http:\/\/www.fragnol.net\/?page_id=359\">Installation et configuration de Transmission<\/a><\/li>\n<li><strong>Installation et configuration d\u2019Openvpn avec VPNfacile.net<\/strong><\/li>\n<li><a href=\"http:\/\/www.fragnol.net\/?page_id=381\">Installation et configuration de Couchpotato<\/a><\/li>\n<li><a href=\"http:\/\/www.fragnol.net\/?page_id=399\">Installation et configuration de Sickbeard<\/a><\/li>\n<\/ol>\n<hr \/>\n<p>On ne change pas les habitudes, pour installer OpenVPN :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">apt-get install openvpn<\/pre>\n<p>Ensuite r\u00e9cup\u00e9rez le fichier de configuration fourni par votre fournisseur VPN. Pour VPNfacile.net il se trouve <a href=\"https:\/\/vpnfacile.net\/telechargements\/VPNFacile_configfiles.zip\" target=\"_blank\">ici<\/a>. Les fichiers int\u00e9ressants sont ceux ci :<\/p>\n<ul>\n<li>ca.crt = certificat racine\u00a0 de l&rsquo;autorit\u00e9 de certification (AC)<\/li>\n<li>ta.key = la cl\u00e9 nous permettant de monter le tunnel SSL<\/li>\n<li>fichiers.ovpn = ces fichiers contiennent la configuration du tunnel. Ils m&rsquo;ont servis \u00e0 cr\u00e9er mon propre fichier de conf.<\/li>\n<\/ul>\n<p>Placez les fichiers \u00ab\u00a0<em>ca.crt<\/em>\u00a0\u00bb et \u00ab\u00a0<em>ta.key<\/em>\u00a0\u00bb dans le r\u00e9pertoire \u00ab\u00a0<em>\/etc\/openvpn\/\u00a0\u00bb<\/em>.<\/p>\n<p>Nous allons maintenant cr\u00e9er notre propre fichier de configuration openvpn :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">nano \/etc\/openvpn\/client.conf<\/pre>\n<p>Puis ajoutez y ceci :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">client\r\ndev tun\r\nproto tcp\r\nnobind\r\n\r\n;Pas de modification depuis le serveur de la table de routage\r\nroute-nopull\r\n\r\n;Scripts locaux g\u00e9rant les routes et le client torrent\r\n;script-security 2\r\n;up up.sh\r\n;down down.sh\r\n\r\n;CERT\r\ntls-auth ta.key 1\r\nca ca.crt\r\ncipher AES-256-CBC\r\nkeysize 256\r\nlink-mtu 1560\r\n\r\n;HOST\r\nremote-random\r\nremote nl10.vpnfacile.net 443\r\nremote nl9.vpnfacile.net 443\r\nremote nl8.vpnfacile.net 443\r\nremote nl6.vpnfacile.net 443\r\nremote nl5.vpnfacile.net 443\r\nremote nl4.vpnfacile.net 443\r\nremote nl1.vpnfacile.net 443\r\n\r\nresolv-retry infinite\r\n\r\n\r\n\r\n\r\n;AUTH\r\nauth-user-pass pass\r\npersist-key\r\npersist-tun\r\n\r\ncomp-lzo\r\n\r\n;Maintien de la connexion: ping envoy\u00e9 toutes les 10s, restart si pas de r\u00e9ponses pendant 60s\r\nkeepalive 10 60<\/pre>\n<p>Les param\u00e8tres importants de ce script sont ceux-ci :<\/p>\n<ul>\n<li>route-nopull = cela \u00e9vite au serveur de nous envoyer sa propre table de routage. Par d\u00e9faut, toutes les connexions du serveur empruntent le tunnel ce qui dans notre cas ne nous int\u00e9resse pas.<\/li>\n<li>up up.sh et down down.sh = pour le moment ils sont comment\u00e9s pour tester que le VPN fonctionne correctement. Ces param\u00e8tres nous servent \u00e0 lancer un script lors du montage \/ d\u00e9montage du tunnel.<\/li>\n<li>remote-random = nous permets de nous connecter al\u00e9atoirement \u00e0 une passerelle VPN.<\/li>\n<\/ul>\n<p>Vous noterez que le tunnel SSL se monte en utilisant le port 443, pensez donc \u00e0 ouvrir ce port dans votre firewall.<\/p>\n<p>N&rsquo;oubliez pas de cr\u00e9er un fichier \u00ab\u00a0pass\u00a0\u00bb dans le r\u00e9pertoire \u00ab\u00a0\/etc\/openvpn\/\u00a0\u00bb :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">nano \/etc\/openvpn\/pass<\/pre>\n<p>Ajoutez y vos identifiants VPNfacile.net comme ceci :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">user\r\npassword<\/pre>\n<p>La commande \u00ab\u00a0auth-user-pass\u00a0\u00bb du fichier de conf pr\u00e9cise d&rsquo;aller y chercher nos identifiants.<\/p>\n<p>Maintenant nous pouvons tester la configuration de notre tunnel avec cette commande :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">\/etc\/init.d\/openvpn start \/etc\/openvpn\/client.conf<\/pre>\n<p>Si tout s&rsquo;est bien pass\u00e9 vous devriez voir une interface \u00ab\u00a0<em>tun0<\/em>\u00a0\u00bb\u00a0 avec la commande ifconfig :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">root@nsXXXXXXX:\/#ifconfig\r\n\r\ntun0\u00a0\u00a0\u00a0\u00a0\u00a0 Link encap:UNSPEC\u00a0 HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 inet adr:10.14.0.190\u00a0 P-t-P:10.14.0.189\u00a0 Masque:255.255.255.255\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 UP POINTOPOINT RUNNING NOARP MULTICAST\u00a0 MTU:1500\u00a0 Metric:1\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Packets re\u00e7us:175204476 erreurs:0 :0 overruns:0 frame:0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TX packets:338940582 errors:0 dropped:957174 overruns:0 carrier:0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 collisions:0 lg file transmission:100\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Octets re\u00e7us:22677809011 (22.6 GB) Octets transmis:456191678014 (456.1 GB)<\/pre>\n<p>La suite va consister \u00e0 d\u00e9-commenter les lignes 10,11 et 12 afin que les scripts fassent le n\u00e9cessaire au niveau du routage et du service Transmission.<\/p>\n<p>Tout d&rsquo;abord cr\u00e9ons la table de routage VPN :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">nano \/etc\/iproute2\/rt_tables<\/pre>\n<p>Et ajoutez la table VPN \u00e0 la fin :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">#\r\n# reserved values\r\n#\r\n255\u00a0\u00a0\u00a0\u00a0 local\r\n254\u00a0\u00a0\u00a0\u00a0 main\r\n253\u00a0\u00a0\u00a0\u00a0 default\r\n0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 unspec\r\n#\r\n# local\r\n#\r\n#1\u00a0\u00a0\u00a0\u00a0\u00a0 inr.ruhep\r\n1 VPN<\/pre>\n<p>Ensuite cr\u00e9ez un fichier up.sh :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">nano \/etc\/openvpn\/up.sh<\/pre>\n<p>Puis ajoutez y ceci :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">#! \/bin\/sh\r\n# \r\n\r\n#Creation de la route pour mon VPN\r\n\r\necho \"$dev : $ifconfig_local -&gt; $ifconfig_remote gw: $route_vpn_gateway\" \r\n\r\nip route add default via $ifconfig_remote dev $dev table VPN\r\nip rule add from $ifconfig_local\/32 table VPN\r\nip rule add to $ifconfig_remote\/32 table VPN\r\nip route flush cache\r\n\r\n\r\n\/etc\/init.d\/transmission-daemon stop\r\nsed s\/IP_ADDRESS\/$ifconfig_local\/ \/etc\/transmission-daemon\/settings-template.json &gt; \/etc\/transmission-daemon\/settings.json\r\n\/etc\/init.d\/transmission-daemon start\r\n\r\n#Demarrage du script verifiant que le VPN est toujours actif\r\nkillall checkVPN\r\n\/usr\/bin\/checkVPN &amp;<\/pre>\n<p>Les diff\u00e9rentes variables proviennent d&rsquo;Openvpn, nous pouvons ainsi cr\u00e9er le routage de la table VPN<\/p>\n<p>Nous arr\u00eatons ensuite le service Transmission\u00a0 afin de pouvoir modifier le fichier de configuration. Nous rempla\u00e7ons la variable IP_ADDRESS du fichier que nous avions cr\u00e9er \u00ab\u00a0settings-template.json\u00a0\u00bb par l&rsquo;adresse IP du tunnel (variable $ifconfig-local). Puis nous injectons le contenu dans le fichier \u00ab\u00a0settings.json\u00a0\u00bb. Ensuite nous red\u00e9marrons le service Transmission qui est maintenant \u00ab\u00a0bind\u00e9\u00a0\u00bb sur l&rsquo;interface de notre tunnel.<\/p>\n<p>Enfin on lance le script checkVPN qui se charge de v\u00e9rifier que notre tunnel est toujours actif et dans le cas contraire relance Openvpn.<\/p>\n<p>Nous allons d&rsquo;ailleurs cr\u00e9er ce dernier script :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">nano \/usr\/bin\/checkVPN<\/pre>\n<p>On y ajoute ceci :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">#! \/bin\/bash\r\n\r\n#On fait un ping vers www.google.com toutes les 5min, et si aucun paquet n'est re\u00e7u en retour (0 packets received, le 0 \u00e9tant \u00e0 la position 23 sur la ligne venant de ping) on relance le VPN\r\n#\r\n\r\nwhile [ \"1\" -gt \"0\" ]; do\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sleep 300\r\n\u00a0\u00a0 \u00a0T=`ping -I tun0 -c 1 www.google.com |grep \"packets transmitted\"`\r\n\u00a0\u00a0 \u00a0if [[ ${T:23:1} != \"1\" ]]\r\n\u00a0\u00a0 \u00a0then \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/etc\/init.d\/openvpn restart\r\n\u00a0\u00a0 \u00a0fi\r\ndone<\/pre>\n<p>Puis on rends le tout ex\u00e9cutable (up.sh aussi d&rsquo;ailleurs) :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">chmod +x \/etc\/openvpn\/up.sh \r\nchmod +x \/usr\/bin\/checkVPN<\/pre>\n<p>Il nous reste \u00e0 cr\u00e9er le script qui annule tout ceci lorsqu&rsquo;on stop le service Openvpn :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">nano \/etc\/openvpn\/down.sh<\/pre>\n<p>Puis ajoutez y ceci :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">#! \/bin\/sh\r\n# This script disables policy routing before the tunnel interface is brought down\r\n\r\nkillall checkVPN\r\n\/etc\/init.d\/transmission-daemon stop\r\n\r\n#On efface les routes li\u00e9s VPN\r\n\r\nip rule del to $ifconfig_remote\/32 table VPN\r\nip rule del from $ifconfig_local\/32 table VPN\r\nip route del default via $ifconfig_remote dev $dev table VPN\r\nip route flush cache\r\n\r\ncp \/etc\/transmission-daemon\/settings-direct.json \/etc\/transmission-daemon\/settings.json\r\n\/etc\/init.d\/transmission-daemon start<\/pre>\n<p>On annule tout ce qui \u00e0 \u00e9t\u00e9 effectu\u00e9 avec le script up.sh puis on copie le fichier de conf transmission \u00ab\u00a0settings-direct.json\u00a0\u00bb vers \u00ab\u00a0settings.json\u00a0\u00bb afin que le trafic de transmission sorte directement par notre ip publique.<\/p>\n<p>On oublie pas de rendre ce dernier script executable :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">chmod +x \/etc\/openvpn\/down.sh<\/pre>\n<p>A partir de maintenant si vous lancez Openvpn, Transmission devrait emprunter notre tunnel VPN.<\/p>\n<p>Pour s&rsquo;en assurer vous pouvez t\u00e9l\u00e9charger <a href=\"http:\/\/checkmytorrentip.net\/torrentip\/checkMyTorrentIp.png.torrent\" target=\"_blank\">ce torrent <\/a>qui provient du site checkmytorrentip.net. Si tout se passe bien vous devriez voir cette ligne dans votre transmission :<\/p>\n<p><a href=\"http:\/\/www.fragnol.net\/wp-content\/uploads\/2015\/02\/torrent.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-378 size-full\" src=\"http:\/\/www.fragnol.net\/wp-content\/uploads\/2015\/02\/torrent.jpg\" alt=\"torrent\" width=\"397\" height=\"77\" srcset=\"https:\/\/www.fragnol.net\/wp-content\/uploads\/2015\/02\/torrent.jpg 397w, https:\/\/www.fragnol.net\/wp-content\/uploads\/2015\/02\/torrent-300x58.jpg 300w\" sizes=\"auto, (max-width: 397px) 100vw, 397px\" \/><\/a><\/p>\n<p>L&rsquo;adresse IP doit correspondre \u00e0 l&rsquo;IP externe de votre passerelle VPN.<\/p>\n<p>Enfin pour automatiser la connexion du tunnel VPN au lancement de votre machine editez le fichier suivant :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">nano \/etc\/default\/openvpn<\/pre>\n<p>Puis modifiez cette ligne :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">#AUTOSTART=\"All\"<\/pre>\n<p>en :<\/p>\n<pre class=\"lang:default decode:true\" title=\"openvpn\">AUTOSTART=\"client.conf\"<\/pre>\n<p>Red\u00e9marrez et admirez \ud83d\ude09<\/p>\n<p>Passons maintenant \u00e0 la partie la plus simple, la patate en couche : Couchpotato !<\/p>\n<p>Bon ok c&rsquo;est nul&#8230;<\/p>\n<p><a href=\"http:\/\/www.fragnol.net\/?page_id=381\">Lire la suite <span class=\"meta-nav\">\u2192<\/span><\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sommaire : Pr\u00e9-requis Installation et configuration de SSHFS avec un Nas Synology Installation et configuration de Transmission Installation et configuration d\u2019Openvpn avec VPNfacile.net Installation et configuration de Couchpotato Installation et configuration de Sickbeard On ne change pas les habitudes, pour &hellip; <a href=\"https:\/\/www.fragnol.net\/?page_id=368\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-368","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/pages\/368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=368"}],"version-history":[{"count":7,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/pages\/368\/revisions"}],"predecessor-version":[{"id":408,"href":"https:\/\/www.fragnol.net\/index.php?rest_route=\/wp\/v2\/pages\/368\/revisions\/408"}],"wp:attachment":[{"href":"https:\/\/www.fragnol.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}