Le meilleur comme le peer
Le partage de fichier, alias P2P, peut être à la fois un formidable grenier pour un particulier mais aussi un cauchemard pour un réseau. Nous verrons ici les techniques de base du P2P afin de le contrôler à votre guise.Le réseau edonkey
Un vaste réseau existe en Europe (surtout France, Espagne, Allemagne) basé sur des serveurs edonkey et des clients edonkey.Les serveurs edonkey acceptent les connections de clients désireux d'échanger des fichiers.
Les serveurs sont créés par des Internautes volontaires.
Et de nombreux logiciels clients existent :
Les clients officiels eDonkeyHybrid : http://www.edonkey2000-france.com/index.php?pagetype=downloads qui peuvent être mis en oeuvre sous Windows, Linux ou Mac OS.
Un client libre est également sorti : emule, voir http://www.emule-france.com/
Ce client écrit en C++ permet à chacun de l'améliorer à sa guise, comme emulePLUS par exemple.
Une version d'emule est disponible sous Linux, elle est appelé lmule
xmule est un autre projet assez ambitieux prenant la suite de lmule. Vois le site: http://unthesis.web.aplus.net/index.php ou la page de téléchargement:http://sourceforge.net/projects/xmule
. Il faut noter que xmule fait actuellement l'objet d'une tentative de procès.
Sous Linux ou BSD, si aucun paquet n'est disponible, il faudra recompiler les sources en ayant préalablement installé toutes les dépendances. Par exemple, sous Debian GNU/Linux Unstable, il suffit de faire:
apt-get install xmuleD'autres clients comme Mldonkey ou amule (voir http://amule.sourceforge.net) existent aussi.
Comment faire avec son firewall Linux?
Bref, passons concrètement à la configuration d'un firewall Linux qui autorise une machine du réseau à se connecter au réseau edonkey.On obtiendra ainsi un High ID, chiffre donné par les serveurs edonkey.
Sous Windows comme sous Linux, un client edonkey a besoin d'avoir certains ports "translatés" pour marcher correctement.
Donc avec un firewall Linux fonctionnant avec iptables, il faut configurer un script permettant d'utiliser emule sans problème.
Ici la machine utilisant emule a l'IP 192.168.1.53
Voilà le script que vous devez créer, ou ajouter (intelligemment) à celui existant:
#!/bin/sh IPT=/sbin/iptables EXTIF='ppp0' EXTIP='votre_IP' #si vous n'avez pas d'IP fixe, faire un script IPDONKEY='192.168.1.53' edonkey) echo "Demarrage service edonkey..." #accepter le trafic edonkey $IPT -A INPUT -p tcp --dport 4662 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -p udp --dport 4665 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -p udp --dport 4672 -m state --state ESTABLISHED,RELATED -j ACCEPT #${IPTABLES} -A INPUT -p tcp --dport 4711 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A PREROUTING -t nat -p tcp -d ${EXTIP} --dport 4661:4662 -j DNAT --to-dest ${IPDONKEY}:4661-4662 $IPT -A FORWARD -p tcp -i ${EXTIF} -o ${INTIF} -s 0.0.0.0/0 -d ${IPDONKEY} --dport 4661:4662 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A PREROUTING -t nat -p udp -d ${EXTIP} --sport 4665 -j DNAT --to-dest ${IPDONKEY}:4665 $IPT -A FORWARD -p udp -i ${EXTIF} -o ${INTIF} -s 0.0.0.0/0 -d ${IPDONKEY} --dport 4665 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A PREROUTING -t nat -p udp -d ${EXTIP} --dport 4672 -j DNAT --to-dest ${IPDONKEY}:4672 $IPT -A FORWARD -p udp -i ${EXTIF} -o ${INTIF} -s 0.0.0.0/0 -d ${IPDONKEY} --dport 4672 -m state --state ESTABLISHED,RELATED -j ACCEPT echo "service demarre" ;; stop) echo "Extinction complete du firewall.." $IPT -F INPUT $IPT -F FORWARD $IPT -P INPUT ACCEPT $IPT -t nat -F POSTROUTING $IPT -t nat -F PREROUTING echo "extension terminee" ;; restartdonkey) echo "redemarrage du service edonkey" $0 stop $0 edonkey ;; *) echo "Usage: $0 {edonkey|stop|restartdonkey}" exit 1 esac exit 0
Il suffit de sauver ce script sous le nom nom_script_firewall là où vous voulez, ensuite:
# chmod uga+x nom_script_firewallPuis l'on démarrera ce script grâce à:
# ./nom_script_firewall edonkeyEt on le stoppera (attention, cela stopppera tous les services firewall de la machine!!):
# ./nom_script_firewall stop
Il faut préciser qu'avec le client edonkey, il faut cocher la case 'activer le port UDP 4672'
Sous Linux, où tourne le client edonkey, netstat donnera
# netstat -npl | grep mule tcp 0 0 0.0.0.0:4662 0.0.0.0:* LISTEN 31716/lmule udp 0 0 0.0.0.0:4665 0.0.0.0:* 31716/lmule udp 0 0 0.0.0.0:4672 0.0.0.0:* 31716/lmule unix 2 [ ACC ] STREAM LISTENING 904069 31716/lmule /home/reg/.lmule/muleconnVous devez avoir ce résultat que vous utilisiez lmule ou xmule.
Ces techniques permettent ainsi de configurer un firewall/routeur (notamment sous Linux) pour laisser une machine se connecter au reseau edonkey. Notez, que l'on peut utiliser ces principes pour interdire l'accès à edonkey.