Das Invisible Internet Project (I2P) ist ein freies Softwareprojekt mit dem Ziel, ein anonymes bzw. pseudonymes und dezentrales Netzwerk zu schaffen.
Ähnlich wie TOR baut I2P ein Darknet auf, welches parallel zum normalen Internet existiert.
Die Kommunikation bei I2P ist an beiden Enden vollständig verschlüsselt. Jedes Datenpaket durchläuft dabei vier separate Verschlüsselungsschichten. Die verschlüsselten Daten werden über eine Vielzahl von I2P-Routern auf anderen Rechnern geleitet, bevor sie schließlich den Zielrechner erreichen. Dieses Prinzip der anonymen Weiterleitung führt dazu, dass sowohl die Datenrate als auch die Latenz im Vergleich zum normalen Internet reduziert sind. Dieser Geschwindigkeitsverlust ist jedoch der notwendige “Preis” für die deutlich erhöhte Anonymität.
Implementationen
Stand 2025 stehen zwei Implementationen von I2P zur Verfügung:
i2prouter
(Java suite, Standard) - benutzerfreundliche und interaktive Web-Benutzeroberfläche, welche viele Funktionen beinhaltet (z.B. E-Mail-Client, Torrent-Client, Webserver).i2pd
(C++, Alternative) - benötigt kein Java und kommt mit weniger Systemressourcen aus, ist dafür aber auch “nur” ein nackter Router.
i2prouter
Die Standardimplementation benötigt ein Java-Runtime-Environmnent, genauer gesagt läuft sie nur mit openjdk
, nicht aber mit openjdk/jre
Unter Archlinux erfolgt die Installation per:
yay -S i2p-bin jdk-openjdk
Anschließend kann noch sichergestellt werden, dass die korrekte Java-Version verwendet wird:
archlinux-java status
archlinux-java set JAVAVERSION
Nach der Installation kann der Router per systemd
gestartet werden.
sudo systemctl start i2prouter.service
sudo systemctl enable i2prouter.service
Ist der Service gestartet, steht das Webinterface unter http://127.0.0.1:7657 bereit und führt euch durch die ersten Schritte. Ihr könnt die Standardeinstellungen so belassen und einfach immer auf “Weiter” klicken. Alle Einstellungen können später wieder geändert werden. Habt ihr euch durchgeklickt, begrüßt euch die Startseite eures I2P Routers.
i2pd
Der I2P Daemon (i2pd) ist eine alternative Implementation, die ohne Java auskommt. Bei dieser Variante müssen alle Dienste (E-Mail, Torrent, Webserver) “von Hand” eingerichtet werden. Ich persönlich nutze diese Version auf Servern, um Transitknotenpunkte für das I2P-Netzwerk bereitzustellen.
Die Installation erfolgt unter Archlinux per
sudo pacman -S i2pd
und der Router kann ebenfalls per systemd
gesteuert werden
sudo systemctl start i2pd.service
sudo systemctl enable i2pd.service
Ist der Service gestartet, steht unter http://127.0.0.1:7070 eine Willkommensseite bereit. Ebenso ist ein Proxy für das Surfen im I2P-Darknet implementiert, der Anfragen über http://127.0.0.1:4444 entgegennimmt (siehe unten).
i2p Webseiten (eepsites)
Ähnlich wie bei TOR können im I2P-Netz hidden services eingerichtet werden. Webseiten heissen in I2P eepsites und haben die Topleveldomain *.i2p
.
Um eine solche Seite ansurfen zu können, müssen 2 Aufgaben erfüllt sein:
Wir benötigen einen Browser, der den Proxydienst des I2P-Routers für Webanfragen benutzt. Bei beiden Implementationen (
i2prouter
undi2pd
) lauscht dieser Proxy auf Porthttp://127.0.0.1:4444
. Grundsätzlich empfiehlt es sich, für die Nutzung von I2P einen eigenen Browser zu benutzen. Zumindest solltet ihr ein eigenes Browserprofil für I2P verwenden. Hierbei ist die Firefox-Extension Zero Omega Switch empfehlenswert. Ist diese installiert, kann ihr “Auto-Switch” so eingestellt werden, dass nur Anfragen an*.i2p
-URLs an den Proxy weitergereicht werden. So können “normales” Web und I2P Darknet nebeneinander genutzt werden.Hierfür lege ich mir in den Einstellungen der Extension ein Profil “i2p proxy” an, welches auf Port
4444
verweist…… unter “Auto switch” wähle ich “Host wildcard” und trage das Pattern
*.i2p
ein. Dieses zeigt dann auf mein Profil “i2p proxy”.
*.i2p
werden an den Proxy weitergeleitetDamit der Auto-Switch funktioniert, sollte in der Adresszeile des Browsers nach dem *.i2p
ein Slash verwendet werden, z.B. http://planet.i2p/.
- Wir benötigen die “richtige” Adresse der Webseite. Das I2P-Netz ist dezentral organisiert. Das bedeutet, dass jede Installation ihr eigenes DNS-Adressbuch aufbauen muss. Die meisten
*.i2p
-Webseiten sind daher nach einer frischen Installation noch gar nicht erreichbar, weil der Router nicht weiss, welche “echte” Adresse sich hinter dem Namen verbirgt. Eine typische I2P-Adresse lautet
gOSToOvSkRewCcwl5mWXbnn1IElEBlGH92vAe0TI8C-Z4tC1DVMNdNlcnUTRcB7znjFTP0vQ42dIDs1dN2Co1kSJ~nXaef4QUS-Ou5kDogPLwJxI1Hj0djktSLKWJSL40FdQvWZ1rwQ7dnaRSyOm8lrgo~HbVlh682CM1JHmEGapQaYiF6zaP4uOpeTFlkk6wEYevQ3Pn4pctJD4XElVLrS2slEsbzim3O5FzFrIVYyskEbnpyMpyffwvsq0R~RF6bhDhQ15rAmJuju91WZ8iUlORQKipougCwBP9DxQ5zdXQWxxhSJ~h604dKhxncetl0skdErLHjwhSI2gl4o66juP9wsjaczBZo4RSil2uWMWApMgvan~9FSRtxriI5f6-X2fTopWa9KlUwMCBTiqYAy9bIdVVhS-xSdFhM~IGPEZ-rlIscdb3Z5Gh1osoO-~SglUcOpj7E-8XjjvsmLkUu9VBxscdD4p3aiyaHGSljkd3WPvlfaOBmqejqEgEWwqBQAEAAEAAA==
Solche Adressen sind jedoch viel zu lang und unpraktisch. Daher wird ein Hashwert aus der Adresse generiert, über den die Seite einfacher aufgerufen werden kann – die sogenannte b32-Adresse. Im obigen Beispiel lautet die entsprechende b32-Hash-Adresse:
http://nytzrhrjjfsutowojvxi7hphesskpqqr65wpistz6wa7cpajhp7a.b32.i2p/
Dies ist schon eher handlebar und ähnelt den *.onion
-Adressen des TOR-Netzes. Wenn ihr diese Adresse in euren Browser eingebt, könnt ihr die Seite direkt ansurfen. Schöner wäre natürlich, wenn die Seite über eine “menschenlesbare” Adresse erreichbar wäre, z.B. http://notbob.i2p/. Um dies zu erreichen, muss ein lokaler DNS-Eintrag im Adressbuch des eigenen I2P-Routers erfolgen. Hierfür stehen im I2P-Netz so genannte “Helperlinks” zur Verfügung, die das Eintragen vereinfachen. Um die URL notbob.i2p
mit der Adresse nytzrhrjjfsutowojvxi7hphesskpqqr65wpistz6wa7cpajhp7a.b32.i2p
zu verknüpfen, könnt ihr einfach diesem Link folgen:
http://notbob.i2p/?i2paddresshelper=nytzrhrjjfsutowojvxi7hphesskpqqr65wpistz6wa7cpajhp7a.b32.i2p.
Adressbuch
Die Adresse für notbob.i2p
kann so im Adressbuch gespeichert werden.
(bitte nicht wundern, warum im Screenshot “produnis.i2p” steht. Ich recycle das Bild von weiter unten…)
Dabei besteht das Adressbuch aus 3 Teilen:
- Router Adressbuch
- Lokales Adressbuch
- Privates Adressbuch
Alle Bücher können über das Webinterface unter http://127.0.0.1:7657/dns eingesehen werden.
Router Adressbuch
Das Router-Adressbuch ist eine automatisch verwaltete Liste, die von eurem I2P-Router gepflegt wird. Hier solltet ihr nichts von Hand ändern. Es gibt Dienste im I2P-Netz, welche “fertige” Adressbucheinträge verteilen. Hat man solche Dienste aboniert, füllt sich das eigene Router Adressbuch mit Adressen und Links, die von den Diensten verteilt werden. Ihr könnt eure Abos unter dem Link http://127.0.0.1:7657/susidns/subscriptions einsehen und erweitern. Folgende Einträge solltet ihr dort ergänzen, um die bekanntesten eesites erreichen zu können:
http://i2p-projekt.i2p/hosts.txt
http://identiguy.i2p/hosts.txt
http://notbob.i2p/hosts.txt
http://reg.i2p/hosts.txt
http://skank.i2p/hosts.txt
http://stats.i2p/cgi-bin/newhosts.txt
Wenn ihr auf “Speichern” geklickt habt, könnt ihr sehen, wie sich euer Router Adressbuch nach und nach mit Einträgen füllt. Jetzt solltet ihr z.B. diese eesites erreichen können:
lokales Adressbuch
Solltet ihr - woher auch immer - eine neue b32-Adresse erhalten haben, könnt ihr mittels Helper-Link (oder auch “von Hand”) einen neuen Eintrag in eurem lokalen Adressbuch erzeugen. Die Einträge im lokalen Adressbuch stellen euer persönliches Verzeichnis dar und werden nicht an andere I2P-Router weitergegeben.
privates Adressbuch
Das private Adressbuch speichert sensiblere Adressen, die ihr getrennt von eurem lokalen Adressbuch speichern wollt. Es wird genutzt, um hochsensible Ziele oder Dienste zu speichern, die ihr nicht versehentlich teilen möchtet. Einträge im privaten Adressbuch werden weder verteilt noch sind sie von anderen I2P-Komponenten zugänglich.
Unter dem Link http://127.0.0.1:7657/webmail ist der Mail-Client SusiMail erreichbar. In I2P lauten die Standardmailadressen USERNAME@mail.i2p
. Ihr könnt euch beliebig viele Mailadressen kostenlos anlegen. Klickt dafür auf “Konto anlegen” oder folgt dem Link http://hq.postman.i2p/?page_id=16. Die Adresse von postman.i2p
ist bereits im Router-Adressbuch gespeichert, sofern ihr die oben genannten Dienst abonniert habt.
Torrent
Mit I2Psnark steht euch unter http://127.0.0.1:7657/torrents ein Torrent-Client zur Verfügung. Das Datenverzeichnis liegt standardmäßig unter /opt/i2p/.i2p/i2psnark/
. Wenn ihr in dieses Verzeichnis eine Torrentdatei ablegt, wird sie automatisch dem Client hinzugefügt. Natürlich geht das auch über das Webinterface.
Der bekannteste Tracker ist unter https://tracker2.postman.i2p/ erreichbar. Die Seite steht dauerhaft unter “heavy use”, weshalb es sein kann, dass ihr zwei bis drei Anläufe nehmen müsst, um draufzukommen. Dies gilt generell für alle eesites: wenn sie mal nicht erreichbar ist, wartet einfach 60 Sekunden und versucht es erneut. Dabei wird ein neuer Verbindungstunnel aufgebaut, und die Seiten sind dann meist erreichbar.
Ich habe bei mir noch die Bandbreit für die Torrents angepasst. Klickt hierfür auf der Torrentseite unten auf “Konfiguration”. Meine Bandbreite für Uploads habe ich auf 2048
, und für Downloads auf 4096 Kbps
gestellt.
Das I2P-Netz ist eher langsam, so dass es eine Zeit dauert, bis größere Torrents vollständig sind, aber: steter Tropfen höhlt den Stein.
eigenen Torrent erstellen
Ich habe es nicht geschafft, einen eigenen Torrent über das Webinterface zu erzeugen. Daher habe ich auf mktorrent
zurückgegriffen. So konnte ich eine Torrentdatei für mein R-Buch anlegen.
Der allgemeine Aufruf lautet:
mktorrent -a http://tracker2.postman.i2p/announce.php -o MeineDaten.torrent MeineDaten
In meinem Fall also:
mktorrent -a http://tracker2.postman.i2p/announce.php -o grSchlarmann2024--Angewandte-Uebungen-in-R.torrent grSchlarmann2024--Angewandte-Uebungen-in-R.pdf
Die Verwendung des Trackers ist übrigens nicht notwendig. Die Torrents verteilen sich auch ohne Tracker per DTH.
Ich habe beide Dateien in mein i2psnark-Verzeichnis verschoben und die Rechte wie folgt angepasst:
# kopieren
sudo cp grSchlarmann2024* /opt/i2p/.i2p/i2psnark/
# Rechte anpassen
sudo chown i2p:i2p -R /opt/i2p/.i2p/i2psnark/*
Im Webinterface sehe ich nun, dass der Torrent erfolgreich hinzugefügt wurde.
Sobald ich auf den Startknopf (siehe roter Pfeil) klicke, beginnt die Verteilung an alle Interessierten. Das Webinterface meldet ebenfalls, dass der Torrent gestartet wurde.
Über das blaue Ausrufezeichen kann ich mir den Torrent genauer anschauen. Hier finde ich auch den Magnet-Link, den ich verteilen kann. Jeder, der diesen Link seinem I2P-Torrent hinzufügt, kann die Datei herunterladen.
In meinem Fall lautet der Link magnet:?xt=urn:btih:2937cd3471893db9a23ba8ce9cc4ac78efbde4d5&tr=http://tracker2.postman.i2p/announce.php, fügt ihn gerne zu Testzwecken eurem Client hinzu :-)
Webserver
Ebenfalls enthalten ist der Webserver Jetty, mit welchem ihr eure eigene eesite bereitstellen könnt. Am besten eigenen sich hierfür statische Seiten, die z.B. mittels HUGO gebaut wurden.
Legt zunächst eure HTML-Dateien samt Zubehör in den Ordner /opt/i2p/.i2p/eepsite/docroot/
.
Im Webinterface findet ihr den Eintrag “Versteckte Dienst verwalten” unter http://127.0.0.1:7657/i2ptunnelmgr. Dort seht ihr unter “I2P Versteckte Services” den Eintrag “I2P webserver”. Klickt darauf, um die grundlegenen Informationen eurer eesite anzugeben. Bei mir sieht das so aus:
Jetzt muss der Webserver an zwei Stellen aktiviert werden. Geht zunächst nach http://127.0.0.1:7657/config und wählt dort den Reiter “Teilnehmer”.
Hier muss der Startknopf gedrückt werden. Optional könnt ihr den Haken setzen, so dass der Server beim Neustart automatisch mitgestartet wird.
Nun läuft der Webserver Jetty, aber der I2P-Tunnel zum Webserver ist noch nicht aktiviert. Klickt hierfür wieder auf http://127.0.0.1:7657/i2ptunnelmgr und dort auf den Start-Knopf.
Der Status sollte nun von rot auf grün welchseln.
Ebenfalls wurde ein Helperlink erzeugt, der nun fleissig weiterverteilt werden kann. Bei mir lautet der klassische I2P-DNS-Dreisatz: http://produnis.i2p/ (b32) (Helper)
Speichert mich gerne in euer lokales Adressbuch :-)
Ich wünsche euch viel Spaß beim Ausprobieren und Herumexperimentieren. Eine echt coole Seite ist übrigens http://i2puzzle.i2p/ (helper), falls ihr gerne Rätsel löst…
Weblinks
- https://de.wikipedia.org/wiki/I2P
- https://geti2p.net/de/
- https://i2pd.website/
- https://github.com/zero-peak/ZeroOmega
- https://wiki.archlinux.org/title/I2P