RaspberryPI Torrent station Test

Dopo i primi giorni di entusiasmo , i test su PI si erano ridotti, la scheda con un sistema desktop andava lenta per lo scopo , le versioni multimediali  ( xbian e rasbmc ) sono ancora instabili e acerbe così mi invento un nuovo impiego , la torrent station.

La soluzione attuata mi permette di lasciare acceso il PI anche tutto il giorno, i consumi ridotti a confronto di un PC desktop giocano a suo favore , come anche la connessione flat che pago anche quando non uso , e la possibilità di gestire rtorrent a distanza risulta comoda.

Partiamo dall’ installazione dell’ ultima versione di raspbian : 2012-10-28-wheezy-raspbian.zip

Dopo aver formattato in fat32 copiamo l’immagine sulla SD :

# dd bs=4M if=~/2012-09-18-wheezy-raspbian.img of=/dev/sdd

attenzione ai percorsi  & more info http://elinux.org/RPi_Easy_SD_Card_Setup.

Per il primo boot collego monitor e tastiera per la configurazione di base .

Le prime operazioni comprendono :

  • estensione del file system a tutta la scheda SD
  • configurazione della tastiera
  • cambio della password dell’user pi
  • set timezone
  • memory split dove imposto il minimo alla parte video (16)
  • abilitare SSH

Per alleggerire il sistema e fare un pò di allenamento senza grafica , decido di rimuove parecchio materiale , tra cui xorg, lxde,midori,pcmanfm e altro che non mi servirà.

Fatto tutto riavvio il PI eliminando il collegamento monitor e tastiera e comincio a spippolare via SSH , ora che abbiamo una shell su un canale aperto provvediamo a metterla in sicurezza un minimo.

Andiamo a fare alcune modifiche alla configurazione di SSH in /etc/ssh/sshd_config, modificando la porta in uso , volendo si può migliorare la sicurezza inserendo anche una chiave .

Per aumentare la sicurezza mettiamo a guardia della porta usata per la connessione fail2ban, che andremo a modificare in /etc/fail2ban/jail.conf cambiando (se abbiamo modificato) la porta in ssh usata :

[ssh]
enabled  = true
 port     = numero_porta_usata
 filter   = sshd
 logpath  = /var/log/auth.log
 maxretry = 2

riavviamo SSH  e fail2ban  e dopo esserci scollegati, riconnettiamoci per verificare che tutto sia a posto .

Dato che lo scopo è il download , aggiungiamo uno spazio aggiuntivo con una chiavetta USB da 8 GB che formattiamo in EXT2 , alquanto obsoleto come FS ma senza il journaling aumenta la durata della penneta USB limitando le scritture , volendo è possibile usare EXT4 ma senza journaling.

La potenza dell’alimentatore non è sufficente e la USB non viene riconosciuta , inserisco così un HUB USB alimentato al PI ed ora la chiavetta si automonta in /media/USB0.

Procediamo con l’installazione di rtorrent , seguando l’articolo dell’ e-zine numero 6 : server P2P

sudo aptitude install rtorrent screen rtgui gawk
mkdir -p /media/usb0/torrent/{session,incomplete,watch,complete}

completiamo generando il file di configurazione /home/pi/.rtorrent.rc , che configureremo con le nostre impostazioni personalizzate, in vostro aiuto c’è l’articolo sull’ e-zine che riporta un’ esempio oppure il valido /usr/share/doc/rtorrent/examples/rtorrent.rc.

Se non vogliamo usare rtgui che si occupa solo di fornire una gui via web ( comprende l’installazione di apache2 e libapache2-mod-php5) possiamo usare anche rtorrent nella versione ncurses da shell , io ho preferito  “demonizzarlo” e usare la GUI creando il file /etc/init.d/rtorrent .

In questo modo rtorrent resta sempre attivo e non necessita di essere sempre connessi al PI.

Per rendere più sicure le connessioni ho aggiunto peer guardian linux ora alla verisone 2.2.2, e dato che non è nelle repository me lo sono compilato, prestando attenzione a non generare la versione completa di gui , per fare il tutto ho preso spunto da questo articolo.

Installo prima i pacchetti necessari :

aptitude install libnetfilter-queue-dev libdbus-1-dev libdbus-1-dev libdbus-glib-1-dev firehol ufw zlib1g-dev
wget http://sourceforge.net/projects/peerguardian/files/PeerGuardian%20Linux/2.2.2/pgl-2.2.2.tar.gz/download
tar -xvf pgl-2.2.2.tar.gz
cd pgl-2.2.2/
./configure --prefix=/usr --without-qt4 --disable-dbus --enable-lowmem --sysconfdir=/etc --localstatedir=/var
make
make install

NOTA : al termine del’installazione ho perso i permessi su /tmp , risolto con

$sudo chmod 1777 /tmp

due note riguardo il configure

For a slick installation you can build without the GUI and turn off dbus support: –without-qt4 –disable-dbus

Especially for embedded devices (like router or NAS box) you might disable storing of textual IP range descriptions: –enable-lowmem

Modifichiamo /etc/pgl/blocklits.list  abilitando le liste che vogliamo e in /etc/pgl/pglcmd.conf apriamo le connessioni per poter lavorare :

WHITE_TCP_OUT="http https smtp ssh torrent"
 WHITE_TCP_IN="ssh torrent"
 WHITE_UDP_IN=" torrent"
 WHITE_UDP_OUT=" torrent"
 WHITE_IP_OUT="ip_specifici"
 WHITE_IP_IN="ip_specifici"

attenzione che ssh deve essere sostituito con la porta impostata in precedenza , mentre per torrent occorre inserire le porte aperte sia tcp che udp , gli ip_specifici sono quelli che conosciamo buoni ma sono compresi in qualche lista come ad esempio una connessione esterna da Ip statico che é in una blacklist.

sudo pglcmd update
sudo pglcmd start

Qui una lista dei comandi :

pi@raspberrypi ~ $ sudo pglcmd
 PeerGuardian Linux 2.2.2
pgl is licensed under the GNU General Public License v3, or (at your option)
 any later version. This program comes with ABSOLUTELY NO WARRANTY. This is
 free software, and you are welcome to modify and/or redistribute it.
Usage: pglcmd OPTION
 Options:
 start
 stop
 start_wd
 stop_wd
 stop_quick
 restart
 reload
 update
 force-restart
 force-reload
 force-update
 status
 test
 stats
 reset_stats
 email_stats
 show_config
 search

Già così è possibile utilizzarlo in locale , ma se volgiamo gestire la cosa dall’esterno la cosa si fa più interessante , nel mio caso specifico ho apportato ancora alcune modifiche legate a scelte personali.

Qui la mia blocklist

http://list.iblocklist.com/lists/bluetack/dshield
http://list.iblocklist.com/lists/bluetack/edu
http://list.iblocklist.com/lists/bluetack/forum-spam
http://list.iblocklist.com/lists/bluetack/level-1
http://list.iblocklist.com/lists/bluetack/level-2
http://list.iblocklist.com/lists/bluetack/level-3
http://list.iblocklist.com/lists/bluetack/microsoft
http://list.iblocklist.com/lists/bluetack/proxy
http://list.iblocklist.com/lists/bluetack/spider
http://list.iblocklist.com/lists/bluetack/spyware
http://list.iblocklist.com/lists/bluetack/web-exploit
http://list.iblocklist.com/lists/bluetack/webexploit-forumspam
http://list.iblocklist.com/lists/dchubad/faker
http://list.iblocklist.com/lists/dchubad/hacker
http://list.iblocklist.com/lists/dchubad/pedophiles
http://list.iblocklist.com/lists/dchubad/spammer
http://list.iblocklist.com/lists/peerblock/rapidshare
http://list.iblocklist.com/lists/spamhaus/drop
http://list.iblocklist.com/lists/tbg/bogon
http://list.iblocklist.com/lists/tbg/business-isps
http://list.iblocklist.com/lists/tbg/general-corporate-ranges
http://list.iblocklist.com/lists/tbg/hijacked
http://list.iblocklist.com/lists/tbg/primary-threats
http://list.iblocklist.com/lists/tbg/search-engines

In locale funziona tutto , ora proviamo a collegarci dall’esterno.

Qui sorge un problema perchè il PI e collegato a una connessione con IP dinamico, così mi è capitato di accendere tutta la strumentazione al mattino , ma non ho avuto la possibilità di visualizzare il mio IP per potermi collegare dall’ esterno.

La soluzione mi viene incontro grazie a diversi suggerimenti di skizzhg e dalla lettura dell’ articolo del compare gnomob sempre sull’ e-zine numero 6.

Ho bisogno di inviarmi il mio IP per posta , così da poterlo leggere dall’esterno e tentare la connessione. così proseguo installando un servizio per inviare la posta (SMTP).

aptitude install esmtp
touch .esmtprc

modifico nel seguente modo

# .esmtprc
 # permessi: 600
 #
 identity mia@mail.it
 hostname out.smtp.it:25
 helo "mailsrv"

e per finire aggiusto i permessi

chmod 600 ~/.esmtprc

Ora ho bisogno di qualcosa che invii una mail attraverso l’SMTP e Installo il resto che è necessario.

#aptitude install mutt w3m

Creo uno script myip.sh in grado di leggere il mio IP e inviarmelo via e-mail.

#!/bin/bash
w3m -dump http://ifconfig.me/ip | mutt -s myIP ciccio@pasticcio.it
exit

lo inserisco in crontab (crontab -e ) che parta all’avvio del PI e volendo per verifica anche a certi orari

@reboot /dir/myip.sh
0 9,13,17 * * * /dir/myip.sh

Se tutto funziona al primo avvio dovremmo ricevere una mail con il nostro IP necessaria per collegarci con SSH .

NOTA : alla fine ho installato postfix dato che mi gira le mail di sistema provenienti da fail2ban, pgl e altro ancora .

A seconda del sistema operativo usato apriamo una sessione usando l’IP attuale della connessione e specificando la porta esatta per SSH .

Per problemi legati alla connessione verificate di avere le porte aperte sul router e(NAT), oppure che non ci siano firewall su quella porta , magari provando la prima volta con PGL spento per non filtrarvi da soli.

Per sicurezza teniamo la porta 80 usata per la comunicazione HTTP chiusa alla comunicazione con l’esterno , altrimenti chiunque digiti l’ indirizzo nostro IP/rtgui si trovera la gui di RT, poi usiamo la trasmissione SSH Tunnelling (Port Forwarding) con un browser che gestisca i proxy .

NOTA : se si usa localmente  rtgui non è necessario il tunnelling SSH , l’IP e nella nostra rete locale.

Nel caso in questione mi trovo su Win ad usare kitty che è un clone di putty , dopo aver coonfigurato la porta aggiungo il tunnel.

NOTA : la porta per il tunnel è a vostra scelta

02_putty

Se invece siamo su una postazione con Linux possiamo usare il comando da console :

ssh -g -p 7456 -D 8888 user@xxx.xxx.xxx.xxx

dove :

-g Allows remote hosts to connect to local forwarded ports (share the socks5 proxy within the LAN)

-p Connection port

-D Specifies a local “dynamic” application level port forwarding

seguito dall’ utente per la connessione@IP del nostro PI

😀

Dando per scontato che è stato già installato apache2 e libapache2-mod-php5 e il server web è attivo e funzionante avviamo rtorret

#/etc.init.d/rtorrent start

apriamo firefox/iceweasel  e nelle impostazioni facciamo alcune modifiche.

01_putty

bene !ora navigherete nella bvostra rete locale  inserendo nella barra di navigazione l’IP del nostro PI.

E se fate un controllo , dal vostro browser uscirete con l’IP della connessione del raspberry.

A questo punto : http://ip.del.nostro.pi/rtgui

Se tutto è a posto potremmo gestire il nostro PI dall’esterno mentre scarica in tutta sicurezza.

😉

Per trasferire i file su PC ho provato diverse strade.

SAMBA : un pò lento con l’impegno di molta CPU , il servizio lo attivo quando necessario ma un poco lento

FTP : anche se in locale il trasferimento risulta lento , anche se superiore come velocità a samba

UMOUNT : alla fine  (dopo aver terminato rtorrent)  smonto la periferica USB.

#umount /media/usb0

metto la chiavetta sul PC e traserisco i dati utili a tutta velocità , appena rimetto la chiavetta USB sul raspberryPI  questa si automonta in /media/usb0 e posso riavviare rtorrent.

🙂

UPDATE : Alla fine ho trovato una soluzione più pratica e elegante grazie a una guida su debianizzati.org , ora sfruttando la connessione SSH monto la directory e passo in modo veloce e sicuro i dati che mi servono , sia in locale che da fuori.

Maggiori informazioni sulla configurazione e uso di sshfs le trovate qui :

http://guide.debianizzati.org/index.php/SSHFS:_montare_una_risorsa_remota_sfruttando_FUSE_ed_SSH

Per rendere il tutto più comodo è possibile farsi un bel Alias 😉

Anche se ho omesso molti passaggi che ho dato per scontato , questo riassunto riporta la mia esperienza positiva.

2 risposte a “RaspberryPI Torrent station Test”

  1. Il tuo articolo l’ho letto ma non dice molto.
    Il solo fatto di scaricare sulla SD non mi piace.
    Sulla sicurezza non ho trovato notizie.

    rimuovo il link che hai inserito nel commento perchè di inutilità provata.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*