{"id":362,"date":"2023-06-06T09:23:14","date_gmt":"2023-06-06T09:23:14","guid":{"rendered":"https:\/\/blog.nibelheim.fr\/?p=362"},"modified":"2023-08-24T06:54:04","modified_gmt":"2023-08-24T06:54:04","slug":"une-seedbox-derriere-un-vpn-sur-raspberry-pi","status":"publish","type":"post","link":"https:\/\/blog.nibelheim.fr\/?p=362","title":{"rendered":"Une Seedbox derri\u00e8re un VPN (sur Raspberry Pi)"},"content":{"rendered":"\n<p class=\"has-bright-red-color has-text-color\">Attention! Ce tutoriel est obsol\u00e8te dans la mesure o\u00f9 <a href=\"https:\/\/blog.nibelheim.fr\/?p=384\" data-type=\"link\" data-id=\"https:\/\/blog.nibelheim.fr\/?p=384\">la solution plus l\u00e9g\u00e8re du proxy torrent peut vous convenir<\/a>!<\/p>\n\n\n\n<p>Ceux qui t\u00e9l\u00e9chargent<em> (de mani\u00e8re tout \u00e0 fait l\u00e9gale, cela va sans dire)<\/em> via le r\u00e9seau BitTorrent le savent : certains sites requi\u00e8rent un ratio entre le contenu t\u00e9l\u00e9charg\u00e9 et le partage.<br>Ce que cela induit, c&#8217;est qu&#8217;il faut laisser &#8220;vivre&#8221; ses torrents et que comme, malheureusement, il se peut que le contenu ne soit pas si l\u00e9gal que \u00e7a &#8211; personne n&#8217;est \u00e0 l&#8217;abri! &#8211; on finisse par se faire toper par le successeur d&#8217;Hadopi qui se m\u00eale \u00e9videmment de tout ce qui le regarde au premier chef (et pas du tout de majors hollywoodiens, voyons).<\/p>\n\n\n\n<p>Bon, alors du coup, nous voil\u00e0 partis pour transformer un Raspberry Pi 3 qui dormait en Seedbox prot\u00e9g\u00e9e derri\u00e8re un VPN.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9requis<\/h2>\n\n\n\n<p><strong>Un Raspberry Pi<\/strong> (ou un PC sous Linux, \u00e7a marche aussi) avec son OS install\u00e9 dessus<br>ATTENTION : ce Raspberry devant passer par un VPN, il est recommand\u00e9 de ne PAS lui faire faire autre chose, genre serveur Web : le VPN est certes configurable et le probl\u00e8me n&#8217;est pas insoluble, mais le tutoriel n&#8217;est pas pr\u00e9vu pour et, pour faire simple, le VPN foutra en l&#8217;air votre serveur Web en reroutant toutes les requ\u00eates vers lui&#8230; Donc, pensez \u00e0 s\u00e9parer, au moins dans un premier temps, Seedbox du reste.<br><br><strong>Un SSD en USB<\/strong>, vraiment recommand\u00e9 car le lecteur de carte SD est absolument instable et peut vous foirer votre carte SD (c&#8217;est un d\u00e9faut tr\u00e8s connu des Raspberry Pi&#8230;)<\/p>\n\n\n\n<p>Un<strong> fournisseur de VPN<\/strong> capable de vous fournir un <strong>fichier OVPN<\/strong> (et ses certificats qui vont avec si besoin).<br><br>De la connaissance et de la d\u00e9brouillardise en Linux&#8230; Globalement, savoir acc\u00e9der \u00e0 votre Raspberry Pi sans difficult\u00e9 en ligne de commande.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Proc\u00e9dure<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\"><strong><em>1- Boot USB et mise \u00e0 jour de la bestiole<\/em><\/strong><\/h4>\n\n\n\n<p>Dans un premier temps, nous allons faire booter le Pi depuis le SSD USB. Avantage, j&#8217;ai \u00e9cum\u00e9 pour vous les Internets et je vous recommande chaudement de suivre la M\u00e9thode 2 de <a href=\"https:\/\/thesecmaster.com\/three-different-ways-to-boot-a-raspberry-pi-from-a-usb-drive\/\" data-type=\"URL\" data-id=\"https:\/\/thesecmaster.com\/three-different-ways-to-boot-a-raspberry-pi-from-a-usb-drive\/\">ce tutoriel que voici et qui r\u00e9pond parfaitement \u00e0 la probl\u00e9matique<\/a>. Ca fonctionne cr\u00e8me, je l&#8217;ai fait ce week-end. Bah alors.<\/p>\n\n\n\n<p>En ayant termin\u00e9 la M\u00e9thode 2, il convient maintenant de maximiser la taille du syst\u00e8me de fichiers. Logguez-vous en SSH sur votre Pi puis :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt full-upgrade    \/\/ Met \u00e0 jour tous les paquets\nsudo rpi-update    \/\/ Met \u00e0 jour le firmware\nsudo reboot    \/\/ Active le nouveau firmware\nsudo raspi-config<\/pre>\n\n\n\n<p>Puis dans <strong>6 &#8211; System options<\/strong>, choisissez l&#8217;option A<strong>1 &#8211; Expand filesystem<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo reboot\nlsblk<\/pre>\n\n\n\n<p>Cette derni\u00e8re commande permet de s&#8217;assurer que le syst\u00e8me de fichier est bien mont\u00e9 sur le SSD. Par exemple, chez moi, cela donne :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ lsblk<br>NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT<br>sda 8:0 0 111.8G 0 disk<br>\u2514\u2500sda1 8:1 0 111.8G 0 part \/<br>mmcblk0 179:0 0 14.4G 0 disk<br>\u251c\u2500mmcblk0p1 179:1 0 256M 0 part \/boot<br>\u2514\u2500mmcblk0p2 179:2 0 14.2G 0 part<\/pre>\n\n\n\n<p>La mise au format est p\u00e9nible mais on voit que <strong>\/<\/strong> (le syst\u00e8me de fichiers) est bien mont\u00e9 sur <strong>sda1<\/strong>, donc mon SSD. S&#8217;il \u00e9tait mont\u00e9 sur <strong>mmcblk0p2<\/strong>, \u00e7&#8217;aurait \u00e9t\u00e9 sur la carte SD. Donc : youpi.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong><em>2- Mise en place initiale du VPN<\/em><\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install openvpn<\/pre>\n\n\n\n<p>Placez ensuite votre fichier .ovpn dans un endroit de votre connaissance; dans mon exemple, il sera dans <strong>\/etc\/openvpn\/client\/profil.ovpn<\/strong> .<br>Armez-vous de vos login et mot de passe pour la connexion, puis :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo openvpn --config \/etc\/openvpn\/client\/profil.ovpn<\/pre>\n\n\n\n<p>Normalement, vous devriez entrer \u00e0 la main votre login et votre de passe, et l&#8217;id\u00e9e serait d&#8217;arriver \u00e0 la phrase <strong>&#8220;Initialization Sequence Completed&#8221;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"33\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2023\/06\/image.png\" alt=\"\" class=\"wp-image-364\"\/><\/figure>\n\n\n\n<p>Une fois rendu l\u00e0, f\u00e9licitations, le VPN est \u00e9tabli : le plus dur est fait.<\/p>\n\n\n\n<p>Quittez en appuyant sur ctrl-X, et nous allons maintenant automatiser le login et le mot de passe.<br>Dans un fichier quelconque (alors attention, niveau s\u00e9curit\u00e9 c&#8217;est moyen), nous allons remplir le login et le mot de passe du vpn, par exemple dans <strong>\/etc\/openvpn\/client\/credentials.txt<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/etc\/openvpn\/client\/credentials.txt<\/pre>\n\n\n\n<p>Sur la premi\u00e8re ligne, entrez le login, et sur la seconde (via un b\u00eate appui sur Enter, pas de subtilit\u00e9 autre) votre mot de passe.<br>Genre :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">monlogin\nmonmotdepasse<\/pre>\n\n\n\n<p>Puis ctrl-X et Y pour quitter et sauvegarder.<br>Suite \u00e0 quoi, nous allons tester la commande pour l&#8217;autologin :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo openvpn --config \/etc\/openvpn\/client\/profil.ovpn <strong>--auth-user-pass \/etc\/openvpn\/client\/credentials.txt<\/strong><\/pre>\n\n\n\n<p>Cette fois-ci, vous devriez atteindre &#8220;Initialization Sequence Completed&#8221;<strong> sans rien avoir \u00e0 indiquer<\/strong>.<br>Si tel n&#8217;est pas le cas, regardez ce qui a foir\u00e9 dans la myriade de lignes indiqu\u00e9es au lancement d&#8217;OpenVPN.<\/p>\n\n\n\n<p>Quittez OpenVPN avec un bon <strong>ctrl-X<\/strong>.<\/p>\n\n\n\n<p>Information importante : ici, nous avons lanc\u00e9 le VPN qui tourne au premier plan, ce qui signifie qu&#8217;on ne peut plus rien faire dans la session SSH courante.<br>Ne testez pas \u00e7a tout de suite, mais l&#8217;id\u00e9e pour faire en sorte qu&#8217;OpenVPN tourne en arri\u00e8re-plan est d&#8217;ajouter le symbole &amp; en fin de commande :<\/p>\n\n\n\n<pre id=\"block-e14ac0d4-889a-44d1-89ce-d90974551b39\" class=\"wp-block-preformatted\">sudo openvpn --config \/etc\/openvpn\/client\/profil.ovpn --auth-user-pass \/etc\/openvpn\/client\/credentials.txt <strong>&amp;<\/strong><\/pre>\n\n\n\n<p>Ceci nous sera fort utile un peu plus tard.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong><em>3- Script, mon ami<\/em><\/strong><\/h4>\n\n\n\n<p>Taper des commandes, c&#8217;est bien, mais les raccourcir, c&#8217;est mieux. Nous allons \u00e9crire un petit script (que nous allons enrichir apr\u00e8s) permettant de lancer le VPN.<br>Ceci permet notamment de lancer le VPN au d\u00e9marrage du Pi, ainsi que de lui coller d&#8217;autres \u00e9tapes dont nous aurons besoin plus tard, \u00e0 iso-nombre de caract\u00e8res tap\u00e9s.<\/p>\n\n\n\n<p>Pour l&#8217;exemple, nous allons cr\u00e9er le script <strong>\/etc\/openvpn\/client\/launchvpn.sh<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/etc\/openvpn\/client\/launchvpn.sh<\/pre>\n\n\n\n<p>Voici ce que nous allons lui marquer :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/bin\/bash<br><br>sudo openvpn --config \/etc\/openvpn\/client\/profil.ovpn --auth-user-pass \/etc\/openvpn\/client\/credentials.txt<\/pre>\n\n\n\n<p>Puis ctrl-X et Y pour enregistrer.<br>Suite \u00e0 quoi, nous allons autoriser l&#8217;ex\u00e9cution du script et le lancer :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo chmod +x \/etc\/openvpn\/client\/launchvpn.sh<br>\/etc\/openvpn\/client\/launchvpn.sh<\/pre>\n\n\n\n<p>Si vous arrivez encore \u00e0 &#8220;Initialization Sequence Completed&#8221;, c&#8217;est un nouveau succ\u00e8s et vous pouvez de nouveau ctrl-X pour quitter le VPN.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong><em>4- La joie des iptables<\/em><\/strong><\/h4>\n\n\n\n<p>Le VPN, c&#8217;est bien, \u00e0 un d\u00e9tail pr\u00e8s : si vous laissez le VPN connect\u00e9 et que vous quittez votre session SSH&#8230; Vous ne pourrez plus acc\u00e9der au Raspberry Pi, puisque votre connexion (nouvelle) sera renvoy\u00e9e dans le VPN&#8230; C&#8217;est ce qu&#8217;on lui demande, mais l\u00e0, \u00e7a nous ennuie.<\/p>\n\n\n\n<p>Afin de d\u00e9gager le port SSH du VPN, nous allons utiliser la fonction iptables et routes offertes par Linux.<br>Note : <strong>par d\u00e9faut, le port SSH est 22<\/strong>. Si vous l&#8217;avez chang\u00e9, eh bah&#8230; Changez dans le script. Ca fait parfaitement sens.<\/p>\n\n\n\n<p>Nous allons \u00e9galement partir du principe que notre IP publique (que vous pouvez r\u00e9cup\u00e9rer sur <a href=\"http:\/\/www.whatismyip.com\">http:\/\/www.whatismyip.com<\/a>) est <strong>1.2.3.4<\/strong>.<br>De m\u00eame, nous allons partir du principe que votre adresse IP locale (celle entre votre box internet et vous) est <strong>192.168.0.1<\/strong>.<\/p>\n\n\n\n<p>Editez notre script de plus t\u00f4t :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/etc\/openvpn\/client\/launchvpn.sh<\/pre>\n\n\n\n<p>Et modifiez le script de la sorte :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/bin\/bash\n\nip rule add table 128 to <strong>1.2.3.4<\/strong>\nip route add table 128 default via <strong>192.168.0.1<\/strong>\niptables -A INPUT -d <strong>1.2.3.4<\/strong> -p tcp --dport <strong>22<\/strong> -j ACCEPT\niptables -A INPUT -d <strong>1.2.3.4<\/strong> -j DROP\n\nsudo openvpn --config \/etc\/openvpn\/client\/profil.ovpn --auth-user-pass \/etc\/openvpn\/client\/credentials.txt<strong> &amp;<\/strong><\/pre>\n\n\n\n<p>Suite \u00e0 quoi, ctrl-X puis Y, comme toujours.<br>Relancez le script maintenant, puis ouvrez une autre session SSH vers votre Pi via un autre terminal.<br>Normalement, vous devriez pouvoir vous y connecter sans aucun probl\u00e8me, en d\u00e9pit du VPN!<\/p>\n\n\n\n<p>Pour couper le VPN, utilisez la commande :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo pkill openvpn<\/pre>\n\n\n\n<p class=\"has-bright-red-color has-text-color\">Ce que je vous invite \u00e0 faire imm\u00e9diatement.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5- Transmission<\/h4>\n\n\n\n<p>Le client BitTorrent que nous allons utiliser est transmission-daemon. Du coup :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install transmission-daemon<\/pre>\n\n\n\n<p>Ensuite, nous allons cr\u00e9er un dossier, s&#8217;il n&#8217;existe pas, pour le stockage des torrents t\u00e9l\u00e9charg\u00e9s :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo mkdir \/downloads &amp;&amp; sudo chmod 777 \/downloads -R<\/pre>\n\n\n\n<p>Notez que le mode 777 n&#8217;est vraiment pas recommand\u00e9, mais il  nous permet d&#8217;avoir la paix le temps de la mise en route de notre seedbox sans se pr\u00e9occuper des droits d&#8217;acc\u00e8s. Il faudra penser \u00e0 les changer apr\u00e8s&#8230;<\/p>\n\n\n\n<p>Ceci fait, nous allons \u00e9diter la configuration de Transmission via :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/var\/lib\/transmission-daemon\/info\/settings.json<\/pre>\n\n\n\n<p>Il existe plusieurs niveaux de s\u00e9curisation du daemon transmission, pour ma part, je vote pour du simple et funky, mais pas s\u00e9curis\u00e9.<br>Voici les param\u00e8tres que j&#8217;ai chang\u00e9s dans mon <strong>settings.json<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"download-dir\": \"\/downloads\",<br>\"rpc-host-whitelist-enabled\": false,<br>\"rpc-whitelist-enabled\": false,<\/pre>\n\n\n\n<p>La premi\u00e8re ligne est bien entendu le dossier de destination que nous avons cr\u00e9\u00e9 ci-dessus, et les seconde et troisi\u00e8me lignes permettent \u00e0 n&#8217;importe quel appareil de se connecter sur l&#8217;interface sans faire partie d&#8217;une liste des invit\u00e9s autoris\u00e9s.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo service transmission-daemon restart<\/pre>\n\n\n\n<p>Attendu que votre IP locale est 192.168.1.100, vous pouvez donc vous connecter via votre navigateur \u00e0 : <strong>http:\/\/192.168.1.100:9091\/transmission<\/strong><br>Et entrez le login <strong>transmission<\/strong>, ainsi que le mot de passe <strong>transmission<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"471\" height=\"86\" src=\"https:\/\/blog.nibelheim.fr\/wp-content\/uploads\/2023\/06\/image-1.png\" alt=\"\" class=\"wp-image-368\"\/><\/figure>\n\n\n\n<p>Si vous avez l&#8217;image ci-dessus, alors tout va bien!<\/p>\n\n\n\n<p class=\"has-bright-red-color has-text-color\">Hyper important : par d\u00e9faut, Transmission \u00e9coute sur le port 9091. Il est crucial de proc\u00e9der au port forwarding de ce port sur votre box Internet vers votre Pi! Attendu que chaque box est diff\u00e9rente, Google sera votre ami, mais attention \u00e0 ne pas oublier ce d\u00e9tail : \u00e7a aura l&#8217;air de marcher&#8230; Mais en fait , tr\u00e8s mal.<\/p>\n\n\n\n<p>Vous pouvez maintenant ajouter un torrent via votre site favori et v\u00e9rifier que tout fonctionne.<br>Si votre torrent ne se t\u00e9l\u00e9charge pas pass\u00e9 les premiers pourcents, vous devriez avoir un message d&#8217;erreur dans Transmission qui indique un probl\u00e8me de permission : votre dossier <strong>\/downloads<\/strong> (ou autre) ne dispose pas des bonnes autorisations!<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6- Up\/Down : le killswitch<\/h4>\n\n\n\n<p>Maintenant que nous avons un VPN et un client Torrent qui fonctionne, nous allons lier les deux via un killswitch, c&#8217;est-\u00e0-dire une action automatique permettant dans notre cas de couper les torrents en cas de perte du VPN.<\/p>\n\n\n\n<p>Pour cela, OpenVPN dispose d&#8217;une astuce \u00e0 impl\u00e9menter : up et down.<br>Ces options permettent, l&#8217;\u00e9tablissement (up) et \u00e0 la coupure (down) du VPN, d&#8217;ex\u00e9cuter un script pour faire basiquement ce que l&#8217;on veut.<\/p>\n\n\n\n<p>Dans ce but, nous allons cr\u00e9er deux scripts : <strong>vpnup.sh<\/strong> et <strong>vpndown.sh<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo touch \/etc\/openvpn\/client\/vpnup.sh &amp;&amp; sudo chmod +x \/etc\/openvpn\/client\/vpnup.sh<br>sudo touch \/etc\/openvpn\/client\/vpndown.sh &amp;&amp; sudo chmod +x \/etc\/openvpn\/client\/vpndown.sh<br>sudo nano \/etc\/openvpn\/client\/vpnup.sh<\/pre>\n\n\n\n<p>Copiez le contenu suivant dans vpnup.sh :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/bin\/bash\necho \"VPN up : starting all torrents\"\nsudo service transmission-daemon start\ntransmission-remote --auth \"transmission:transmission\" -tall --start<\/pre>\n\n\n\n<p>C&#8217;est un peu brutal, mais nous d\u00e9marrons le service transmission-daemon, puis nous d\u00e9marrons tous les torrents qui y sont couramment associ\u00e9s.<br>Il est possible de faire plus dans le s\u00e9lectif, mais il faudra tuner le script en fonction, et \u00e7a, c&#8217;est votre affaire \ud83d\ude00<\/p>\n\n\n\n<p>Ctrl-X puis Y, puis :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/etc\/openvpn\/client\/vpndown.sh<\/pre>\n\n\n\n<p>Et copiez-y :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/bin\/bash\necho \"VPN down : stopping all torrents!\"\ntransmission-remote --auth \"transmission:transmission\" -tall --stop\nsudo service transmission-daemon stop<\/pre>\n\n\n\n<p>Toujours dans le brutal : \u00e0 la coupure du VPN, on arr\u00eate tous les torrents et on arr\u00eate m\u00eame le service transmission-daemon pour bonne mesure.<br>La raison \u00e0 \u00e7a est que transmission-remote envoie une commande \u00e0 transmission-daemon, lequel r\u00e9pond &#8220;accept\u00e9&#8221; si tout se passe bien&#8230;<br>Mais quid de quand la commande, pour une raison ou pour une autre, est refus\u00e9e?<br>Comme la priorit\u00e9 est de couper tout t\u00e9l\u00e9chargement si le VPN n&#8217;est pas actif, on se donne les moyens de ses envies!<\/p>\n\n\n\n<p>Prochaine chose \u00e0 faire : autoriser OpenVPN \u00e0 appeler des scripts \u00e0 l&#8217;\u00e9tablissement et \u00e0 la coupure du VPN. En effet, il existe des options dans les fichiers .ovpn \u00e0 indiquer pour explicitement autoriser l&#8217;ex\u00e9cution de scripts.<br>Reprenons notre fichier ovpn :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/etc\/openvpn\/client\/profil.ovpn<\/pre>\n\n\n\n<p>Puis cherchez \u00e9ventuellement une ligne optionnelle indiquant <strong>script-security<\/strong>. Cette ligne peut ne pas exister, auquel cas rajoutez-la <em>(l&#8217;emplacement importe peu, j&#8217;ai mis la mienne apr\u00e8s le premier bloc de param\u00e8tres)<\/em>, ou modifiez l&#8217;existante de la sorte :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">script-security 2<\/pre>\n\n\n\n<p>Enregistrez et fermez.<br>Maintenant, nous allons ajouter les appels \u00e0 ces deux petits scripts \u00e0 notre script de lancement du VPN :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/etc\/openvpn\/client\/launchvpn.sh<\/pre>\n\n\n\n<p>Et modifiez-le de la mani\u00e8re suivante :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-dark-gray-color has-text-color\">#\/bin\/bash<br>ip rule add table 128 to 1.2.3.4<br>ip route add table 128 default via 192.168.0.1<br>iptables -A INPUT -d 1.2.3.4 -p tcp --dport 22 -j ACCEPT<br>iptables -A INPUT -d 1.2.3.4 -j DROP<br>sudo openvpn --config \/etc\/openvpn\/client\/profil.ovpn \\<br>--auth-user-pass \/etc\/openvpn\/client\/credentials.txt \\<br>--up \/etc\/openvpn\/client\/vpnup.sh\\<br>--down \/etc\/openvpn\/client\/vpndown.sh &amp;<\/pre>\n\n\n\n<p>(l&#8217;antislash permet d&#8217;\u00e9crire une commande sur plusieurs lignes)<br>Ctrl-X puis Y, et nous voil\u00e0 presque arriv\u00e9s \u00e0 la fin!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reste \u00e0 faire<\/h2>\n\n\n\n<p>En vrac, il reste :<br>&#8211; A ouvrir sur la box internet et v\u00e9rifier que le port 9091 fonctionne, ce qui passera par l&#8217;ajout probable de la ligne :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">iptables -A INPUT -d 1.2.3.4 -p tcp --dport 9091 -j ACCEPT<\/pre>\n\n\n\n<p>dans <strong>launchvpn.sh<\/strong>,<br>&#8211; automatiser le lancement de launchvpn au d\u00e9marrage, via le crontab root (sudo crontab -e).<br>&#8211; pourquoi pas le transfert des donn\u00e9es depuis la seedbox vers un autre serveur.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Attention! Ce tutoriel est obsol\u00e8te dans la mesure o\u00f9 la solution plus l\u00e9g\u00e8re du proxy torrent peut vous convenir! Ceux qui t\u00e9l\u00e9chargent (de mani\u00e8re tout \u00e0 fait l\u00e9gale, cela va sans dire) via le r\u00e9seau BitTorrent le savent : certains sites requi\u00e8rent un ratio entre le contenu t\u00e9l\u00e9charg\u00e9 et le [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,8],"tags":[],"class_list":["post-362","post","type-post","status-publish","format-standard","hentry","category-linux","category-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=362"}],"version-history":[{"count":10,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/362\/revisions"}],"predecessor-version":[{"id":425,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=\/wp\/v2\/posts\/362\/revisions\/425"}],"wp:attachment":[{"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.nibelheim.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}