I2P Darknet

Neben TOR gibt es auch noch das i2p-Projekt, welches ebenfalls ein anonymes und dezentrales Darknet aufbaut.
i2p
ubuntuusers
Autor:in

Joe Slam

Veröffentlichungsdatum

15 Jan. 2025 - 20:40

Geändert

11 Feb. 2025 - 15:49

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:

  1. i2prouter (Java suite, Standard) - benutzerfreundliche und interaktive Web-Benutzeroberfläche, welche viele Funktionen beinhaltet (z.B. E-Mail-Client, Torrent-Client, Webserver).
  2. 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.

I2P Webinterface

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:

  1. Wir benötigen einen Browser, der den Proxydienst des I2P-Routers für Webanfragen benutzt. Bei beiden Implementationen (i2prouter und i2pd) lauscht dieser Proxy auf Port http://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… Ein neues Profil “i2p proxy” verweist auf Port 4444

    … unter “Auto switch” wähle ich “Host wildcard” und trage das Pattern *.i2p ein. Dieses zeigt dann auf mein Profil “i2p proxy”.

URLs mit der Endung *.i2p werden an den Proxy weitergeleitet
Wichtig

Damit der Auto-Switch funktioniert, sollte in der Adresszeile des Browsers nach dem *.i2p ein Slash verwendet werden, z.B. http://planet.i2p/.


  1. 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…)

Helperlink ins Adressbuch speichern

Dabei besteht das Adressbuch aus 3 Teilen:

  1. Router Adressbuch
  2. Lokales Adressbuch
  3. 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

eingetragene Abo-Dienste

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.

E-Mail

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.

Torrent starten Sobald ich auf den Startknopf (siehe roter Pfeil) klicke, beginnt die Verteilung an alle Interessierten. Das Webinterface meldet ebenfalls, dass der Torrent gestartet wurde.

Torrent ist gestartet

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

Torrentinformationen

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:

Meine eesite

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

Reiter “Teilnehmer” (links)

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.

Tunnel per Startknopf starten

Der Status sollte nun von rot auf grün welchseln.

Helper-Adresse kopieren 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 :-)

Helperlink ins Adressbuch speichern

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…