i2plogo.png


Présentation et fonctionnement

« Les "destinations" (serveur Web, IRC, jeu, etc) sont des identifiants cryptographiques (et non des adresses IP) définis par une paire de clefs asymétriques (couple clef privée/clef publique). Une destination est l'identifiant d'un hôte et le numéro de port à joindre. Cela peut être un serveur POP, serveur SMTP, un serveur IRC, un serveur Web, un serveur SVN, un serveur newsgroup, etc...

Le routeur construit des tunnels pour véhiculer les messages entrants et sortants. Pour créer un tunnel, le routeur demande à l'un des pairs auquel il est connecté de former ce tunnel, ce pair va ensuite contacter à son tour un autre pair en lui demandant d'être le maillon suivant de la chaîne de pairs formant le tunnel. Pour joindre une destination cryptographique — et donc un pair — il faut savoir à quelle "sortie" de tunnel s'adresser, c'est pour résoudre ce problème qu'une certaine classe de routeurs particulier a été ajoutée au réseau. Il s'agit des « Floodfill » ces derniers tiennent à jour une liste des correspondances entre les tunnels et les destinations. De cette façon quand un routeur souhaite joindre une destination, il demande au Floodfill quel est le tunnel auquel il doit s'adresser pour contacter cette destination. Le nombre de routeur Floodfill augmentera donc au fur et à mesure que le réseau grandira. Heureusement tout est automatique, si le réseau a besoin de nouveaux Floodfill, les routeurs remplissant les conditions de vitesse, stabilité et nombre de connections le deviendront automatiquement.

Tous les routeurs du réseau participent au transport des messages des autres routeurs et permettent ainsi de rendre non distinguable le trafic que vous générez en le noyant dans le flux constant du réseau. Il est très complexe pour un attaquant de déterminer si les données vous étaient vraiment destinées ou si elle ne faisaient que transiter par vous.

Le poumon d'I2P est I2PTunnel, il permet de gérer les tunnels entrants et sortants. On peut notamment y créer les siens comme par exemple un tunnel HTTP qui pointe vers le port 80 de votre machine pour héberger votre propre 'eepsite' et un autre vers votre serveur Jabber ou POP3. »

Source : Wikipédia


Installation

Installer Java

I2P utilise Java, ce qui garantit une bonne portabilité au projet. Il est donc indispensable qu'une version de Java soit présente sur votre machine. Pour savoir si Java est installé et dans quelle version, utilisez la commande suivante :

java -version

Qui retournera (par exemple) si Java est installé :

java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) Server VM (build 11.3-b02, mixed mode)

Si aucune version de Java n'est présente, il faut l'installer :

sudo apt-get install sun-java6-jre

Si plusieurs versions de Java sont disponibles sur votre machine, il est possible de sélectionner la version par défaut avec la commande :

sudo update-alternatives --config java

Vous aurez alors à choisir parmi les versions disponibles.

Il est également possible de se tourner vers OpenJDK en remplacement de Java :

sudo apt-get install openjdk-6-jdk
Installer I2P

Deux méthodes sont possibles :

  • La première consiste à télécharger l'exécutable puis à le lancer avec Java. Simple et pratique, cette méthode fonctionne sous GNU/Linux, Windows et MacOS :
wget http://mirror.i2p2.de/i2pinstall_0.7.8.exe
java -jar i2pinstall-0.7.8.exe

Elle est entièrement graphique et vous demandera juste où installer les fichiers.

Installation-i2p.png

  • L'autre méthode consiste à télécharger les sources puis les compiler avec Ant, à installer préalablement si besoin :
sudo apt-get install ant

Ensuite allez chercher les sources sur www.i2p2.de/download.html, puis décompressez-les avant de compiler avec ant :

tar xjvf i2psource_0.7.8.tar.bz2
ant pkg

Et enfin installez I2P avec cette commande :

sudo java -jar install.jar

Vous passerez alors par l'interface graphique, très simple d'emploi.

Le démarrage de votre routeur I2P se réalise via l'exécutable i2prouter situé dans le répertoire d'installation. Les commandes sont les suivantes pour le démarrage et l'arrêt :

/chemin/d'installation/d'I2P/i2prouter start
/chemin/d'installation/d'I2P/i2prouter stop

Notez qu'il est plus simple de couper le routeur directement dans l'interface graphique de gestion. Voir juste en dessous. ↓


Configuration

L'interface graphique de gestion de votre routeur I2P est une interface web disponible à l'adresse 127.0.0.1:7657. Voici à quoi ressemble cette page lors de la première connexion avec la version 0.7.7 :

config-debut.png

La francisation s'améliore au fil des versions, c'est d'ailleurs très sensible entre les versions 0.7.7 et 0.7.8.

Notez que le démarrage du routeur est long, particulièrement la découverte d'autres pairs et donc l'incorporation de votre routeur au réseau. Il faut facilement compter plusieurs dizaines de minutes, voir deux ou trois heures, avant que celui-ci trouve un bon nombre de pairs et utilise la totalité de la bande passante allouée. Soyez donc patient lors des premiers démarrages avant de penser que votre routeur ne fonctionne pas bien.

Les ports TCP et UDP

Pour rappel, I2P utilise les ports locaux suivants (non-exhaustif) :

  • 4444 Type HTTP : Le proxy http.
  • 6668 Type IRC : Envoi vers irc.postman.i2p et irc.freshcoffee.i2p.
  • 7657 La page d'accueil de votre routeur.
  • 7658 Type HTTP : votre eepsite par défaut avec Jetty.
  • 7659 Type SMTP. Envoi vers smtp.postman.i2p. Créez un compte sur hq.postman.i2p.
  • 7660 Type POP. Envoi vers pop.postman.i2p.

Par exemple, indiquer à votre navigateur web d'utiliser comme proxy 127.0.0.1:4444, ou indiquer à votre client IRC d'utiliser le serveur 127.0.0.1:6668 permet de passer par I2P.

Les ports ci-dessous doivent être accessibles depuis l'extérieur pour faire communiquer votre routeur avec le reste du réseau I2P :

  • UDP 123.
  • UDP 8887.
  • TCP 8887.

Il faut donc impérativement ouvrir ces ports sur votre MachinBox et les rediriger vers la machine hébergeant votre routeur I2P. La liste complète des ports est disponible sur www.i2p2.de/faq.html#ports

La bande passante

La première chose importante à faire est d'adapter la bande passante de votre routeur I2P à votre connexion. Les valeurs sont à indiquer sur la page 127.0.0.1:7657/config.jsp accessible en cliquant sur "I2P INTERNALS" du panneau de gauche.

config-bandwidth.png

Attention, on vous demande ici une valeur en KBps :
1 Ko = 1 KB = 8 Kb / 1 kilo octet = 1 kilo byte = 8 kilo bites.

La valeur "Share" représente le pourcentage du débit alloué au routeur qui sera utilisé pour relayer le trafic du réseau I2P. Trafic qui ne vous est pas destiné, mais qui permet de faire fonctionner le réseau. Aussi il est bon de mettre un pourcentage important ici, au moins supérieur à 50 %, pour garantir le bon fonctionnement du réseau. Ce pourcentage devrait être proche de 100 % si votre connexion a un débit supérieur à 1 Mo/s.

Limiter le nombre de tunnels participants

Ces tunnels sont essentiels au réseau I2P, mais un trop grand nombre sur votre machine peut entraîner une consommation importante du temps processeur et un ralentissement néfaste. Il est donc recommandé de limiter le nombre de tunnels en fonction du débit de votre connexion suivant les règles suivantes :

i2p-nombretunnel.png

La limite est ensuite à ajouter sur la page de configuration avancée disponible à l'adresse 127.0.0.1:7657/configadvanced.jsp :

router.maxParticipatingTunnels=2000
Désactiver UPnP

I2P supporte l'UPnP depuis la version 0.7.5, mais si vous préférez faire les choses à la main, il faut ouvrir les ports TCP et UDP 8887 ainsi que le port UDP 123, puis désactiver l'UPnP dans l'interface de configuration.

config-upnp.png

Les donnés concernant l'état de l'UPnP, si activé, sont visibles sur la page 127.0.0.1:7657/peers.jsp#upnp.

Utiliser Privoxy

I2P met à disposition un proxy à l'adresse 127.0.0.1:4444. Il est possible d'indiquer à Privoxy de passer automatiquement par ce proxy pour naviguer sur les eepsites avec la ligne suivante à ajouter dans la section 5.2 du fichier de configuration de Privoxy :

forward .i2p localhost:4444

Si vous utilisez également le réseau Tor, bien plus rapide actuellement qu'I2P pour naviguer sur le web, placez les lignes dans cette ordre :

forward-socks4a / localhost:9050 .
forward .i2p localhost:4444

Le trafic utilisera alors Tor pour les URLs classiques et les .onion, mais passera par I2P pour naviguer vers les URLs se terminant en .i2p.

Lancement automatique au démarrage

Il suffit de créer avec la commande ln un lien symbolique du fichier "i2prouter" situé dans le répertoire d'installation d'I2P puis de l'ajouter avec update-rc.d aux daemons à lancer au démarrage :

sudo ln -s /chemin/d'installation/d'I2P/i2prouter /etc/init.d/i2prouter
update-rc.d i2prouter defaults

Le routeur sera alors lancé automatiquement à chaque démarrage de la machine.

Mettre un mot de passe sur la console de gestion

Il faut pour cela ajouter la ligne ci-dessous dans la section de configuration avancée de la console de gestion, disponible à l'adresse localhost:7657/configadvanced.jsp :

consolePassword=motdepasse

C'est particulièrement utile si vous avez un réseau de plusieurs machines et utilisateurs et désirez accéder à la configuration de votre routeur via une machine distante, sans rendre cette dernière disponible pour tous.

Les mises à jour

Il est possible de paramétrer le comportement des mises à jour sur la page 127.0.0.1:7657/configupdate.jsp de l'interface d'administration de votre routeur.

Si vous choisissez comme méthode de mise à jour : télécharger, vérifier et redémarrer, elles seront totalement transparente pour vous. Sinon, il vous sera indiqué qu'un mise à jour est disponible et si vous voulez l'installer.


Les mails

I2P fournit Susimail, un service et client qui permet d'envoyer et recevoir anonymement des emails à travers le réseau I2P à des contacts utilisant eux-même I2P, ou à des adresses emails non-I2P.

La création d'une adresse, sous la forme "utilisateur@mail.i2p", est à faire sur hq.postman.i2p. Cette adresse pourra être utilisée tels quels sur le réseau i2p, est sera accessible sous le nom "utilisateur@i2pmail.org" depuis n'importe qu'elle adresse mail.

Un webmail, directement configuré pour récupérer les mails de votre compte sur hq.postman.i2p, est disponible à l'adresse 127.0.0.1:7657/susimail/susimail. Il est également possible de configurer un client mail classique comme ThunderBird pour se connecter aux serveurs POP et SMTP de votre compte. Pour cela il faut utiliser les adresses suivantes dans le compte mail :

  • Serveur SMTP : 127.0.0.1:7659
  • Serveur POP : 127.0.0.1:7660

Pensez à ne pas tester vos adresses mails I2P en envoyant un message à une de vos adresses non-I2P, pour ne pas compromettre l'anonymat de vos adresses I2P.


IRC

Il est possible d'utiliser IRC avec I2P en configurant votre client pour se connecter sur le port 6668 de l'adresse 127.0.0.1.

i2p-irc.png

Deux serveurs sont disponibles : irc.postman.i2p et irc.freshcoffee.i2p, mais il faut reconnaître qu'il n'y a pas grand monde en cette fin 2009...


Créer un eepsite

Une instance du serveur HTTP Jetty est lancée en même temps que votre routeur i2p. Un site par défaut est consultable à l'adresse 127.0.0.1:7658/, il contient une page d'explication pour mettre en place votre propre site. Les fichiers contenus dans le répertoire /home/utilisateur/.i2p/eepsite/docroot/ seront visibles.

Voici la procédure à suivre pour mettre en place un eepsite :

  • Choisissez un nom pour votre eepsite (quelquechose.i2p). N'utilisez pas de majuscules. Vous pouvez vérifier la disponibilité de nom dans le carnet d'adresses ou dans le fichier i2p/hosts.txt. Indiquez maintenant le nom de votre eepsite dans la page de configuration de ce dernier, en remplacement du nom par défaut "mysite.i2p". Pensez aussi à cocher la case "Auto Start" pour que votre site démarre en même temps que votre routeur I2P. Pensez bien à sauvegarder en cliquant sur "Save".

i2p-eepsite-config1.png

i2p-eepsite-demarrer.png

  • Votre eepsite sera maintenant visible sous "Local Destinations" dans la partie gauche de la console de votre routeur I2P. Votre eepsite est maintenant en fonctionnement.

i2p-eepsite-running.png

  • Retournez sur la page de configuration de votre eepsite et copiez la clé à coté de "Local destination". Attention à bien tout copier, la clé est très longue (elle se termine par "AAAA").

i2p-eepsite-address.png

  • Dans votre navigateur, entrer le nom de votre eepsite (quelquechose.i2p) et vous devriez tomber sur la page de votre serveur. Libre à vous maintenant de modeler votre eepsite comme bon vous semble.
  • Une fois le site prêt pour la publication, il est temps de l'ajouter à un carnet d'adresses hébergé par un site comme stats.i2p. Un formulaire pour entrer les informations est disponible sur cette page, il vous faut indiquer une fois de plus le nom de votre site et sa clé très longue. N'oubliez pas de cliquer sur "add a key" pour valider l'enregistrement, puis vérifier que votre site est bien enregistré. Les serveurs de carnets d'adresses échangent leurs listes d'adresses régulièrement, donc votre site devrait être disponible pour tout le monde dans quelques heures simplement en indiquant "quelquechose.i2p" dans un navigateur.

Une fois que ça marche pour vous, le site sera accessible à tous sans avoir à attendre l'échange des listes entre serveurs.


Utiliser Bittorrent sur I2P

Un module installé par défaut permet de télécharger des torrents en passant par I2P. Il se nomme i2pSnark et se base sur le client Snark. Ce module est disponible à l'adresse 127.0.0.1:7657/i2psnark.

L'ajout de fichiers torrents est possible soit via l'interface web, soit via le dépôt de fichiers dans le répertoire /home/utilisateur/.i2p/i2psnark. Dans ce dernier cas le téléchargement démarrera automatiquement au bout de quelques minutes.

i2psnark-add.png

Attention, l'usage de torrent via I2P n'est fonctionnel que pour des fichiers torrents prévus pour le réseau I2P, il n'est donc pas possible de télécharger n'importe quel torrent provenant de votre tracker favori. Les conséquences de cette limite sont le faible nombre de torrents disponibles, mais surtout le faible nombre de seeders/leechers et la lenteur des échanges. I2P n'est donc pas encore une solution très efficace pour l'échange de fichier torrent, mais les choses s'améliorent avec l'arrivée de nouveaux utilisateurs.

i2p-i2psnark-dl.png

Actuellement les trackers I2P sont peu nombreux, voici les deux principaux :

Un client bittorrent complet est disponible sur i2p-bt.postman.i2p/. Il permet de ne pas passer par l'interface web pour les téléchargements de fichiers torrents. Il en existe d'autres, ainsi qu'un plugin pour Azureus, que je n'ai jamais utilisés.


Utiliser iMule

Un page dédiée à l'installation et l'utilisation d'iMule sera bientôt disponible.

  • Dernière modification le : 16 décembre 2009 à 09:31