
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.
- 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 :
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.
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 :

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.
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.
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".
- Démarrer votre site en cliquant sur "Start" dans la page principale de configuration i2ptunnel.
- 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.

- 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").
- Entrez le nom de votre eepsite et sa clé copiée juste avant dans votre carnet d'adresses principale, puis cliquez sur "Add" pour l'ajouter.
- 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.
- Il est possible de rendre une adresse accessible sans attendre plusieurs heures en utilisant un système de redirection sur le serveur où vous avez enregistré votre eepsite. Cette méthode ne demande que quelques minutes pour être utilisable. Vous pouvez la tester vous-même avant de donner l'adresse de votre eepsite via les adresses suivantes :
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.
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.
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.















Commentaires
Bravo pour cet article bien complet!
MalokoJ'attends toujours pour te faire ta bannière ;)
Thelame@Thelame : Hehe, je t'envoie (bientôt...) un mail avec le genre de truc que j'aimerai.
Attention, je refuse les images fabriquées avec un logiciel commercial bien sûr (qui a dit PhotoShop ?). ;-)
Matthieu Patout@Matthieu Patout : Ben faudra faire avec Tralala!
ThelameSinon faudra que je te parle d'un petit (gros) soucis avec mon ftp.
ThelameMerci pour cet explicatif.
demosComme beaucoup d'autres, j'ai installé I2P pour utiliser imule... Or, I2P fournit d'autres choses bien interessantes que tu decris.
Je suis somme toute assez content d'I2psnark, et je vais tester sur l'heure le mail, et les eepsites si j'ai le courage.
Merci encore
@demos : C'est bien vrai qu'on limite souvent I2P à iMule, alors que les possibilités sont bien plus larges.
Merci de ton message !
Matthieu Patout