Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
tor_i2p.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.24 Mб
Скачать

# RouterInfo и LeaseSet

NetDB хранит в себе две разновидности данных: RouterInfo и LeaseSet. В сети i2p существует жесткое распределение между абстрактным "роутером" и конкретной "точкой назначения", а потому и информация для работы с ними нужна разная. Грубо говоря, RouterInfo содержит информацию о том, как связаться с роутерами, чтобы построить через них туннель, а LeaseSet - информацию для налаживания связи и шифрования для конечной точки туннеля, например, i2p-сайт.

Все роутеры, участвующие в передаче данных, отправляют в NetDB свой RouterInfo, где содержится их адрес, транспортные данные, состояние, пропускная способность и прочее. Помимо этого, есть "Точки Назначения" со своими входящими тоннелями для доступа к ним - они формируют и предоставляют по запросу свой LeaseSet, где виден их Base64-адрес вместе с хэшем, открытый ключ, а также информация о состоянии текущего входящего туннеля, время его жизни, и ещё туча различных меток и хэшей.

Высокая степень анонимности сети достигается за счет того, что тоннели всегда однонаправленные и бывают 2-х видов - входящий на приём данных и исходящий для отправления.

# Чесночная маршрутизация

Итак, мы рассмотрели ключевые элементы структуры сети i2p. Так как же происходит обмен сообщениями и что за пресловутая "Чесночная маршрутизация"?

Когда пользователь, к примеру, Алиса хочет зайти на i2p-сайт, или написать пользователю сообщение через почтовый сервис, происходит следующее:

1. Сперва, пользователь (Алиса) посылает запрос в NetDB и получает несколько RouterInfo с адресами подходящих для передачи пиров и формирования "Исходящего Туннеля Алисы".

2. Аналогичным образом создается "Входящий Туннель Алисы", на который любой участник сети сможет прислать данные, зная адрес.

3. Затем, Алиса посылает запрос в NetDB, получает LeaseSet нужного сайта.

4. Начинается передача. Алиса упаковывает данные в пакет - своеобразный "чеснок" с несколькими "чесночинами" внутри: а) зашифрованные данные, б) инструкции по доставке со всеми адресами, в) необязательная дополнительная информация. "Чеснок" последовательно упаковывается в слои шифрования по открытым ключам всех участников туннеля, так, чтобы раскрывая очередной слой, транзитный узел знал только адрес следующего получателя. Важно - "Транзитный Узел" знает только то, что он передает какие-то зашифрованные данные, не зная от кого, не зная конечного получателя, не зная количество "Чесночин" в "чесноке" и не зная даже, что он - часть туннеля.

5. "Чеснок" доходит до "Входящего Туннеля Сайта", затем до конечного получателя и он расшифровывает его своим закрытым ключом. Как правило, в блоке данных содержится LeaseSet отправителя, на основе которого, "Сайт" сможет сформировать туннель до Алисы и прислать ответ.

6. Время существования туннеля - 10 минут, после чего отправитель и получатель вновь обмениваются LeaseSet, меняют цепочку транзитных узлов и продолжают сессию.

# Итог технической части

Конечно, это лишь примерное описание происходящего. Данные могут отправляться по нескольким исходящим туннелям одновременно, тестовый функционал позволяет работать без туннелей вовсе, а все алгоритмы, отвечающие за работоспособность сети - так и вовсе работают на какой-то магии. Помимо этого, разработчики оставляют большой простор для тонкой настройки маршрутизации, а сам проект всё ещё находится в разработке и постоянно улучшается. Поэтому, пришло время закончить с теорией и перейти к практике.

## Практическая часть

# Установка и настройка

Так как i2p работает на Java, перед началом работы необходимо установить/обновить Java-клиент, скачать который можно отсюда:

http://www.java.com/ru/download/

Помимо этого, сейчас разрабатывается версия на C++ - более стабильная и менее ресурсоёмкая.

Для i2p нет реализации в виде браузера, как у Tor. Распространяется только клиент, для работы с которым нужно немного поколдовать в браузере. Зато, клиент доступен для Windows, Linux, MacOS, iOS и Android, а если немного повозится - то вообще на любой платформе с установленной Java-машиной.

Скачайте установщик отсюда:

https://geti2p.net/ru/download

Разработчик настоятельно советует не использовать для работы в i2p ваш привычный браузер. Желательно завести ещё один, к примеру, Firefox вместо Chrome, или запускать i2p с другого пользователя.

Зайдите в настройки браузера, и во вкладке сетевых настроек (В Firefox "Настроки > Дополнительно > Сеть"; В Chrome "Настройки > Показать дополнительные настройки > Сеть > Конфигурация прокси-сервера") и найдите поля со словами HTTP и HTTPS (Или SSL). В поле HTTP впишите "127.0.0.1" и "4444" в поле "Порт"; Для HTTPS/SSL - "127.0.0.1" и "4445". В поле с "Не использовать прокси для: " должны быть вписаны "127.0.0.1" и "localhost".

Официальная инструкция по настройке:

https://geti2p.net/en/about/browser-config

Браузер настроен! Установите скачанный клиент, жмите "Start i2p-router", в адресной строке браузера пропишите адрес домашней страницы консоли маршрутизатора - " http://localhost:7657/" и вуаля:

i2p, более-менее, готов к работе. Но не стоит сразу пытаться заходить на сайты и вести активную деятельность. Во первых - при первом запуске начинается процесс интеграции в сеть - опрашивание пиров, пополнение собственной netDB; Во вторых - происходит заполнение адресной книги, но даже после его завершения, адресов в ней будет мало. Поэтому, первым делом добавим несколько подписок в адресную книгу. В веб-интерфейсе консоли маршрутизатора "Настройки i2p > Адресная книга > Подписки" и заполните окно списком адресов, упомянутом в разделе "Техническая часть > Как работают адреса в i2p", затем сохраните и перезагрузите книгу.

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

Пройдемся пока по элементам интерфейса:

1. Общая информация - ваш идентификатор в сети i2p (LeaseSet), время работы и версия клиента;

2. Узлы - статистика по известным в вашей netDB узлам:

2.1 Активные. Первое число - пиры, с которыми вы обменивались сообщениями за последние несколько минут. Второе число - за последний час;

2.2 Быстрые - пиры, использующиеся для построения клиентских туннелей;

2.3 Высокоемкие - использующиеся для зондирующих туннелей;

2.4 Хорошо интегрированные - пиры, использующиеся для доступа к сетевой базе данных;

2.5 Известные - общее количество пиров, известных вашему роутеру.

3. Туннели - вся информация об участии вашего роутера в туннелях:

3.1 Зондирующие - туннели для связи с Floodfill-пирами и тестирования сети;

3.2 Клиентские - туннели, созданные каждой локальной службой на вашем роутере;

3.3 Транзитные - количество туннелей, в которых участвует ваш роутер, но которые он не создавал;

3.4 Доля транзита - соотношения транзитных туннелей с клиентскими.

4. Задержки - раздел с временем задержек, крайне полезный для профилактики проблем в работе.

4.1 Задержка заданий - как долго задания ожидают выполнения. Нормальное значение - от 0 до 500ms. Если выше 0 - значит, либо ваш компьютер слишком медленный, либо маршрутизатор работает некорректно;

4.2 Задержка сообщения - как долго исходящие сообщения стоят в очереди. Нормальное значение - не выше 200ms;

4.3 Задержка туннелей - длительность доставки сообщения от клиентского туннеля до зондирующего и обратно. Нормальное значение - не выше 5сек;

4.4 Очередь запросов - количество необработанных запросов от других маршрутизаторов;

4.5 Состояние роутера - "Принимаем туннели", "Принимаем/Отклоняем часть туннеле", "Отклоняем все туннели".

Информацию о туннелях можно найти здесь:

http://localhost:7657/tunnels.jsp

Настроить длину и количество зондирующих и клиентских, входящих-исходящих туннелей можно здесь:

http://localhost:7657/configtunnels

Об узлах и информация их RouterInfo:

http://localhost:7657/peers

И настроить их, в том числе блокировать, можно здесь:

http://localhost:7657/configpeer

А здесь вы найдете список профилей различных по качеству узлов с максимумом доступной информации о них:

http://localhost:7657/profiles.jsp

Здесь общие сетевые настройки i2p:

http://localhost:7657/confignet

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

"Почему i2p такой медленный и как сделать быстрее" - пожалуй, самый злободневный вопрос при работе в сети. Зайдите на "http://localhost:7657/config", и выберите вкладку "Трафик":

Здесь отображены ваши ограничения полосы пропускания. Для большинства пользователей, они очень низкие - рекомендуется повысить значения до скорости вашего интернет-соединения. "Доля транзитного трафика" - это процент от заданной полосы, который будет выделен на участие в туннелях и передачу сторонних пакетов. Чем выше она у вас - тем лучше и быстрее работает сеть в целом, и тем быстрее проходит интеграция лично для вас. Однако, не надейтесь к скорости обычного интернета, и сразу привыкайте к, максимум, 100кбит/c.

Что ж, спустя пару часов-день после первого запуска, i2p успеет максимально интегрироваться в сеть. Раздел "Состояние" на домашней страницы позволяет отслеживать ошибки и Выключать/Перезагружать роутера. Важно - не стоит отключать i2p резко, ведь практически всегда он участвует в паре-тройке туннелей. Используйте "Тихое Выключение" и "Тихую Перезагрузку" - тогда, роутер отключится после завершения своих сеансов передачи (около 10 мин).

Если i2p показывает вместо "Сеть ОК" показывает что-то вроде "Заблокирован Извне" - не пугайтесь. Во первых - сеть может работать даже с ошибками в сетевых настройках (пусть и хуже), во вторых - причины всех ошибок и способы их устранения перечислены в конце:

http://localhost:7657/confignet

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]