Articles plus anciens

Une blocklist est une liste d’adresse IP dans un format pré-défini pouvant être utilisée par divers logiciels (notamment les clients torrents) pour bloquer l’accès du dit logiciel aux utilisateurs des ces IPs (= liste noire d’adresses IP).

Transmission supporte évidemment les blocklists, mais la liste utilisée n’est pas paramétrable, Transmission télécharge une liste de niveau 1 sur son URL mirroir

De plus la mise à jour de la liste n’est pas automatique. Sur le client lourd (transmission GTK) il existe un bouton permettant de mettre à jour la liste, mais évidemment sur le démon il n’ya pas de bouton.

Nous allons donc voir comment dans un premier temps mettre à jour la liste lorsque l’on utilise le démon puis ensuite comment utiliser des listes personnalisées et les mettre à jour automatiquement…

Dans les 2 cas il faut que le paramètre blocklist-enabled soit positionné à true dans votre fichier settings.json

 

Pour mettre à jour la liste de blocage Transmission lorsqu’on utilise le démon il faut passer par le commande transmission-remote du paquet transmission-cli :

#! /bin/sh
username='username'
password='password'
transmission-remote --auth $username:$password --blocklist-update
sudo /etc/init.d/transmission-daemon restart

A la fin on re-démarre le démon pour qu’il prenne ne compte la nouvelle liste, si comme moi vous utilisez sudo et que vous exécutez ce script avec votre utilisateur il faudra autoriser la commande de re-démarrage dans votre sudoer (voir en fin de éème solution)

Il suffira alors de mettre ce script dans une tache cron et le tour est joué…

Rque : comme ce script contient les login et mot de passe en clair de transmission RPC il conviendra de restreindre ses droits d’accès (chmod 700 script.sh)

 

Je n’ai pas testé ce script puisque j’utilise la deuxième solution qui consiste à gérer la mise à jour et l’origine de la liste de blocage :

#!/bin/bash
# Télécharge des blockslist à partir de http://iblocklist.com/lists.php
# et les intégre dans le répertoire de Transmission
# répertoire de travail
 
# répertoire de travail / temporaire
travail=$HOME/tmp/blocklists
# réperoire où Transmission stock les fichiers blocklist
transmissionBlocklist=$HOME/.config/transmission-daemon/blocklists
 
echo -e "******** Compilation d'une Bloclist pour Transmissionbt ***********"
 
if [ -e $travail ]; then
    echo -e "Répertoire de travail $travail "
else
    mkdir $travail
fi
rm $travail/*
 
#récupération des fichiers http://iblocklist.com/lists.php
echo -e "\n********* Téléchargements des listes de blocage *******************"
wget http://list.iblocklist.com/?list=bt_level1 -O $travail/bt_level1.gz
wget http://list.iblocklist.com/?list=bt_level2 -O $travail/bt_level2.gz
 
#décompression
echo -e "\n********* Décompression des listes téléchargées *******************"
gunzip -v $travail/*.gz
 
#concaténer les fichiers
echo -e "\n********* Création d'une seule liste sans redondance des données **"
echo -e "traitement en cours ...Patientez SVP..."
cd $travail
list1=$(ls) && sort -u $list1 >> blocklist &&
cd -
 
#Déplacement du fichier blocklist dans le répertoire de Transmission
echo -e "\n********* Déplacement de la Blocklist *****************************"
if [ -d $transmissionBlocklist ] ;then
    echo -e "Copie de sauvegarde de l'ancien fichier"
    mv -f $transmissionBlocklist/blocklist $travail/blocklist.bak
    echo -e "Déplacement du nouveau fichier dans le répertoire de Transmission"
    mv -f $travail/blocklist $transmissionBlocklist
fi
 
# Rechargement de Transmission
echo -e "Rechargement de la configuration de Transmission"
sudo /etc/init.d/transmission-deamon reload
ls $transmissionBlocklist/blocklist > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo -e "\n*********** Opération terminée ************************************"
else
    echo -e "\n *** KO **** !! Le fichier bloklist est vide !! *** KO *** "
fi

Le script télécharge les listes voulues (ici les niveaux 1 et 2), les dézippe et les concatène en excluant les doublons, la liste résultante est ensuite copié dans le répertoire utilisé par Transmission et le démon est rechargé.

Comme indiqué précédemment pour que la commande de rechargement du démon puisse être exécuté via sudo sans demande de mot de passe il faut modifier le sudoer ce qui se fait en lançant la commande

 

sudo visudo

 

Et en ajoutant une ligne du type :

 

mon_utilisateur ALL= NOPASSWD: /etc/init.d/transmission-daemon

 

De même que pour la première solution on mettra ce script dans une tache cron (à la semaine par exemple)

 

Pour finir quelques mots sur les listes de blocage.

Transmission supporte les formats P2P Plaintext (Nom:IP_Début:IP_Fin) et DAT (format binaire non éditable)

On pourra trouver des listes de blocage P2P sur les sites suivants :

On recommande la liste de iblocklist de niveau 1 (IP impliqués dans la lutte contre le piratage)  en général et la liste de niveau 2 (IP des sociétés en général, des laboratoires et proxy) éventuellement.

 

Edit : 31/05/2011 : correction la variable d’environnement $USER n’est pas connu dans CRON, utilisation de $HOME à la place (mieux en plus)

Sources :

Image par Lou Ect sous CC BY-NC-ND

25 mai 11

Si vous utilisez la commande mv pour déplacer un fichier d’un système de fichiers Linux vers un système de fichiers Windows (FAT par exemple) vous aurez un message du type :

mv: impossible de préserver l'appartenance pour « nom_du_fichier »: Permission non accordée

Je n’ai pas trouvé d’options dans le man de mv pour ignorer les permissions lors du déplacement et avoir ces erreurs dans les logs de mon script m’embêtait un peu, voici donc la solution trouvée :

mv nom_du_fichier destination 2>&1 | grep -v préserver

Je re-dirige la sortie des erreurs vers la sortie standard (2>&1) et j’ignore les messages contenant le mot-clé « préserver »

Ce n’est pas l’idéal mais c’est la seule solution que j’ai trouvé pour l’instant (si quelqu’un connait mieux je suis preneur)

Commentaires fermés

Je fais les choses à l’envers, présentant une configuration précise de Transmission (Exécuter Transmission avec l’utilisateur de son choix et déplacer son fichier de configuration vers $HOME) avant son installation et sa configuration générique, mais bon…

Le but est ici d’installer le client torrent Transmission et de le paramétrer sur une machine headless (pas d’interface graphique, pas d’écran, accessible par SSH) comme le Dockstar

 

Installation

Pour installer Transmission, simple comme d’habitude :

sudo aptitude install transmission-daemon transmission-cli

Le paquet transmission-daemon installe le démon (service) comme son nom l’indique et met à disposition l’interface Web, transmission-cli n’est à proprement parler pas nécessaire pour le fonctionnement de transmission, il met à disposition l’utilitaire transmission-remote très pratique pour interagir avec Transmission par script (pratique pour automatiser certaines taches que je décrirais dans une autre article)

 

Paramétrage

Tout d’abord avant d’attaquer la configuration proprement dite de Transmission, on va créer les répertoires destinés à accueillir et classer les fichiers.

Chez tout est rangé dans un répertoire /data/downloads/torrents, ce dernier contient 4 sous-répertoires :

  • watch : répertoire surveillé par Transmission, tout fichier .torrent placé ici sera automatiquement ajouté à Transmission et le téléchargement débutera
  • downloading : répertoire contenant les fichiers en cours de téléchargement (fichiers renommés avec l’extension .part car incomplets)
  • seeding : les fichiers une fois finis de téléchargés seront déplacés ici et y resteront tout le temps qu’il seront en partage (jusqu’a ce que le ratio soit atteint)
  • complete : les fichiers téléchargés ayant atteint le ratio de partage seront déplacés ici (pas réalisé par Transmission mais par script, objet d’un autre article)

 

Le paramétrage du démon Transmission se fait dans un fichier settings.json.

Par défaut sous Debian, Transmission est lancé avec un utilisateur debian-transmission mais il est peut être intéressant de changer cet utilisateur par son propre utilisateur et de déplacer le fichier de configuration de /etc/transmission-daemon vers le répertoire $HOME de cet utilisateur, pour cela se reporter à Exécuter Transmission avec l’utilisateur de son choix et déplacer son fichier de configuration vers $HOME

Avant d’éditer le fichier de configuration il est important d’arrêter le démon, ce dernier écrivant sa configuration à son arrêt vous risqueriez de perdre votre paramétrage.

Éditez votre fichier de configuration /etc/transmission-daemon/settings.json ou $HOME/.config/transmission-daemon/settings.json ce dernier au format JSON contient un ensemble de pair clé/valeur :

{
 "alt-speed-down": 50,
 "alt-speed-enabled": false,
 "alt-speed-time-begin": 540,
 ...
 "upload-limit-enabled": 0,
 "upload-slots-per-torrent": 4
}

La description des ces paramètres est disponible sur le Wiki de Transmission (EditConfigFiles – Transmission), mais voici ma traduction de ceux que j’utilise classés par catégories :

Répertoires :

Conformément à la structure de répertoire décrite ci-dessus on réalise le paramétrage suivant.

  • incomplete-dir : « /data/downloads/torrents/downloading »
  • incomplete-dir-enabled : true
  • download-dir : « /data/downloads/torrents/seeding »
  • watch-dir : « /data/downloads/torrents/watch »
  • watch-dir-enabled : true

incomplete-dir indique le répertoire où sont stockés les fichiers en cours de téléchargement et incomplete-dir-enabled active cette fonctionnalité (sinon ces fichiers sont stockés dans le répertoire download-dir)

download-dir contient le répertoire où sont stockés les fichiers en cours de partage et terminés (nous verrons dans un autre article comment déplacer les fichier terminés vers un autre répertoire)

watch-dir contient le répertoire scruté pour ajout automatique de téléchargement par dépôt de fichier .torrent (fonctionnalité activé par watch-dir-enabled)

Quelques paramétrages associés :

  • start-added-torrents : true
  • trash-original-torrent-files : true
  • rename-partial-files : true

start-added-torrents, indique qu’il faut directement démarrer le téléchargement de torrents ajoutés.

trash-original-torrent-files supprime les fichiers .torrent du répertoire watch-dir après qu’ils aient été pris en compte

rename-partial-files indique que les fichiers encours de téléchargement doivent avoir une extension .part. Pas utile dans mon cas puisque ces derniers sont déjà dans une répertoire à part, mais cela ne fait pas de mal.

Réseau :

  • peer-port : xxx
  • peer-port-random-high : 65535
  • peer-port-random-low : 49152
  • peer-port-random-on-start : false

peer-port contient le port d’écoute de Transmission, il faut que ce port soit ouvert sur votre routeur, peer-port-random-on-start indique que Transmission ne choisi aps son port de façon aléatoire et écoute donc toujours sur le port peer-port. Dès lors les paramètres peer-port-random-high et peer-port-random-low sont inutiles

Partage :

  • ratio-limit : 1.0000
  • ratio-limit-enabled : true

Transmission partage le fichiers jusqu’à ce que le ratio (quantité téléchargée / quantité partagée) paramétré dans ratio-limit soit atteint (ratio-limit-enabled : activation de la fonctionnalité)

Si on laisse ratio-limit-enabled: false, Transmission ignorera le paramètre ratio-limit et partagera le fichier infiniment (enfin jusqu’à ce que vous l’enleviez)

Un ratio de 1 est un minimum, car il indique que vous partagez autant que vous téléchargez

Accès distant :

  • rpc-authentication-required : true
  • rpc-bind-address : « 0.0.0.0″
  • rpc-enabled : true
  • rpc-password : « xxxx »
  • rpc-port : 9091
  • rpc-username : « xxxx »
  • rpc-whitelist : « 127.0.0.1″
  • rpc-whitelist-enabled : false

RPC veut dire Remote Procedure Call autrement dit cela permet l’accès à distance à un service. Dans le cas de Transmission cela paramétre l’accès au démon par l’interface Web (fournis par défaut avec le démon) mais aussi à tous les autres services distants (par exemple client lourd distant transmission-remote-gui)

On active le service avec rpc-enabled et on active la connexion par login / mot de passe (rpc-authentication-required / rpc-username / rpc-password)

Concernant rpc-password on met le mot de passe en clair et lors de la prise en compte du fichier de configuration par Transmission ce dernier crypte le mot de passe

rpc-port défini le port d’écoute, ainsi si on saisie dans la barre d’adresse de son navigateur l’adresse IP du serveur hébergeant Transmission sur la port 9091 on arrive sur l’interface Web.

Enfin il est possible de paramétrer une liste d’adresse IP autorisé à se connecter en RPC avec les options rpc-whitelist-enabled et rpc-whitelist. Je n’utilise pour l’instant pas cette option.

Vitesses :

Sur Transmission il est possible de gérer 2 modes de vitesse (normal et alternatif : alt)  et ce pour le téléchargement et l’upload.

La bascule entre ces 2 modes est aussi paramétrable selon les jours et les heures.

Concrètement on peut déterminer d’avoir ou pas de limite de vitesse en mode normal et d’autres limites de vitesse (ou pas) dans le mode alternatif.

Dans l’exemple suivant en mode normal il n’y aucune limite de vitesse ni en téléchargement speed-limit-down-enabled  (dès lors speed-limit-down est inutile) ni en upload speed-limit-up (speed-limit-up-enabled inutile).

Par contre on active le mode alternatif (alt-speed-enabled) et sa planification (alt-speed-time-enabled).

Entre 9h du matin (alt-speed-time-begin, 540 nombre minute depuis minuit = 9*60) et 23h (alt-speed-time-end, 1380 = 23*60 minutes) tous les jours de la semaine (cf. Scheduling) on limite le téléchargement (alt-speed-down) et l’upload (alt-speed-up)

Dès lors la bande passante est préservée durant les heures « d’éveil » rendant possible/agréable la navigation sur Internet tandis que durant la nuit Transmission télécharge à fond….

  • speed-limit-down : 100
  • speed-limit-down-enabled : false
  • speed-limit-up : 40
  • speed-limit-up-enabled : false
  • alt-speed-down : 50
  • alt-speed-enabled : true
  • alt-speed-time-begin : 540
  • alt-speed-time-day : 127
  • alt-speed-time-enabled : true
  • alt-speed-time-end : 1380
  • alt-speed-up : 50

On verra dans un prochain article comment rendre ce système de mode normal / alternatif encore plus performant en ne le planifiant pas mais en basculant entres les 2 modes selon le besoin…

Sécurité :

  • blocklist-enabled : true

Active le blocage des adresse IP, Transmission télécharge à intervalle régulier la liste des adresses IP de niveau 1 appartenant à des sociétés et des associations et les bloquent.

Inutile quand on a rien a se reprocher…

 

Autres paramétrages non utilisés :

  • bind-address-ipv4 : « 0.0.0.0″
  • bind-address-ipv6 : « :: »
  • dht-enabled : true
  • encryption : 1
  • lazy-bitfield-enabled : true
  • lpd-enabled : false
  • message-level : 2
  • open-file-limit : 32
  • peer-limit-global : 240
  • peer-limit-per-torrent : 60
  • 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
  • script-torrent-done-enabled : false
  • script-torrent-done-filename : «  »
  • upload-slots-per-torrent : 4
  • umask : 18 (en décimal = 22 en octal)

Il y a même des paramètres qui sont obsolètes car remplacés par d’autres

  • download-limit : 100
  • download-limit-enabled : 0
  • upload-limit : 100
  • upload-limit-enabled : 0
  • max-peers-global : 200

 

Sources :

24 mai 11

Article court pour présenter ma dernière trouvaille, un outil pour surveiller sa bande passante, pour connaitre son trafic réseau : Bandwith Monitor NG

Pour l’installer il suffit d’ajouter le paquet bwm-ng et pour le lancer on lance la commande du même nom (bwm-ng)

 

 

 

Très pratique dans mon cas pour connaitre la vitesse de transfert réseau entre mon Dockstar et ma Freebox lors d’une grosse copie que je trouvais particulièrement lente (et pour cause 2.5 Mo/s)

Commentaires fermés

Fidèle à Deluge depuis mon arrivé sur Linux, je commence à lui faire des infidélités avec Transmission pour des raisons de dépendances (transmission-daemon : 8110 kB / deluge-common deluged : 48.9 MB).

Sur mon Dockstar j’ai donc installé Transmission (je réaliserais un article complet bientôt).

Par défaut sous Debian, Transmission tourne avec le compte debian-transmission donc tous les fichiers téléchargés auront comme propriétaire ce compte ce qui peut poser des problème d’accès.

On peut palier à ce problème en jouant avec les groupes et les droits sur les fichiers / répertoires mais je préfère faire tourner Transmission avec mon utilisateur directement.

Ci-dessous le cheminement et les explications qui m’ont permis de trouver la configuration à appliquer, si vous voulez directement aller aux paramétrages, c’est ici que cela se passe.

 

Transmission est lancé (toujours sous Debian) via un script d’init qui contient le nom de l’utilisateur devant lancer le service :

cat /etc/init.d/transmission-daemon | grep 'USER'
debian-transmission

En première approche on se dit donc qu’il suffit de changer cette variable avec son utilisateur, mais en réalité ce n’est pas si simple car notre utilisateur n’a pas les droits d’accès sur le fichier de configuration de Transmission :

ls -l /etc/transmission-daemon/
 total 8,0K
 -rw-r--r-- 1 root                root                 302 18/10/2010 00:16 README.json
 -rw------- 1 debian-transmission debian-transmission 2,1K 15/05/2011 22:36 settings.json

On peut en 2ème pensée se dire que l’on change les droits sur ce fichier pour que son propriétaire soit notre utilisateur. Cela marcherait mais c’est crade…

Le plus élégant consiste à faire en sorte que Transmission utilise un autre fichier de configuration qui serait placé dans le HOME de notre utilisateur, d’autant que sur le Wiki de Transmission il est indiqué que le démon va lire sa configuration dans $HOME/.config/transmission-daemon

Tout d’abord pourquoi Transmission va lire sa configuration dans /etc/transmission-daemon/ ?

Si on lance htop, on constate que Transmission est lancé avec une option –config-dir :

/usr/bin/transmission-daemon --config-dir=/var/lib/transmission-daemon/info/

Si on va voir dans le répertoire sus-mentionné on constate alors que le fichier setting.json est un lien symbolique vers celui présent dans /etc/transmission-daemon/ :

ls -la /var/lib/transmission-daemon/info/
lrwxrwxrwx 1 root                root                  38 15/05/2011  22:19 settings.json -> /etc/transmission-daemon/settings.json

Voila pour le pourquoi, maintenant comment modifier ce comportement ?

Le script d’init étant bien fait il utilise un fichier default qui est inclus et qui défini une variable OPTIONS qui contient l’argument –config-dir.

Si on édite le fichier default de Transmission et que l’on supprime la variable OPTIONS, Transmission retrouvera son comportement par défaut et cherchera sa configuration d’abord dans le HOME de l’utilisateur puis ensuite dans /etc/transmission-daemon.

 

Donc pour changer l’utilisateur par défaut et « déplacer » son fichier de configuration voici les étapes du paramétrage.

Stopper Transmission :

sudo /etc/init.d/transmission-daemon stop

Éditer le fichier default du script d’init :

sudo vim /etc/default/transmission-daemon

Mettre la ligne OPTIONS en commentaire :

#OPTIONS="--config-dir $CONFIG_DIR"

Éditer le script d’init

sudo vim /etc/init.d/transmission-daemon

Changer l’utilisateur démarrant le service en modifiant la ligne USER :

USER=mon_utilisateur #debian-transmission

Copier le fichier de configuration vers le HOME de notre utilisateur (et mettre à jour les droits) :

mkdir -p $HOME/.config/transmission-daemon
sudo cp /etc/transmission-daemon/settings.json $HOME/.config/transmission-daemon/
sudo chown mon_utilisateur:mon_utilisateur $HOME/.config/transmission-daemon/ -R

Modifier éventuellement la configuration

Re-démarrer Transmission

sudo /etc/init.d/transmission-daemon start

 

Source :

Photo par Jesper2cv sous CC BY-ND