[[I2P]]
 

I2P

I2P (Invisible Internet Project или Invisible Internet Protocol) – оверлейная децентрализованная одноранговая сеть. Оверлейная - работает поверх других сетей, например, обычного интернета; децентрализованная - распределенная, не имеющая единой точки отказа: упадет один узел, полсети, или во всей сети останется 3 пользователя – I2P всё равно будет функционировать. I2P является одноранговой сетью, потому что все участники имеют равные права и возможности: каждый пользователь скрытой сети строит свои туннели через других участников и сам является потенциальным звеном в цепочке другого пользователя. При этом естественная сетевая активность никак не компрометирует абонента перед домашним провайдером или участниками скрытой сети.

i2p-over-ygg.jpg I2P многократно превосходит Tor по параметрам анонимности, но не имеет по умолчанию выходных прокси в обычный интернет. Сеть I2P полностью децентрализована и открыта. Существует два клиента сети: на языке Java (первый релиз которого состоялся в 2003 году) и i2pd на C++ (первый релиз в 2014). I2P-роутер на C++ превосходит по скорости и стабильности своего предшественника и настоятельно рекомендуется к использованию. Основное обсуждение разработки i2pd ведется на канале #dev в сети ILITA. При работе через Yggdrasil, сеть I2P не образует отдельный сегмент, а остается единой: пользователи из обычного интернета также доступны. Схематично взаимодействие Yggdrasil-only роутеров с остальными участниками сети отображено на иллюстрации.

Подробно о механизме работы сети I2P и истории появления альтерантивного клиента i2pd сказано в видео: YouTube.com.

Установка

Самый простой и верный вариант – скачать пакет для своей операционной системы на официальной странице релизов. Также i2pd существует в стандартных репозиториях некоторых unix-like операционных систем вроде Debian или Ubuntu, и доступен для установки через короткую строку sudo apt-get install i2pd, но такой способ установки не рекомендуется, т.к. в дефолтных репозиториях всегда находятся весьма устаревшие версии.
Однако есть актуальный репозиторий сообщества, добавив который в свою систему можно забыть про протухшие пакеты и обновляться в привычном и удобном виде. Исчерпывающая информация по установке есть в документации i2pd.
Инструкции для Debian и Ubuntu с использованием репозитория пользователя R4SAS через обычный интернет:

# Ubuntu
sudo add-apt-repository ppa:purplei2p/i2pd
sudo apt-get update
sudo apt-get install i2pd

# Debian
sudo apt-get install apt-transport-https
wget -q -O - https://repo.i2pd.xyz/.help/add_repo | sudo bash -s -
sudo apt-get update
sudo apt-get install i2pd

То же самое, но с доступом через Yggdrasil, т.е. внутрисетевой репозиторий:

# Debian
wget -q -O - http://[321:c99a:91a1:cd2c::4]/.help-ygg/add_repo | sudo bash -s -
sudo apt-get update
sudo apt-get install i2pd

Сообществом поддерживается I2P-браузер на базе Firefox, по концепции схожий с Tor-браузером. Скачать браузер можно на странице релизов соответствующего гит-репозитория команды PurpleI2P (распространяется только для Windows, для Linux и MacOS систем сборка производится с помощью запуска build.sh из соответствующего архива в релизе). В комплекте портабельного браузера может находиться не последняя версия i2pd, поэтому заменить исполняемый файл i2pd.exe для использования актуальной версии наверняка нужно будет вручную.

I2P внутри Yggdrasil

Начиная с версии 2.36.0 i2pd имеет режим работы, исключающей соединения через обычный интернет. Ниже приведен пример конфигурации роутера, сообщающегося со скрытой сетью I2P исключительно через другие Yggdrasil-роутеры. По умолчанию конфигурационный файл находится в /etc/i2pd/i2pd.conf, либо ~/.i2pd/i2pd.conf, а в случае Windows OS: %AppData%\i2pd\i2pd.conf. Для работы I2P-роутера в режиме «Portable», когда все данные хранятся в директории с исполняемым файлом, необходимо создать файл i2pd.conf в той же папке, где находится бинарный файл программы (в народе: exe-шник).

daemon = true
ipv4 = false
ipv6 = false
ssu = false
ntcp2.enabled = false
yggdrasil = true  

Если вы хотите, чтобы I2P-роутер публиковал адрес из вашей подсети Yggdrasil, которая используется на устройстве, добавьте строку:

meshnets.yggaddress=your_local_yggdrasil_address

При первом запуске i2pd обратится к стартовому серверу внутри сети Yggdrasil, который отдаст несколько роутеров, достаточных для начала работы. Затем, база сети роутера начнет автоматически пополняться. Таким образом использование I2P обойдется без единого обращения в клирнет.

Автозапуск

I2P-роутер (i2pd) при запуске операционной системы (на примере Debian) может стартовать раньше, чем служба Yggdrasil. Это приводит к вынужденному ручному перезапуску i2pd, т.к. yggdrasil-интерфейс не обнаруживается I2P-роутером до старта службы Yggdrasil. Есть два основных способа решить эту проблему (используйте любой на свое усмотрение):

1) После запуска Yggdrasil задать задержку перед стартом зависящих служб:

  1. Добавить зависимость в запуск службы i2pd:
    Создать директорию /etc/systemd/system/i2pd.service.d:
    mkdir /etc/systemd/system/i2pd.service.d
  2. Дополнить запуск службы i2pd:
    nano /etc/systemd/system/i2pd.service.d/override.conf

    Вставить следующее содержимое:

    [Unit]
    After=network.target yggdrasil.service

    Ctrl+O – сохранить изменения в файле, Ctrl+X – выйти из редактора nano

  3. Создать директорию /etc/systemd/system/yggdrasil.service.d:
    mkdir /etc/systemd/system/yggdrasil.service.d
  4. Дополнить запуск службы Yggdrasil:
    nano /etc/systemd/system/yggdrasil.service.d/override.conf

    Вставить следующее содержимое:

    [Service]
    # adding post-up delay to bring up yggdrasil tunnel interface before starting other services which depends on ygg
    ExecStartPost=/bin/sleep 5

    Ctrl+O – сохранить изменения в файле, Ctrl+X – выйти из редактора nano

2) Задать таймер запуска i2pd:

  1. Создать файл i2pd.timer:
    sudo nano /etc/systemd/system/i2pd.timer
  2. Заполнить файл таймера следующим образом:
    [Unit]
    Description=i2pd service timer
    After=yggdrasil.service
    
    [Timer]
    OnActiveSec=10
    
    [Install]
    WantedBy=multi-user.target

    Ctrl+O – сохранить изменения в файле, Ctrl+X – выйти из редактора nano

  3. Отключить дефолтный автозапуск i2pd:
    sudo systemctl disable i2pd.service
  4. Включить наш таймер:
    sudo systemctl enable i2pd.timer

Развитие сети

Какой вклад в развитие сети I2P может сделать средний пользователь? Этим вопросом задаются многие энтузиасты. И вот ответ:

  1. Включить все существующие сетевые интерфейсы для большей связности сети:
    ipv4 = true
    ipv6 = true
    yggdrasil = true
  2. При технической возможности можно включить режим флудфила - своеобразного диспетчера I2P (может периодически возрастать нагрузка на процессор и сетевой канал):
     floodfill = true 

Обратите внимание! К флудфилу предъявляются специальные требования, перечисленные ниже. Если правила не соблюдаются, ваш роутер наверняка будет забанен другими участниками сети (в лучшем случае им просто не будут пользоваться):

  • Доступность узла через IPv4 (то есть выделенный IPv4 адрес с открытым портом i2pd);
  • Максимально возможный транзит (не ниже флага «O» в конфиге);
  • IP адрес, с которого i2pd инициирует соединения, должен совпадать с опубликованным в лизсете (воздержитесь от сложных конфигураций с прокси и прочим в этом духе).

Следует обратить внимание, что указанные настройки в первую очередь актуальны для администраторов серверов или домашних пользователей, имеющих выделенный IP-адрес. Однако в любом случае держать I2P-роутер включенным максимально возможное время – хороший вклад в общую мощность сети. Клиент сети, запущенный даже на смартфоне (!) может принимать «исследовательские» туннели, создаваемые другими участниками для исследования сети и имеющие крайне малый трафик.

Ссылки

Количество Yggdrasil-роутеров в одном из ресидов - стартовом бутстрап-пакете
Git-репозиторий i2pd
Страница релизов i2pd для загрузки
Документация i2pd на русском языке
Сайт java-роутера (не поддерживает Yggdrasil)

Обсуждение

Олег, 2023/07/16 15:31
1. В чём плюсы и в чём минусы сетей Yggdrasil и I2P относительно друг-друга? Кто разбирался?

2. Есть какие-то оценки числа пользователей в Yggdrasil и в I2P?

newbie, 2023/07/16 15:41
Почитайте статьи acetone на habr.com. Можно с этой начать: https://habr.com/ru/articles/552072/

Цели создания этих сетей разные.
I2P создана для анонимности.

Yggdrasil - это эксперимент по созданию протокола для организации децентрализованной сети с маршрутизацией, не требующей настройки, в общем случае.

Олег, 2023/07/19 13:54
То что основные цели проектов разные - это видно и понятно. Но, как это часто бывает в самых разных проектах, кроме целей основной задумки выясняются новые аспекты использования, которые при создании и не ставились. И Yggdrasil и I2P могут использоваться для связей хостов с серыми IP, закрытых разными NAT, их администрирование по SSH (или даже telnet), обмен файлами и др. в том же роде.

Только авторизованные участники могут оставлять комментарии.
i2p.txt · Последнее изменение: 2023/10/10 18:06 — 127.0.0.1
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki