Как в первый раз запустить i2pd: инструкция под Debian/Ubuntu

  • Tutorial


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 и порт 4444 (до версии 2.3 — 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
Share post

Similar posts

Comments 78

    0
    Вопрос — насколько он полно поддерживает i2p для конечного пользователя? Есть ли хотя бы сёрфинг по i2p сайтам, i2p-торрент и тому подобное, что имеется в java-версии?
      0
      Поддерживает все, что есть в i2p. Просто является более быстрым и, самое главное, более стабильным.
        0
        Поддерживает серфинг, скрытые севрисы, торренты через BOB.
        Подробно я описывал здесь habrahabr.ru/post/240815
          +1
          Не подскажете, где найти такой headless торрент клиент?
            +1
            Желательно с Web-интерфейсом. Видел вроде i2ptransmission, но я не знаю насколько он актуален.
              +1
              У эшелона (echelon.i2p) точно есть.
          0
          Так и не понял сколько оно памяти занимает? На OpenWRT каком-нибудь его запустить реально или хотя-бы на малине?
            0
            И на малине, и на OpenWRT можно. Но оперативной памяти должно быть не меньше 128Мб.
              0
              Порядка 30-40 мегабайт. На малине (первой) у меня работает отлично.
              Под OpenWRT тоже собирали и вроде работало.
                +1
                Можно ли ожидать пакета в репозитории OpenWRT? (Как с Tor сейчас.)
                  +1
                  Можно, если найдется мейнтенер для него.
                    +1
                    Есть ли среди разработчиков кто-нибудь, кто мог бы этим заняться?
                0
                Собирал предыдущие версии под TL-MR3220V2 (Atheros AR9331@400MHz 32MiB RAM), со свопом работает нормально и стабильно
                +9
                <оффтоп> КДПВ напомнила оформление статей в журнале хакер в его лучшие годы </оффтоп>
                  +1
                  Картинки (особенно в посте про винду) отдают какой-то дешевой заманухой: «давай, парень, скушай таблеточку, брат мой жив, зависимости никакой».
                    0
                    Ну, я бы с радостью попробовал нативную реализацию ибо на жабе 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, не больше.
                  0
                  Вполне годный тьюториал, будет очень полезет новичкам.
                  Спасибо
                    +4
                    make install

                    Ну зачем же так? Checkinstall же есть.
                      –1
                      Есть, но не у всех. В стандартный дистрибутив он не входит.
                        +3
                        Строго говоря, cmake тоже не входит. Использовать make install, тем более, без префикса — это антипаттерн в современных линуксах.
                          0
                          Потому и есть обычный Makefile
                          +1
                          Как и половинавсе пкеты доставленные в статье.
                          0
                          к тому же, он тут совершенно не нужен.
                            0
                            PPA: launchpad.net/~i2p.packages/+archive/ubuntu/i2p
                            конкретно: launchpad.net/~i2p.packages/+archive/ubuntu/i2p/+sourcepub/5874450/+listing-archive-extra
                            можно брать спеки и собирать под себя.
                            0
                            Кто-нибудь собирал его под Centos6?
                            cmake -DCMAKE_BUILD_TYPE=Release -DBoost_NO_BOOST_CMAKE=BOOL:ON
                            выдает ошибку error: 'nullptr' was not declared in this scope
                              0
                              Какая версия g++?
                                0
                                Выше спросили про версию 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
                                Спасибо,
                                Прекрасно, что проект так развился с тех пор, как про него первый раз писали на хабре пару лет назад.
                                А как дела с аудитом безопасности? Оригинальный i2p вроде прямо предупреждает, что вполне могут быть дыры, но его вроде бы проверяли достаточно серьезные люди.
                                  0
                                  Сейчас у меня есть i2p роутер в контейнере, всё вместе потребляет 140 Мбайт памяти. Мне можно оставить всё как есть или ваш проект несет какие-то дополнительные бонусы?
                                    +1
                                    Меня больше нагрузка на процессор интересует. Жрет ощутимо. Или это уже не оптимизируется?
                                      0
                                      Для снижения нагрузки на процессор в 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
                                      
                                        0
                                        Спасибо, посмотрю. Floodfill включал, чтобы узел был более известен. Думал, что увеличит связность
                                          0
                                          Пожалуйста, вот ещё вспомнил что на странице

                                          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.
                                        0
                                        Это все из-за java. В i2pd такого нет уже просто потому, что реализация на C++. i2pd работает быстрее и стабильней, чем оригинальная java-реализация.
                                          0
                                          такие споры мне напоминают холивары: twitter стал быстрее потому что переписали с ruby на scala
                                          на самом деле: полностью сменили архитектуру на микросервисы и event processing

                                          почти любой кто видел тормозящий i2p на java и смотревший в исходники может подтвердить:
                                          1) одна из основных проблем это большой context switch, так как на каждый поток ввода-вывода создает thread
                                          2) почти полное отсутсвие использования nio, большинство вещей на стандартном io
                                          3) наличие N потоков в каждом из которых имеется личный буфер дает дополнительное давление на память и gc
                                          4) и уже только на четвертом месте оказывается само шифрование-дешифрование

                                          в итоге мы вместо асинхронности и вменяемого потребления под различные буфера ввода-вывода сжираем почти все что можно

                                          почему же не использовать netty и другие сетевые фреймворки?
                                          ответ до банальности прост: безопасность, так как текущий код до ужаса прост, то и аудит его сделать проще, ну и отсутствует зависимость на сторонних библиотеках (через которых можно что-либо пропихнуть), только голый java core.
                                        0
                                        Несёт. Говорю по опыту, i2pd работает быстрее, но, самое главное, стабильнее. Не вылетает непонятно из-за чего и не обрывается на ровном месте.
                                          0
                                          Ммм… ну вылетов и обрывов я не наблюдал, может по тому что виртуалка раз в неделю рестартится для бекапа.
                                          По нагрузке сейчас как-то так:
                                          Картинка


                                          Чертовы узлы наконец начали появляться после включения floodfill и повышения лимита до 4096\4096, а то больше года работаем а толку никакого.

                                          А интерфейс консоли i2pd такой же страшный как и у официального?
                                            +1
                                            Да, обрывы на достаточно сильном компе не будут так часто наблюдаться, однако на более слабых они есть и постоянно.

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

                                            Нет, интерфейс очень приятный для глаз, особенно, после официального.
                                            Web-консоль i2pd
                                              +1
                                              Запилите мне туда девочку из топика про винду и я готов пробовать =)
                                              А вообще интерфейс действительно приятный, да.
                                      0
                                      И еще была раздражающая фигня со связностью. Когда узел работает пару месяцев, а некоторые ресурсы доступны через раз.
                                        0
                                        Это, боюсь, либо by design, либо какие то баги реализации, на этот момент все жалуются, но решения «чтобы наверняка» мне так и не попадалось.
                                          0
                                          Вот это и смущает. Вроде и поток максимальный через себя пропускал, значит все меня знать должны были уже. Видимо еще ковырять долго протоколы.
                                            0
                                            Можно ещё попробовать вот в этот сайт адресов проблемных ресурсов накидать, через 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
                                        Что-то мне эта КДПВ напомнила…
                                        Заголовок спойлера
                                        image
                                          0
                                          -поэтому не очень много и ресурсов.

                                          Ждём гугл для i2p :) или тот самый «Портал со всеми сайтами в сети»
                                            0
                                            В планах реализовать соцсеть. А вообще, гугл для i2p есть.
                                              +1
                                              А вообще, гугл для i2p есть.

                                              что-то типа прокси? google.i2p не отвечает.
                                                +1
                                                elgoog.i2p/
                                                Только вам придется его, скорей всего, добавить в адресную книгу. Это просто. Зайдите на inr.i2p/ и вбейте в поисковой строке название этого сайта. Base64 link этого сайта будет добавлен в вашу адресную книгу автоматически.
                                                  0
                                                  Да, в i2pd не хватает встроенной поддержки jump сервисов: не найден сайт, редирект на преднастроенный jump сервис. Пока приходится использовать макрос (или как они называются, когда делаешь закладку в браузере, даёшь ей короткое имя и в нужное место адреса %s подставляешь?) в браузере: «j site.i2p», который отсылает на «inr.i2p/jump/site.i2p»
                                            0
                                            Я думаю будет полезна еще и вот эта ссылка: hub.docker.com/r/kytv/i2pd
                                              0
                                              КДПВ есть хайрез? Я бы в офис повесил.
                                                +1
                                                Никто это ещё в ppa не запихнул, чтобы руками не пересобирать?
                                                0
                                                Как разрешить доступ не только из localhost?
                                                  0
                                                  Вообще, никак. Это особенность сети, один из столпов, на котором и строится анонимность сети.

                                                  Но, простите, а зачем вам это?
                                                    0
                                                    Запустить i2pd на банане, и иметь доступ к i2p из android/winphone.
                                                      +1
                                                      Эммм… проброс портов iptablesами настроить, не?
                                                    0
                                                    Что именно надо? Для тоннелей в поле address написать 0.0.0.0.
                                                    Для HTTP прокси — параметр httpproxyaddress и так далее
                                                      +1
                                                      Я не могу получить доступ к веб-интерфейсу извне. Развернул i2pd на отдельной виртуальной машине как и обычный i2p ранее. Где в конфигах прописать разрешение на доступ отовсюду 0.0.0.0 и порт? Мне грубо говоря, надо зайти на 192.168.100.10 и увидеть там интерфейс управления.
                                                        +1
                                                        Собственно, мне нужно это же.
                                                        C java i2p это возможно.
                                                          +1
                                                          -httpport=192.168.100.10 тогда можно будет заходит с сеть 192.168.100.*
                                                          если вообще отвсюду то -httpport=0.0.0.0
                                                          Для прочих сервисов аналогично.
                                                            +1
                                                            Это в котором конфиг файле?
                                                              +1
                                                              Это скорее на аргумент строки запуска похоже.
                                                                +1
                                                                это параметр командной строки. или можно в отдельный конфиг файл их записать и передать в качестве параметра имя файла
                                                                  +1
                                                                  А по поводу нормального конфиг-файла можно пункт мануала? В обычном i2p это решалось правкой одной строки в /etc/i2p/чтототам.cfg
                                                                    +4
                                                                    Конфиг: ~/.i2pd/i2p.conf
                                                                    пример можно посмотреть в дистрибуции (в дебке с офф сайта это: /var/lib/i2pd/i2p.conf)
                                                                    а вообще там всё просто: <опция без --> = <значение>
                                                                    опции посмотреть: i2pd --help либо /usr/share/doc/i2pd/configuration.md
                                                                      +1
                                                                      Благодарю.
                                                        0
                                                        Поясните, пожалуйста, пару вопросов:
                                                        1. Пока i2pd не опросит всю сеть я подключиться к search.i2p не смогу?
                                                        2. search.i2p или http:// search.i2p?
                                                        3. А мы же не создали клиентский туннель, как мы будем коннектиться по http?

                                                        В общем и целом хочется больше информации о принципах работы i2pd… Буду благодарен за ссылки)
                                                          0
                                                          и кстати порт у меня заработал 4444 а не 4446 который предлагается использовать в статье…
                                                            0
                                                            На 4444 вчера только сменили.
                                                            Подключиться можно будет как только адресную книгу скачает, а это когда первые тоннели построит.
                                                            search.i2p
                                                          –2
                                                          на этапе make была куча ворнингов о каких-то пустых параметрах и под конец вылетела с ошибкой «не хватило памяти».
                                                          VPS 1 гиг оперативы.
                                                          не айс.
                                                          мне это рекомендовали как альтернативу «прожорливой» жаве))
                                                            +2
                                                            А как связана прожорливость компиляции и прожорливость работы?
                                                            С++ действительно компилируется долго и тяжело, а работает быстро.
                                                              0
                                                              верное замечание.

                                                              в общем, по инструкции оно не установилось.
                                                                0
                                                                Я брал уже в виде пакета готового.
                                                                  0
                                                                  .deb я тоже попробовал — там тоже какие-то траблы (уже не помню чего именно, но пришлось сносить потом)

                                                                  в общем, буду по старинке, на Java -)

                                                                  **кстати, пакет какой ставили? у меня Ubuntu 16.04
                                                                    0
                                                                    Тоже Ubuntu 16.04 Server. Откуда пакет не помню.

                                                          Only users with full accounts can post comments. Log in, please.