Configuration d’ipredator et transmission

Dans ce tutoriel, je vais vous montrer comment configurer le vpn ipredator ainsi qu’un client web bittorent sur votre serveur linux/debian/ubuntu.

Etape 1 : Configuration du vpn

Il faut avant tout s’inscrire sur le site d’ipredator (15€ les 3 mois dans mon souvenir)

Après avoir récupéré vos identifiants, on installe le logiciel pptp-linux pour configurer notre vpn avec nos identifiants fraîchement acquis.

[sh]aptitude install pptp-linux[/sh]

[sh]/etc/ppp/chap-secrets[/sh]

Image

[sh]/etc/ppp/peers/ipredator[/sh]

Image

Si vous avez un firewall rajoutez ces quelques règles dans votre fichier de configuration.

[sh]#VPN
iptables -A OUTPUT -m state –state NEW -o eth0 -p tcp –dport 1723 –syn -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT[/sh]

On peut maintenant lancer maintenant le vpn.

[sh]pppd call ipredator[/sh]

Pour démonter la carte :
[sh]poff ipredator[/sh]

Vous pouvez vérifier que l’interface est bien montée en faisant un petit ifconfig ! Si vous avez bien fait votre travail elle devrait apparaître sous le nom « ppp0 »

Si vous souhaitez lancer le vpn en mode débug voici la commande :
[sh]pon ipredator debug dump logfd 2 nodetach[/sh]

Etape 2 : Routage

Le problème avec les vpn c’est que parfois il change d’adresse ip du coup la configuration de votre client torrent va devoir être modifiée pour pouvoir pointer vers la nouvelle adresse ip. Pour parer à ce changement d’adresse plutôt contraignant on va monter une nouvelle interface de loopback .

Rajoutez dans le fichier /etc/network/interfaces

[sh]auto lo:1
iface lo:1 inet static
address 192.168.0.1
netmask 255.255.255.255[/sh]

et redémarrez le service networking pour que la modification soit prise en compte.

[sh]/etc/init.d/networking restart[/sh]

Ci-dessous vous trouverez le script permettant de faire la liaison entre l’interface de loopback et l’interface du vpn en mettant à jour les tables de routages de votre machine à chaque fois qu’une nouvelle adresse ip est attribuée au vpn.

v2.0 : dispo ici 

v3.1 : dispo ici cette nouvelle version check l’état du lien vpn en lançant un ping vers www.google.fr .Si le ping est KO le script remonte le lien vpn.
Attention : Pensez à autoriser le ping à destination de www.google.fr sur le votre FW

[sh]

#!/bin/bash
#https://www.ophyde.com/configuration-dipredator-et-transmission/
#by ophyde
#v3.1

poff ipredator
sleep 10

export PATH=$PATH:/usr/sbin/
while :
do
date

#On recupere l’adresse IP du vpn si elle existe et on la stocke dans $ipipred
ipipred=$(/sbin/ifconfig ppp0 | grep adr: | awk -F\: ‘{print $2}’ | awk ‘{print $1}’)
sleep 30
ppp0=$(/sbin/ifconfig ppp0)

#On recupere l’etat du lien grace au ping
ping=$(ping -I 192.168.0.1 www.google.fr -c 1 | grep % | awk -F\, ‘{print $3}’ | awk -F\% ‘{print $1}’)

#Si la variable $ipipred est vide on active la carte
if [ -z « ${ppp0} » ]
then
/usr/bin/poff ipredator
/usr/bin/pon ipredator
sleep 10

# Si l’interface ppp0 est toujours up mais qu’on ne ping plus l’exterieur on reactive la carte
elif [ $ping != 0 ]
then
/usr/bin/poff ipredator
/usr/bin/poff ipredator
sleep 10
fi

#On recupere l’adresse IP actuelle du vpn et on la stocke dans $ipvpn
ipvpn=$(/sbin/ifconfig ppp0 | grep adr: | awk -F\: ‘{print $2}’ | awk ‘{print $1}’)
echo $ipvpn

#Si la variable $ipipred est vide on ajoute directement les nouvelles routes
if [ -z $!$ipipred ]
then

#up
ip route add default dev ppp0 table IPRED
ip rule add from 192.168.0.1/32 table IPRED
ip rule add from $ipvpn/32 table IPRED

#Si l’adresse IP du vpn changer on supprime les anciennes routes et on ajoute les nouvelles
elif [ $ipvpn != $ipipred ]
then

#down
ip rule del from 192.168.0.1/32 table IPRED
ip rule del from $ipipred/32 table IPRED
ip route del default dev ppp0 table IPRED

#up
ip route add default dev ppp0 table IPRED
ip rule add from 192.168.0.1/32 table IPRED
ip rule add from $ipvpn/32 table IPRED

fi
done

[/sh]

Copiez/collez ou téléchargez le script dans un nouveau fichier /root/configuration_vpn sur votre serveur et rendez le exécutable avec un petit chmod ^^ ».

[sh]vi /root/configuration_vpn.sh[/sh]

[sh]chmod 755 /root/configuration_vpn.sh[/sh]

Le script est configuré pour s’exécuter toutes les minutes, il est donc nécessairement de le lancer une seule fois en tache de fond à chaque redémarrage du serveur.

/root/./configuration_vpn.sh &

Attention : Ne pas lancer automatiquement ce script au boot du serveur

Créez maintenant un nouveau fichier appelé nat contenant les règles ci-dessous et placez le dans le dossier /etc/init.d/.

[sh]touch /etc/init.d/nat[/sh]

[sh]

iptables -A PREROUTING -t nat -i ppp0 -p tcp –dport 6891:6899 -j DNAT –to 192.168.0.1
iptables -A PREROUTING -t nat -i ppp0 -p udp –dport 6890 -j DNAT –to 192.168.0.1
iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE

iptables -A INPUT -i ppp0 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp –dport 6891:6899 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp –dport 6890 -j ACCEPT
iptables -A FORWARD -s 192.168.0.1/32 -o eth0 -j DROP

[/sh]

On va rendre le script exécutable automatiquement à chaque démarrage de votre serveur.

[sh]chmod 755 /etc/init.d/nat
update-rc.d nat defaults[/sh]

On active le routage :

echo 1 > /proc/sys/net/ipv4/ip_forward

On ajoute au passage la nouvelle table de routage nécessaire au fonctionnement du script nat:

echo 1 IPRED >> /etc/iproute2/rt_tables

On exécute le tout une première fois.

[sh]./configuration_vpn
./nat[/sh]

Vous pouvez tester le routage de votre interface de loopback vers votre interface vpn en éxécutant un ping :

ping -I 192.168.0.1 http://www.google.fr

-I : Indique l’interface source, ici l’interface de loopback que nous avons créé.

Etape 3 : Installation et configuration de transmission

Transmission est une interface web gérant les protocoles peer to peer et vous permettant de télécharger des liens torrents ou magnet.

Un petit aperçu de l’interface web de transmission :

Image

[sh]apt-get install transmission-cli transmission-common transmission-daemon[/sh]

Le fichier de configuration se trouve dans /etc/transmission-daemon/settings.json
Copier/coller dans le fichier le code suivant :

Avant de modifier la configuration il faut arrêter transmission

[sh]/etc/init.d/transmission-daemon stop[/sh]

[sh]

{
« alt-speed-down »: 50,
« alt-speed-enabled »: false,
« alt-speed-time-begin »: 540,
« alt-speed-time-day »: 127,
« alt-speed-time-enabled »: false,
« alt-speed-time-end »: 1020,
« alt-speed-up »: 50,
« bind-address-ipv4 »: « 192.168.0.1 »,
« bind-address-ipv6 »: « :: »,
« blocklist-enabled »: false,
« dht-enabled »: true,
« download-dir »: « /var/lib/transmission-daemon/downloads »,
« download-limit »: 100,
« download-limit-enabled »: 0,
« encryption »: 1,
« incomplete-dir »: « /root/Downloads »,
« incomplete-dir-enabled »: false,
« lazy-bitfield-enabled »: true,
« lpd-enabled »: false,
« max-peers-global »: 200,
« message-level »: 2,
« open-file-limit »: 32,
« peer-limit-global »: 240,
« peer-limit-per-torrent »: 60,
« peer-port »: 51413,
« peer-port-random-high »: 65535,
« peer-port-random-low »: 49152,
« peer-port-random-on-start »: false,
« peer-socket-tos »: 0,
« pex-enabled »: true,
« port-forwarding-enabled »: false,
« preallocation »: 1,
« proxy »: «  »,
« proxy-auth-enabled »: false,
« proxy-auth-password »: «  »,
« proxy-auth-username »: «  »,
« proxy-enabled »: false,
« proxy-port »: 80,
« proxy-type »: 0,
« ratio-limit »: 2.0000,
« ratio-limit-enabled »: false,
« rename-partial-files »: true,
« rpc-authentication-required »: true,
« rpc-bind-address »: « 0.0.0.0 »,
« rpc-enabled »: true,
« rpc-password »: « votre_mot_de_passe »,
« rpc-port »: 9091,
« rpc-username »: « votre_pseudo_de_connexion »,
« rpc-whitelist »: «  »,
« rpc-whitelist-enabled »: false,
« script-torrent-done-enabled »: false,
« script-torrent-done-filename »: «  »,
« speed-limit-down »: 75,
« speed-limit-down-enabled »: false,
« speed-limit-up »: 100,
« speed-limit-up-enabled »: false,
« start-added-torrents »: true,
« trash-original-torrent-files »: false,
« umask »: 18,
« upload-limit »: 100,
« upload-limit-enabled »: 0,
« upload-slots-per-torrent »: 14
}

[/sh]

Attention ces deux lignes sont à modifier à votre sauce :

« rpc-password »: « votre_mot_de_passe »,
« rpc-username »: « votre_pseudo_de_connexion »,

On valide la configuration :

[sh]/etc/init.d/transmission-daemon reload
/etc/init.d/transmission-daemon restart[/sh]

Ci-dessous les règles à rajouter dans votre firewall si vous utilisez le même fichier de configuration que moi.

[sh]#Transmission
iptables -A INPUT -m state –state NEW -i eth0 -p tcp –dport 9091 –syn -j ACCEPT
iptables -A INPUT -m state –state NEW -i ppp0 -p tcp –dport 51423:65535  -j ACCEPT
iptables -A INPUT -p udp –dport 51423:65535  -j ACCEPT
iptables -A OUTPUT -p tcp –dport 51423:65535  -j ACCEPT
iptables -A OUTPUT -p udp –dport 51423:65535  -j ACCEPT[/sh]

Pour vous connecter à l’interface web de transmission : http://votre_domaine:9091

Etape 4 : Rappel des règles firewall à rajouter

Si vous avez un firewall rajoutez ces quelques règles dans votre fichier de configuration.

[sh]#VPN
iptables -A OUTPUT -m state –state NEW -o eth0 -p tcp –dport 1723 –syn -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT

#Transmission
iptables -A INPUT -m state –state NEW -i eth0 -p tcp –dport 9091 –syn -j ACCEPT
iptables -A INPUT -m state –state NEW -i ppp0 -p tcp –dport 51423:65535  -j ACCEPT
iptables -A INPUT -p udp –dport 51423:65535  -j ACCEPT
iptables -A OUTPUT -p tcp –dport 51423:65535  -j ACCEPT
iptables -A OUTPUT -p udp –dport 51423:65535  -j ACCEPT[/sh]

Bonus : Transdroid

Pour ceux qui possèdent une tablette ou un téléphone Android j’ai trouvé une petite application permettant la gestion de votre serveur Transmission directement sur votre Téléphone/Tablette.

Voici le lien : http://code.google.com/p/transdroid/

Une fois l’application installée sur votre système android, lancez là et cliquez sur ajouter un nouveau serveur.

Image

Type de serveur : Sélectionnez dans la liste déroulante « Transmission ».
IP ou nom de domaine : L’ip de votre serveur ou nom de domaine sans « http » ni « numéro de port ».
Utiliser l’authentification : Cochez la case.
Nom d’utilisateur : Votre nom d’utilisateur définit dans le fichier de configuration de transmission (setting.json).
Mot de passe : Votre mot de passe définit dans le fichier de configuration de transmission (setting.json).

Pour ajouter des torrents sur votre serveur directement à partir de votre système mobile Android, il vous suffit pour cela d’ouvrir votre gestionnaire de fichiers android préféré et de cliquer sur le .torrent préalablement téléchargé pour l’ajouter à votre serveur de torrent !

Personnellement, j’utilise ES Explorer comme gestionnaire de fichiers.

Voilà ce que ça donne une fois un torrent ajouté :

Image

Merci à benji1000 pour son article !

15 réflexions sur « Configuration d’ipredator et transmission »

    1. Bonjour,

      Merci beaucoup pour l’information ! C’est vrai que dans le tuto je parle de la commande pppd call cependant le script fonctionne avec la commande pon donc tu devrais pas avoir de soucis avec ça :-)

      Ophyde

  1. Bonjour,
    J’ai suivi ton, tutaux à la lettre mais quand je lance :
    /home/wolverine# /root/./configuration_vpn.sh

    J’ai ce genre de messages :
    lundi 14 mars 2016, 14:45:02 (UTC+0100)
    ppp0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trouvé

    ppp0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trouvé
    /usr/bin/poff: No pppd is running. None stopped.
    141.255.XXX.XXX
    Error: argument "IPRED" is wrong: "table" value is invalid

    Error: argument "IPRED" is wrong: invalid table ID

    Error: argument "IPRED" is wrong: invalid table ID

    lundi 14 mars 2016, 14:45:52 (UTC+0100)
    /usr/bin/poff: I could not find a pppd process for provider 'ipredator'. None stopped.
    ppp0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trou

    /root/./configuration_vpn.sh: ligne 51 : [: != : opérateur unaire attendu
    lundi 14 mars 2016, 14:46:43 (UTC+0100)
    ppp0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trouve

    Pourtant j’ai bien une connexion ppp0 quand je lance pon ipredator

    1. Salut !

      Peux-tu lancer le script en mode debug ?
      /root/./configuration_vpn.sh -x
      Laisse le tourner un peu plus 1 minute et copie le résultat ici :)

      Merci,
      Ophyde

      1. Désolé de t’avoir dérangé.
        J’ai crut qu’il fallait le lancer juste après l’avoir créé.
        Le fait de terminer ton tuto a débloqué la situation.
        Merci beaucoup.

      2. Re-bonjour,
        Finalement j’ai bien toujours quelques soucis.
        J’ai bien ajouté la nouvelle table de routage…
        Voilà ce que donne « ifconfig » :
        ens18 Link encap:Ethernet HWaddr 66:66:35:30:33:32
        inet adr:192.168.1.103 Bcast:192.168.1.255 Masque:255.255.255.0
        adr inet6: fe80::6466:35ff:fe30:3332/64 Scope:Lien
        UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
        Packets reçus:1456573 erreurs:0 :0 overruns:0 frame:0
        TX packets:798452 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 lg file transmission:1000
        Octets reçus:1544245803 (1.5 GB) Octets transmis:209303217 (209.3 MB)

        lo Link encap:Boucle locale
        inet adr:127.0.0.1 Masque:255.0.0.0
        adr inet6: ::1/128 Scope:Hôte
        UP LOOPBACK RUNNING MTU:65536 Metric:1
        Packets reçus:1462 erreurs:0 :0 overruns:0 frame:0
        TX packets:1462 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 lg file transmission:0
        Octets reçus:239896 (239.8 KB) Octets transmis:239896 (239.8 KB)

        lo:1 Link encap:Boucle locale
        inet adr:192.168.0.1 Masque:255.255.255.255
        UP LOOPBACK RUNNING MTU:65536 Metric:1

        ppp0 Link encap:Protocole Point-à-Point
        inet adr:141.255.152.114 P-t-P:188.121.241.249 Masque:255.255.255.25 5
        UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
        Packets reçus:7 erreurs:0 :0 overruns:0 frame:0
        TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 lg file transmission:3
        Octets reçus:70 (70.0 B) Octets transmis:70 (70.0 B)

        ET le mode debug « /root/./configuration_vpn.sh -x »
        mardi 15 mars 2016, 18:03:22 (UTC+0100)
        ppp0: erreur lors de la recherche d’infos sur l’interface: Périphérique non trouvé
        ppp0: erreur lors de la recherche d’infos sur l’interface: Périphérique non trouvé
        /usr/bin/poff: No pppd is running. None stopped.

        RTNETLINK answers: Network is down
        Error: an inet prefix is expected rather than « /32 ».
        mardi 15 mars 2016, 18:04:12 (UTC+0100)

          1. Oui j’utilise bien ton script 3.1
            Et j’ai tenté de laisser tourner le script toute la nuit sans véritable succès…
            J’ai tenté de simplifier les chose pour le routage et il semble que ça tienne. Vue qu’il s’agit d’un serveur dédié j’ai utilisé :
            route add -net 192.168.0.0 netmask 255.255.255.0 dev ppp0
            pour router toutes les connexions vers ppp0.

              1. J’ai pris la dernière version d’Ubuntu, j’ai laissé le script fonctionner pendant toute la nuit et il semble avoir fonctionné.
                J’ai désormais ce genre de messages qui apparaissent :
                141.255.150.XXX
                mercredi 16 mars 2016, 16:26:51 (UTC+0100)
                141.255.150.XXX
                mercredi 16 mars 2016, 16:27:21 (UTC+0100)
                141.255.150.XXX
                mercredi 16 mars 2016, 16:27:51 (UTC+0100)
                141.255.150.XXX
                mercredi 16 mars 2016, 16:28:21 (UTC+0100)
                141.255.150.XXX
                (j’utilise ipjetable)

                1. Ok tant mieux ! A la base j’avais fait ce script sous Debian il y a peut être quelques différences sous Ubuntu …
                  Tiens moi au courant si tu rencontres des soucis !

                  Ophyde

  2. Bonjour,
    Afin d’utiliser aMule sur le même serveur, j’ai fait quelques modif du fichier NAT et il semble que celà fonction :
    iptables -A PREROUTING -t nat -i ppp0 -p tcp –dport 6891:6899 -j DNAT –to 192.168.0.1
    iptables -A PREROUTING -t nat -i ppp0 -p tcp –dport 4662 -j DNAT –to 192.168.0.1
    iptables -A PREROUTING -t nat -i ppp0 -p udp –dport 6890 -j DNAT –to 192.168.0.1
    iptables -A PREROUTING -t nat -i ppp0 -p udp –dport 4672 -j DNAT –to 192.168.0.1
    iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE

    iptables -A INPUT -i ppp0 -m state –state RELATED,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i ppp0 -p tcp –dport 6891:6899 -j ACCEPT
    iptables -A INPUT -i ppp0 -p tcp –dport 4662 -j ACCEPT
    iptables -A INPUT -i ppp0 -p udp –dport 6890 -j ACCEPT
    iptables -A INPUT -i ppp0 -p udp –dport 4672 -j ACCEPT

    Voilà, je partage pour ceux que ça pourrait intéresser.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.