mardi 15 janvier 2008

P2P avec I2P

I2P = Invisible Internet Project
Echange de fichiers en réseau anonyme Info ZATAZ
I2P

Le texte suivant provient de http://www.ratiatum.com/forum/index.php?showtopic=66206
DESCRIPTION
I2P est un réseau anonyme, offrant une simple couche logicielle que les applications peuvent employer pour envoyer de façon anonyme et sécurisée des messages entre elles. La communication est chiffrée d'extrémité à extrémité. Au total il y a quatre couches de chiffrage utilisées pour envoyer un message.
Les "destinations" (serveur web, IRC, jeu, etc) sont des identifiants cryptographiques définis par une paire de clefs asymétriques (couple clef privé;clef publiques).
Une destination est (pour simplifier) l'identifiant d'un hôte et le numéro de port à joindre. Cela peut être un serveur POP ou SMTP, un serveur IRC, un serveur web, un serveur SVN, un serveur Newsgroup, ...
Le "routeur" construit des tunnels pour véhiculer les messages entrants et sortants et utilise l'algorithme Kademlia pour retrouver la "destination" demandée.
Tous les routeurs du réseau participent au transport des messages des autres routeurs et permettent ainsi de rendre indistinguable le trafic que vous générez en le noyant dans le flux constant du réseau.

Domaine application
Le poumon d'i2p est I2PTunnel. Il permet de gérer les tunnels. On peut notamment y créer les siens comme par exemple un tunnel HTTP qui pointe vers le port port 80 de votre machine pour mettre votre propre 'eepsite' et un autre vers votre serveur Jabber. A vous de choisir a qui (et donc comment) le diffuser.

Les principales applications de bases sont
* I2PSnark est un client BitTorrent (inclus dans l'installation d'I2P).
Il existe une version modifiée de Bytemonsoon pour créer votre propre tracker BitTorrent
(Et pour ceux qui ne veulent pas changer leurs habitudes Azureus possède un plug-in I2P)
* I2Phex est un client Gnutella (partage de fichier) dérivé de Phex.
* Susimail est un client de messagerie mail inclus dans l'installation d'I2P.
(Vous pouvez avoir votre adresse email de la forme ratiatum@mail.i2p et elle peut être accessible depuis l'internet à l'adresse ratiatum@i2pmail.org)
* SusiDNS permet de gérer les adresses de "eepsites" (sites web) par syndication (gestion décentralisée).
* Syndie est un gestionnaire de blog sécurisé qui permet la publication de contenu (syndication).

On pourra oublier les autres ... (i2p-bt)

Principaux ports accessibles sur votre routeur I2P en localhost

* 4444 Type HTTP : Le proxy http (squid.i2p).
Peut être utilisé par wget, Mozzila ou tout client http (et uniquement http ).
* 6668 Type IRC (Irc2p). Destination : irc.postman.i2p et irc.freshcoffee.i2p.
Serveur IRC utilisé pour accéder à Irc2p et rejoindre #i2p et #i2p-fr avec Xchat, Konversation, Chatzillia ...
* 7657 Console web. La page d'accueil de votre routeur (http://127.0.0.1:7657/index.jsp)
* 7658 Type HTTP : votre eepsite.
Accessible en local http://127.0.0.1:7658, si votre routeur est démarré.
A vous d'en publier la 'local destination' (via le portail d'Orion.i2p ou sur IRC par exemple)
* 7659 Type SMTP. Destination smtp.postman.i2p.
Voir dans I2P chez hq.postman.i2p pour vous créer un compte.
Aucun problème avec Thunderbird.
* 7660 Type POP. Destination pop.postman.i2p. Mêmes remarques.

Firewall & NAT

* Recevoir sur le port 123 en UDP
* Recevoir en UDP pour le SSU (par défaut 8887) est modifiable via console de gestion
* Recevoir en TCP (nio-tcp) (par défaut 8887).

Installation

[1] : Installation Machine Virtuelle JAVA (JVM)

Quelque soit votre OS, téléchargez le JDK Update et installez le. Il vous servira aussi pour Freenet et autres
[Sous *nix et BSD, vous avez le choix mais faut assumer ]

[2] : Vérification du fontionnement de la JVM
Tapez java -version dans un terminal, un shell ou une fenêtre DOS.
Cela doit vous renvoyer :
java version "1.5.0_06"
Java™ 2 Runtime Environment, Standard Edition
Dans le cas contraire, reprennez l'étape [1] !

[3] : Installation du routeur
Ouvrez le port 123 en UDP de votre firewall (service NTP : le routeur a besoin d'avoir une heure particulièrement précise) ainsi que le port 8887 en UDP et TCP (port par défaut pour la communication entre routeurs).

Si vous êtes dans un environnement graphique (Gnome, Kde, Windows), téléchargez i2pinstall.exe et essayez de double-cliquer sur l'installateur. Si rien ne se passe, ouvrez une fenêtre Dos ou Shell et exécutez la comande java -jar i2pinstall.exe.

Dans les deux cas, laissez vous guider ...

Dans les environnements difficiles, il est toujours possible d'installer I2P en ligne de commande en éxécutant le commande i2prouter.bat (ou 'sh ./i2prouter' sous *nix) et sans oublier le postinstall.bat ('sh ./postinstall.sh') pour purger les fichiers inutiles. Vous trouverez tous cela l'archive http://dev.i2p.net/i2p/i2p.tar.bz2.

Ensuite, ouvrez votre navigateur sur http://127.0.0.1:7657/, vous etes dans la console d'I2P.
Pour la navigation sur les eepsites (nom donné au site web dans I2P), configurer votre navigateur pour utiliser le proxy 127.0.0.1 et le port d'écoute 4444. Vous pouvez utiliser votre client IRC favori pour rejoindre les différents canaux de chat sur Irc2p (dont #i2p-fr) en utilisant le serveur 127.0.0.1 et 6668 en port d'écoute.

Pour aller plus loin
Introducing I2P<
How does it work ?
La mailinglist