I2p — это сеть со специализацией на анонимности внутрисетевых ресурсов, этим она отличается от сети tor, основной задачей которой являются не внутренние ресурсы, а построение безопасного доступа к интернету. Зная об этих двух особенностях, люди могут гораздо эффективнее работать в обеих сетях.

В i2p ты можешь заниматься множеством вещей: посещать и создавать сайты, форумы и торговые площадки, принимать почту, чатиться и скачивать торренты, и многое многое другое. Программа i2pd способна работать с большим числом программ и сервисов.

При этом стоит запомнить — программа помогает вам достичь анонимности, однако сама анонимность зависит от вас. От ваших действий, предпринятых в сети и за ее пределами, настроек используемого оборудования и рабочих программ. Данная инструкция поможет настроить i2pd и начать работать в сети.

Собрать i2pd под Debian/Ubuntu очень просто:
Для начала вам понадобится скачать несколько пакетов. Откройте терминал и напишите:
sudo apt-get install build-essential

После этого скачайте библиотеки:
sudo apt-get install \
libboost-chrono-dev \
libboost-date-time-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-thread-dev \
libssl-dev

Установите пакеты для работы с проектами гит:
sudo apt-get install git

Установите cmake:
sudo apt-get install cmake

Скопируйте свежий образ из github (не забудьте поставить перед ссылкой https://):
git clone github.com/PurpleI2P/i2pd.git

Перейдите в папку:
cd i2pd/build

Начинаем сборку:
cmake -DCMAKE_BUILD_TYPE=Release

В случае успеха:
make

И наконец:
sudo make install

Программа окажется там же, в папке build (это файл i2pd). Вы можете перенести его куда вам угодно.
Запустите файл:
i2pd


Если по экрану побежали строчки, программа начала работать. Данное окно будет оставаться открытым до окончания сеанса работы с I2P. Вы можете открыть теперь новую вкладку для продолжения работы с терминалом.

Откройте любой браузер, который вы решили предназначить для работы с i2p. Моя рекомендация — Mozilla Firefox или любой другой gecko-браузер из-за гибкости рабочих настроек, однако вы можете использовать тот браузер, который нравится лично вам.

Наберите в браузере следующий адрес: 127.0.0.1:7070. По этому адресу вы найдете web-консоль со статистикой работы в сети.

В консоли вы увидите разные вещи, например адрес папки с рабочими файлами программы. В доступном релизе 2.3.0 разработчики решили что это будет путь следующего содержания: /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.i2pd/ Для дальнейших настроек зайдите в эту папку.

В этой папке нам понадобятся два файла. Если они еще не были созданы, пожалуйста, создайте их вручную. Первый файл — файл подписок. В нем содержатся адреса, по которым i2pd будет обновлять имеющийся у вас список сайтов с общесетевым.

Название файла: subscriptions.txt

Содержимое файла:
inr.i2p/export/alive-hosts.txt
stats.i2p/cgi-bin/newhosts.txt
i2p-projekt.i2p/hosts.txt
i2host.i2p/cgi-bin/i2hostetag
no.i2p/export/alive-hosts.txt
rus.i2p/hosts.txt


Второй файл, который нам понадобится, очень интересен — это файл тоннелей. I2PD представляет из себя виртуальный роутер, буквально, коробку, к которой можно подключиться через множество портов. Так мы можем настраивать наши программы и сервисы на компьютере на работу с программами и сервисами сети.

Каждый тоннель придерживается одной и той же структуры.

[IRC] — это наше название, мы сами решаем, что тут будет написано.
type=client — этим мы сообщаем, будем ли мы подключаться к сервису внутри сети или наоборот, сами являемся сервисом (и тогда значение будет не client, а server).
port=666 — имя порта на роутере. Обратите внимание, что порты назначаются вами же как и название, и могут быть какими-нибудь другими, вы можете попробовать их изменить.
destination=irc.echelon.i2p — имя сервиса, с которым мы собираемся взаимодействовать.
keys=irc.dat — адрес с ключами, которые важны нам для доверительной работы с избранным сервисом. Иногда вы можете использовать один и тот же файл ключей, к примеру, для работы с почтым сервисом postman.i2p (вы увидите ниже как это сделано).

Название файла:
tunnels.cfg


Содержимое (в качестве примера мы настроили IRC-чат на одном из серверов сети, а также прием и отправку почты на одном из основных почтовых ресурсов):
[IRC]
type=client
port=666
destination=irc.echelon.i2p
keys=irc.dat

[SMTP]
type=client
port=515
destination=smtp.postman.i2p
keys=mail.dat

[POP3]
type=client
port=616
destination=pop.postman.i2p
keys=mail.dat


Вы можете также скачать готовыми оба файла в архиве по адресу rghost.net/8QxX5gTf2 (ссылка будет рабочей в течение 90 дней начиная с текущего момента). Их достаточно распаковать в найденную нами выше директорию. Удостоверьтесь, что файлы имеют то же содержимое, что и указанное выше, открыв их любым текстовым редактором или процессором.

Сохраните и настройте оба файла. Обратите внимание: после изменения этих файлов вам понадобится перезапустить i2pd: пока этого не сделать, изменения не достигнут своей силы!

Вернитесь к окну браузера. Поменяйте прокси на http 127.0.0.1 и порт 4446, что очень просто сделать это пользуясь инструкцией для любого браузера (http://ru.wikihow.com/изменить-настройки-прокси-сервера), и смело посещайте сайты, мы указали два поисковых ресурса сети: epsilon.i2p и search.i2p.

# 1 запустившись в первый раз, i2pd потратит некоторое время на знакомство с разнообразными узлами сети (вполне возможно, несколько часов), прежде чем соберет достаточно данных для работы сайтов (в соответствии с subscriptions.txt).

# 2 для обеспечения безопасности i2p постоянно прокладывает разные тоннели от вас и до нужного вам ресурса. Для построения тоннелей требуется некоторое время, что может вызывать задержки при открытии сайтов. Поэтому если сайт не открывается, обновите страницу несколько раз.

# 3 некоторые сайты держат такие же люди как и вы. Будьте снисходительнее если ресурс не открывается! Вполне возможно, что открываемый сайт находится не на мощном сервере, а на точно таком же компьютере, что и ваш, и, возможно, не всегда включен!

Больше инструкций по работе с сетью вы можете найти здесь: i2pd.readthedocs.org/en/latest.

Похоже, что все готово. Пока людей, использующих сеть, не очень много, поэтому не очень много и ресурсов. Сеть в первую очередь строится теми, кто бесплатно хочет сделать жизнь лучше. Разработчики i2pd действуют также совершенно бесплатно, среди них много людей, говорящих по-русски, с ними вы можете пообщаться на канале #i2pd-ru через вашу IRC-программу (мы уже прокидывали для этого с вами порт ранее). Они делают все чтобы вам было удобнее пользоваться i2p и надеются, что пользователи так же помогут сделать сеть интереснее и лучше. С вами i2p станет насыщеннее, мы в этом уверены. Удачи вам в использовании i2p!

P.S. Если вам нужен билд для виндоуса, подробная инструкция здесь: habrahabr.ru/post/275647

Комментарии (69)


  1. Evengard
    21.01.2016 21:12

    Вопрос — насколько он полно поддерживает i2p для конечного пользователя? Есть ли хотя бы сёрфинг по i2p сайтам, i2p-торрент и тому подобное, что имеется в java-версии?


    1. Arula
      21.01.2016 21:19

      Поддерживает все, что есть в i2p. Просто является более быстрым и, самое главное, более стабильным.


    1. orignal
      21.01.2016 21:53

      Поддерживает серфинг, скрытые севрисы, торренты через BOB.
      Подробно я описывал здесь habrahabr.ru/post/240815


      1. Evengard
        25.01.2016 15:22
        +1

        Не подскажете, где найти такой headless торрент клиент?


        1. Evengard
          25.01.2016 17:23
          +1

          Желательно с Web-интерфейсом. Видел вроде i2ptransmission, но я не знаю насколько он актуален.


        1. orignal
          25.01.2016 18:32
          +1

          У эшелона (echelon.i2p) точно есть.


  1. Darka
    21.01.2016 21:16

    Так и не понял сколько оно памяти занимает? На OpenWRT каком-нибудь его запустить реально или хотя-бы на малине?


    1. Arula
      21.01.2016 21:32

      И на малине, и на OpenWRT можно. Но оперативной памяти должно быть не меньше 128Мб.


    1. orignal
      21.01.2016 21:54

      Порядка 30-40 мегабайт. На малине (первой) у меня работает отлично.
      Под OpenWRT тоже собирали и вроде работало.


      1. RussianNeuroMancer
        25.01.2016 21:23
        +1

        Можно ли ожидать пакета в репозитории OpenWRT? (Как с Tor сейчас.)


        1. orignal
          25.01.2016 22:12
          +1

          Можно, если найдется мейнтенер для него.


          1. RussianNeuroMancer
            26.01.2016 13:51
            +1

            Есть ли среди разработчиков кто-нибудь, кто мог бы этим заняться?


    1. gxcreator
      22.01.2016 12:16

      Собирал предыдущие версии под TL-MR3220V2 (Atheros AR9331@400MHz 32MiB RAM), со свопом работает нормально и стабильно


  1. BelBES
    21.01.2016 21:54
    +9

    <оффтоп> КДПВ напомнила оформление статей в журнале хакер в его лучшие годы </оффтоп>


    1. engine9
      22.01.2016 13:31
      +1

      Картинки (особенно в посте про винду) отдают какой-то дешевой заманухой: «давай, парень, скушай таблеточку, брат мой жив, зависимости никакой».


      1. IRainman
        22.01.2016 13:51

        Ну, я бы с радостью попробовал нативную реализацию ибо на жабе i2p слишком уж жирный получился:

        WARN [impleAppMain] .tunnel.BloomFilterIVValidator: Configured for 4,00MBps share bandwidth but only 368,00MB available memory. Recommend increasing wrapper.java.maxmemory in c:\Program Files\i2p\wrapper.config to at least 422 (MB) if the actual share bandwidth exceeds 4,00MBps.
        

        Т.е. для хоть сколько нибудь приличных скоростей он хочет несколько сотен МБ памяти.

        P.S. Как с реализацией в i2pd будет покажет время. До сравнительных тестов i2pd vs i2p работающих параллельно на разных портах с одними и теми же настройками на одном и том же хосте у себя точно трогать ничего не буду ибо не хочется ломать работающую реализацию.

        P.P.S. но я всё равно не понимаю, что с самим I2P не так. В настройках указано 4096 на входящую и исходящую скорость и доля транзита 100%, но скорости в пиках через хост десятки кБ/c, не больше.


  1. degs
    21.01.2016 22:16

    Вполне годный тьюториал, будет очень полезет новичкам.
    Спасибо


  1. GamePad64
    21.01.2016 23:08
    +4

    make install

    Ну зачем же так? Checkinstall же есть.


    1. degs
      21.01.2016 23:12
      -1

      Есть, но не у всех. В стандартный дистрибутив он не входит.


      1. GamePad64
        22.01.2016 03:34
        +3

        Строго говоря, cmake тоже не входит. Использовать make install, тем более, без префикса — это антипаттерн в современных линуксах.


        1. orignal
          22.01.2016 03:35

          Потому и есть обычный Makefile


      1. monah_tuk
        22.01.2016 06:16
        +1

        Как и половинавсе пкеты доставленные в статье.


    1. Arula
      21.01.2016 23:44

      к тому же, он тут совершенно не нужен.


    1. monah_tuk
      22.01.2016 07:03

      PPA: launchpad.net/~i2p.packages/+archive/ubuntu/i2p
      конкретно: launchpad.net/~i2p.packages/+archive/ubuntu/i2p/+sourcepub/5874450/+listing-archive-extra
      можно брать спеки и собирать под себя.


  1. hungry_ewok
    22.01.2016 00:32

    Кто-нибудь собирал его под Centos6?
    cmake -DCMAKE_BUILD_TYPE=Release -DBoost_NO_BOOST_CMAKE=BOOL:ON
    выдает ошибку error: 'nullptr' was not declared in this scope


    1. degs
      22.01.2016 03:11

      Какая версия g++?


    1. monah_tuk
      22.01.2016 07:10

      Выше спросили про версию Gcc, nullptr, это фича C++11, версия GCC, похоже, 4.4.7 (https://www.centos.org/forums/viewtopic.php?t=6319), она ещё не поддерживает данный функционал. Скорее всего вам поможет: superuser.com/questions/381160/how-to-install-gcc-4-7-x-4-8-x-on-centos


  1. MrFrizzy
    22.01.2016 10:30
    +1

    Спасибо,
    Прекрасно, что проект так развился с тех пор, как про него первый раз писали на хабре пару лет назад.
    А как дела с аудитом безопасности? Оригинальный i2p вроде прямо предупреждает, что вполне могут быть дыры, но его вроде бы проверяли достаточно серьезные люди.


  1. TheRaven
    22.01.2016 10:33

    Сейчас у меня есть i2p роутер в контейнере, всё вместе потребляет 140 Мбайт памяти. Мне можно оставить всё как есть или ваш проект несет какие-то дополнительные бонусы?


    1. Meklon
      22.01.2016 12:36
      +1

      Меня больше нагрузка на процессор интересует. Жрет ощутимо. Или это уже не оптимизируется?


      1. IRainman
        22.01.2016 13:41

        Для снижения нагрузки на процессор в java реализации в wrapper.config надо включить вот это:

        # Uncomment this for better performance.
        # If it doesn't work, server mode is not available in your JVM.
        # This may not be required if your machine is already "server-class".
        # See http://java.sun.com/j2se/1.5.0/docs/guide/vm/server-class.html
        wrapper.java.additional.7=-server
        

        Ещё, наверняка, поможет отключение floodfill если нагрузка на процессор критична. На странице

        127.0.0.1:7657/configadvanced

        Настройка Floodfill

        выбрать «Отключить» и нажать «Сохранить изменения»

        P.S. где у вас лежит wrapper.config не знаю, у меня i2p под windows работает и с умолчательной установкой файл лежит в
         %PROGRAMFILES%\i2p\wrapper.config
        


        1. Meklon
          22.01.2016 14:16

          Спасибо, посмотрю. Floodfill включал, чтобы узел был более известен. Думал, что увеличит связность


          1. IRainman
            22.01.2016 18:19

            Пожалуйста, вот ещё вспомнил что на странице

            127.0.0.1:7657/graphs

            доступна статистика по потребляемой памяти очень может быть что нагрузка на процессор вызвана не столько I2P сколько самой Java из-за сборки мусора. У себя увеличил максимальное значение потребляемой памяти, в т.ч. и для поддержания более высокой скорости (судя по логам), по умолчанию стояло 128, поставил 384:

            # Initial Java Heap Size (in MB)
            #wrapper.java.initmemory=4
            
            # Maximum Java Heap Size (in MB)
            # The JVM's default is 64MB, and I2P can work fine in that, but to handle
            # lots of I2PSnark activity in the same JVM, increasing the default max heap
            # size should help.  Feel free to reduce this if not using I2PSnark in the jvm
            # High-bandwidth routers may need to increase to 256 or more.
            #
            # WARNING - for any changes to take effect, you must completely
            # stop the router and the wrapper. Clicking 'Restart' on your
            # router console will NOT reread this file! You must
            # click "Shutdown", wait 11 minutes, then start i2p.
            #
            wrapper.java.maxmemory=384
            

            Это настройка всё в том же wrapper.config.


      1. Arula
        23.01.2016 17:18

        Это все из-за java. В i2pd такого нет уже просто потому, что реализация на C++. i2pd работает быстрее и стабильней, чем оригинальная java-реализация.


    1. Arula
      23.01.2016 17:16

      Несёт. Говорю по опыту, i2pd работает быстрее, но, самое главное, стабильнее. Не вылетает непонятно из-за чего и не обрывается на ровном месте.


      1. TheRaven
        24.01.2016 02:07

        Ммм… ну вылетов и обрывов я не наблюдал, может по тому что виртуалка раз в неделю рестартится для бекапа.
        По нагрузке сейчас как-то так:

        Картинка


        1. Arula
          24.01.2016 10:43
          +1

          Да, обрывы на достаточно сильном компе не будут так часто наблюдаться, однако на более слабых они есть и постоянно.

          А i2pd автоматически использует максимально возможную скорость.

          Нет, интерфейс очень приятный для глаз, особенно, после официального.

          Web-консоль i2pd


          1. TheRaven
            25.01.2016 00:32
            +1

            Запилите мне туда девочку из топика про винду и я готов пробовать =)
            А вообще интерфейс действительно приятный, да.


            1. Evengard
              27.01.2016 16:57
              +1

              Кстати, кто эта девочка?


              1. TheRaven
                27.01.2016 21:17
                +1

                Гугл подсказывает, что это Нептун из Choujigen Game Neptune The Animation.

                А вообще я серьезно, люблю когда у проекта есть маскот.


  1. Meklon
    22.01.2016 13:12

    И еще была раздражающая фигня со связностью. Когда узел работает пару месяцев, а некоторые ресурсы доступны через раз.


    1. IRainman
      22.01.2016 13:43

      Это, боюсь, либо by design, либо какие то баги реализации, на этот момент все жалуются, но решения «чтобы наверняка» мне так и не попадалось.


      1. Meklon
        22.01.2016 14:15

        Вот это и смущает. Вроде и поток максимальный через себя пропускал, значит все меня знать должны были уже. Видимо еще ковырять долго протоколы.


        1. IRainman
          22.01.2016 17:55

          Можно ещё попробовать вот в этот сайт адресов проблемных ресурсов накидать, через I2P он тоже доступен без xyz. Возможно, что проблема не у вас, а сами ресурсы просто лежат. Ну и список подписок побольше ибо умолчательный обновляется раз в вечность, у меня, например, так:

          Список подписок
          http://bl.i2p/hosts2.txt
          http://cipherspace.i2p/addressbook.txt
          http://dream.i2p/hosts.txt
          http://hosts.i2p/
          http://i2host.i2p/cgi-bin/i2hostetag
          http://i2p-projekt.i2p/hosts.txt
          http://inr.i2p/export/alive-hosts.txt
          http://no.i2p/export/alive-hosts.txt
          http://rus.i2p/hosts.txt
          http://stats.i2p/cgi-bin/newhosts.txt
          http://tino.i2p/hosts.txt
          http://trevorreznik.i2p/hosts.txt
          


  1. Keroro
    22.01.2016 14:54
    +1

    Что-то мне эта КДПВ напомнила…

    Заголовок спойлера
    image


  1. TimsTims
    22.01.2016 14:55

    -поэтому не очень много и ресурсов.

    Ждём гугл для i2p :) или тот самый «Портал со всеми сайтами в сети»


    1. Arula
      22.01.2016 16:07

      В планах реализовать соцсеть. А вообще, гугл для i2p есть.


      1. monah_tuk
        26.01.2016 15:24
        +1

        А вообще, гугл для i2p есть.

        что-то типа прокси? google.i2p не отвечает.


  1. rhamdeew
    22.01.2016 15:53

    Я думаю будет полезна еще и вот эта ссылка: hub.docker.com/r/kytv/i2pd


  1. redmanmale
    22.01.2016 15:55

    КДПВ есть хайрез? Я бы в офис повесил.


  1. Meklon
    24.01.2016 13:47
    +1

    Никто это ещё в ppa не запихнул, чтобы руками не пересобирать?


    1. monah_tuk
      26.01.2016 15:25
      +1

      есть: habrahabr.ru/post/275643/#comment_8747609, но не новое
      плюс дебки: i2pd.website/releases/2.3.0


  1. Andrii_Z
    24.01.2016 23:13

    Как разрешить доступ не только из localhost?


    1. Arula
      24.01.2016 23:49

      Вообще, никак. Это особенность сети, один из столпов, на котором и строится анонимность сети.

      Но, простите, а зачем вам это?


      1. Andrii_Z
        25.01.2016 00:05

        Запустить i2pd на банане, и иметь доступ к i2p из android/winphone.


        1. hungry_ewok
          26.01.2016 16:14
          +1

          Эммм… проброс портов iptablesами настроить, не?


    1. orignal
      25.01.2016 00:23

      Что именно надо? Для тоннелей в поле address написать 0.0.0.0.
      Для HTTP прокси — параметр httpproxyaddress и так далее


      1. Meklon
        26.01.2016 14:46
        +1

        Я не могу получить доступ к веб-интерфейсу извне. Развернул i2pd на отдельной виртуальной машине как и обычный i2p ранее. Где в конфигах прописать разрешение на доступ отовсюду 0.0.0.0 и порт? Мне грубо говоря, надо зайти на 192.168.100.10 и увидеть там интерфейс управления.


        1. Andrii_Z
          26.01.2016 16:15
          +1

          Собственно, мне нужно это же.
          C java i2p это возможно.


        1. orignal
          26.01.2016 19:06
          +1

          -httpport=192.168.100.10 тогда можно будет заходит с сеть 192.168.100.*
          если вообще отвсюду то -httpport=0.0.0.0
          Для прочих сервисов аналогично.


          1. Meklon
            26.01.2016 19:30
            +1

            Это в котором конфиг файле?


            1. TheRaven
              26.01.2016 20:56
              +1

              Это скорее на аргумент строки запуска похоже.


            1. orignal
              26.01.2016 21:22
              +1

              это параметр командной строки. или можно в отдельный конфиг файл их записать и передать в качестве параметра имя файла


              1. Meklon
                26.01.2016 22:26
                +1

                А по поводу нормального конфиг-файла можно пункт мануала? В обычном i2p это решалось правкой одной строки в /etc/i2p/чтототам.cfg


                1. monah_tuk
                  27.01.2016 04:10
                  +4

                  Конфиг: ~/.i2pd/i2p.conf
                  пример можно посмотреть в дистрибуции (в дебке с офф сайта это: /var/lib/i2pd/i2p.conf)
                  а вообще там всё просто: <опция без --> = <значение>
                  опции посмотреть: i2pd --help либо /usr/share/doc/i2pd/configuration.md


                  1. Meklon
                    27.01.2016 08:26
                    +1

                    Благодарю.


  1. m0sk1t
    29.01.2016 15:38

    Поясните, пожалуйста, пару вопросов:
    1. Пока i2pd не опросит всю сеть я подключиться к search.i2p не смогу?
    2. search.i2p или http:// search.i2p?
    3. А мы же не создали клиентский туннель, как мы будем коннектиться по http?

    В общем и целом хочется больше информации о принципах работы i2pd… Буду благодарен за ссылки)


    1. m0sk1t
      29.01.2016 17:03

      и кстати порт у меня заработал 4444 а не 4446 который предлагается использовать в статье…


      1. orignal
        29.01.2016 17:40

        На 4444 вчера только сменили.
        Подключиться можно будет как только адресную книгу скачает, а это когда первые тоннели построит.
        search.i2p