I2PTunnel
I2PTunnel - это инструмент, можно сказать, интерфейс для предоставления сервисов в I2P. Точка назначения I2PTunnel (или, попросту говоря, туннеля) может быть определена с использованием имени хоста (hostname), Base32-адреса, либо полного Base64-адреса назначения (к которому в конечном итоге сводятся и B32 адрес, и имя хоста. Созданный I2P туннель доступен на вашей клиентской машине как localhost:<порт туннеля>. Если вы хотите предоставлять какой-либо сервис в сети I2P, то вы просто создаете I2PTunnel к необходимой связке <IP-адрес>:<Port>. Соответствующий 516-байтовый ключ точки назначения будет сгенерирован роутером для данного сервиса, и сервис будет доступен внутри I2P-сети. Веб-интерфейс для управления I2P-туннелями доступен в панели управления вашего роутера, по ссылке [1]
Туннели по-умолчанию[править]
Серверные туннели[править]
I2P Webserver - туннель, указывающий на встроенную заготовку для сайта на базе встраиваемого, опять же, сервера Jetty, запущенного по адресу localhost:7658 (по-умолчанию отключен). В реальности это самый простой путь создать веб-сайт, но намного лучше использовать специализированные, "взрослые" веб-серверы для подобных задач. Как это сделать подробно описано в статье Руководство по настройке Linux Web сервера.
Если же вы решили всё-таки использовать Jetty, то файлы, которые будут доступны на сайте, лежат в директориях:
Unix - %APPDATA%\I2P\eepsite\docroot
Windows - C:\Users\**username**\AppData\Roaming\I2P\eepsite\docroot
Клиентские туннели[править]
I2P HTTP Proxy - localhost:4444 - HTTP-прокси используемый для того, чтобы просматривать сайты в I2P (ну, и в обычном интернете, к сожалению [1]) анонимно, через I2P. Выход в обычный интернет через I2P использует случайный прокси, указанные на странице настройки тоннеля в графе "Outproxies".
IRC Proxy - localhost:6668 - IRC прокси к дефолтному анонимному IRC-серверу.
mtn.i2p2.i2p - localhost:8998 - Анонимный репозиторий исходного кода I2P, работающий на Monotone.
smtp.postman.i2p - localhost:7659 - SMTP сервер от Постмана [hq.postman.i2p]
pop3.postman.i2p - localhost:7660 - Сопутствующий POP сервер от Постмана [hq.postman.i2p]
Режимы клиентских туннелей[править]
Стандартный[править]
Открывает локальное TCP-соединение, которое соединяется с сервисом в месте назначения (destination) внутри I2P. Туннель направлен в случайный хост из списка точек назначения, разделенных запятыми. (Это не бред - в поле "адрес назначения туннеля" можно указать несколько случайных адресов, непонятно, правда, зачем). Я также замечу, что данный тип туннеля наиболее универсален. По сути он не предоставляет никаких оберток для проходящего трафика, за счет чего можно связать практически любые приложения посредством I2P. Простой пример - ssh. По сути вам необходимо создать стандартный серверный туннель на сервере, который передаёт данные в порт 22, и стандартный клиентский туннель на клиенте, который (вот сюрприз) тоже слушает порт 22 (впрочем, это уже не обязательно). После всего этого вы получите доступ по ssh на свой сервер, причем ещё и анонимный, за счет пропускания трафика через I2P. В итоге получится цепочка:
(ssh-server:22-port) <=> ( server_i2p_tunnel:22-port:destination1 ) <=> I2P <=> (client_i2p_tunnel:22-port:destination2) <=> (ssh-client)
Удобно, согласитесь, для анонимного администрирования сервера, к примеру.
HTTP[править]
Клиентский туннель HTTP. Соединяется с точкой назначения, определенной по URL в HTTP-запросе. Поддерживает проксирование в интернеты, если outproxy указан в настройках туннеля. Вырезает из HTTP-запроса следующие заголовки:
- Accept, Accept-Charset, Accept-Encoding, Accept-Language and Accept-Ranges Так как они очень разнятся от браузера к браузеру, и вполне подходят для использования как идентификаторы пользователя, что может пригодиться для деанонимизации.
- Referer:
- Via:
- From:
Клиент-серверные туннели HTTP, пропускаемые через I2PTunnel принудительно включают компрессию трафика, используя следующие заголовки:
- Accept-Encoding:
- X-Accept-Encoding: x-i2p-gzip;q=1.0, identity;q=0.5, deflate;q=0, gzip;q=0, *;q=0
В зависимости от того, использует туннель outproxy или нет, обёртка также может добавлять следующий User-Agent:
- Outproxy: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
- Внутреннее использование I2P: User-Agent: MYOB/6.66 (AN/ON)
IRC[править]
Создает соединение к случайному IRC-серверу, определенному в списке точек назначения, разделенных запятыми. Только белый список IRC-команд разрешен к исполнению (отправке) из-за проблем других с анонимностью.
Белый список команд:
- MODE
- JOIN
- NICK
- QUIT
- PART
- WALLOPS
- ERROR
- KICK
- H
- TOPIC
SOCKS 4/4a/5[править]
Позволяет использовать I2P-роутер как SOCKS-прокси
SOCKS IRC[править]
Позволяет использовать I2P роутер как SOCKS прокси для доступа к IRC, с белым списком команд, определенных режимом IRC клиента.
CONNECT[править]
Создает HTTP туннель, и использует метод HTTP-запроса "CONNECT" для создания TCP-туннеля. Обычно используется для SSL и HTTPS
Streamr[править]
Создает UDP-сервер, соединенный со Streamr-клиентом I2PTunnel. Туннель Streamr-клиента подпишется на туннель streamr-сервера. (Что это значит не спрашивайте - очевидно речь идет о передаче потоковых данных, наподобие видео и аудио. У желающих узнать подробнее всегда есть возможность покопаться либо в документации, либо в исходном коде роутера).
Иллюстрация работы этого странного туннеля
Режимы серверных туннелей[править]
Standard[править]
Создает точку назначения, направленную в локальный адрес ip:port, главное, чтобы там был реально открыт этот TCP-порт, и на нем висел сервер, который слушает входящие соединения.
HTTP[править]
Создаёт точку назначения, направленную на локальный HTTP-сервер в виде ip:port. Например 127.0.0.1:80. Поддерживает gzip для клиентов с заголовком в запросе Accept-encoding: x-i2p-gzip, в ответ включает заголовок Content-encoding: x-i2p-gzip в таком запросе.
HTTP Bidirectional[править]
Функционирует и как туннель для HTTP-Сервера, так и как клиентский HTTP-туннель, без какой-либо поддержки outproxy. Использоваться может например для тестирования веб-приложений, либо как loopback-интерфейс для диагностических целей.
IRC[править]
Создаёт точку назначения, которая фильтрует регистрирующие клиента последовательности, и передаёт IRC-серверу ключ точки назначения клиента как имя хоста.
Streamr[править]
UDP-клиент, присоединяющийся к созданному media-серверу. A UDP-client that connects to a media server is created. UDP-клиент используется совместно с Streamr сервером.