I2P это такая скрытая пиринговая сеть, подробнее можно узнать в Википедии или на официальном сайте. В отличии от TOR, она обеспечивает не анонимный доступ в Интернет, а доступ к собственным ресурсам (сайтам, файлообменникам и т.д.), скрытым из обычной сети. Гейты в «большой» Интернет в ней есть, но они кривые, косые и пользоваться ими не рекомендуется. Расскажу, как ее установить и настроить на Slackware, заодно разрешив пользователям из локальной сети также получать к ней доступ.
Клиент сети написан на Java, потому ее надо сначала установить. На официальном сайте есть рекомендации о необходимой версии:
Java Runtime Version 7 or higher. (Oracle, OpenJDK, or IcedTea Java Version 7 or 8 recommended.
Сама установка довольно проста:
1. Идем, например сюда
2. Скачиваем jdk-8u162-i586-2gds.txz
3. Устанавливаем стандартным образом:
installpkg jdk-8u162-i586-2gds.txz
4. Добавляем в автозагрузку (если вы не сделали отдельного скрипта для запуска сервера, то /etc/rc.d/rc.local
) пути к java:
echo "Add JAVA paths..."
export JAVA_HOME=/usr/lib/java
export MANPATH="${MANPATH}:${JAVA_HOME}/man"
export PATH="${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin"
5. Перезагружаем машину.
6. Вводим в консоли команду java
без параметров. Если все было сделано правильно, то вы должны увидеть вывод краткой справки по параметрам java.
Понятно, что операции с пользователями надо делать под root
или с sudo
.
1. Создаем отдельную группу для I2P:
groupadd i2pgrp
2. Создаем интерактивного (пока, потом мы вырубим ему всю интерактивность) пользователя, например i2psrv
:
useradd -g i2pgrp -m -d /home/i2psrv -s /bin/bash i2psrv
где:
-g i2pgrp
— группа пользователя (i2pgrp
)
-m
— создать домашний каталог
-d /home/i2psrv
— путь к домашнему каталогу (/home/i2psrv
)
-s /bin/bash
— установить пользователю оболочку, в данном случае фиктивную (/bin/bash
)
i2psrv
— имя пользователя
3. Задаем ему пароль:
passwd i2psrv
В интерактивном режиме повторяем пароль 2 раза, о сложности можно не беспокоиться — все равно потом отключим.
1. Скачиваем установщик для Linux с официального сайта
2. Копируем в директорию пользователя (/home/i2psrv
) и меняем владельца файла:
chown i2psrv:i2pgrp i2pinstall_0.9.44.jar
3. Логинимся под новым пользователем.
4. Запускаем установку (через консоль):
java -jar i2pinstall_0.9.44.jar -console
5. Приводят возможность выбрать язык:
Select your language
0 [x] eng
1 [ ] bra
2 [ ] cat
3 [ ] ces
...
Оставляем английский (нажимая ENTER).
6. Далее предлагают продолжить установку:
Нажимаем 1 [ENTER]
7. Опять лицензия и всякая хрень:
Нажимаем 1 [ENTER]
8. Выбор пути для установки. Поскольку устанавливаем в каталоге нового пользователя, пусть так и делает — нажимаем [ENTER]
9. Далее нажимаем O
и [ENTER] (в прошлых версиях было меньше гемора и подтверждений, а сейчас словно анкету в ментовку работать заполняешь 🙂
10. Еще раз предлагают подтвердить, что все ОК (1 и [ENTER])
11. Наконец, тебе говорят, что все ОК:
====================
Installation started
Framework: 5.1.3-84aaf (IzPack)
Platform: linux,version=4.4.14-smp,arch=x86,symbolicName=null,javaVersion=1.8.0_232
[ Starting to unpack ]
[ Processing package: Base (1/1) ]
[ Unpacking finished ]
Installation finished
On most systems, I2P can be started with:
/home/i2psrv/i2p/i2prouter start
If I2P does not start, please try:
/home/i2psrv/i2p/runplain.sh
12. Тебе говорят, что все совсем ОК:
Installation was successful
Application installed on /home/i2psrv/i2p
[ Writing the uninstaller data ... ]
[ Console installation done ]
Если вы намерены использовать I2P только на локальном компьютере, этот шаг можно пропустить.
1. Идем в файл /home/i2psrv/i2p/i2ptunnel.config
, предварительно его куда-нибудь скопировав, и меняем в нем все 127.0.0.1
на адрес нашего компьютера в локальной сети (например на 192.168.0.20
, см. адрес вашего компьютера), таким образом все сервисы I2P будут доступны с любой машины в локальной сети.
2. В том же файле смотрим порты, если где-то у нас какой-то порт для чего-то занят, например на том же порту уже висит HTTP или TOR-proxy, смело меняем порт.
I2P — порядочный сервис, и сам умеет переключать пользователя, под которым запускается. Некоторые даже рекомендуют завести двух пользователей, одного для запуска, другого для установки I2P, но мы, ради экономии времени, делать этого не будем — и запуск и установка будут под одним пользователем. Тем не менее, необходимо отредактировать скрипт i2prouter
(в /home/ip2srv/i2p
):
1. Ищем строку, содержащую RUN_AS_USER=
2. Раскомментируем ее (удаляем #
в начале строки).
3. Дописываем после знака =
имя пользователя (в этом примере «i2psrv"
).
Отслеживание статуса соединения с сетью I2P, ошибки и основные настройки доступны через Web-интерфейс, который запускается на локальной машине на порту 7657
, но если физического доступа к той машине, на которой установлен I2P нет (или лень), то можно управлять ей и с любого компьютера локальной сети.
Внимание! Это не очень одобряется официальными инструкциями. По идее можно сделать безопасный SSL-туннель, как это описывалось в одной из старых инструкций. Но я опишу самый простой вариант, просто поменяю конфиг.
Заходим в clients.config
(/home/i2psrv/i2p
), предварительно сделав бэкап.
И опять меняем 127.0.0.1
на 192.168.0.20
, т.е. меняем адрес машины, по которому должна появиться консоль.
Далее меняем clientApp.4.startOnLoad=true
на clientApp.4.startOnLoad=false
, т.к. на сервере нет смысла открывать панель управления после старта I2P.
Дальнейшая настройка под катом
Переходим по адресу http://i2p-projekt.i2p
I2P довольно медленная сеть и работает с некоторыми перебоями, так что если вместо сайта вы увидите надпись «Сайт недоступен. Возможно, сайт отключен, сеть перегружена или ваш маршрутизатор недостаточно интегрирован с другими пирами. Вы можете повторить операцию.«, то действительно, скорее всего, операцию нужно повторить.
На самом деле интерактивный доступ к системе для пользователя i2psrv
был нужен только на этапе установки сервиса I2P, и я оставлял его до конца настройки на случай, если I2P понадобится переустановить. Теперь консоль пользователю i2psrv
более не нужна. Отключаем:
Редактируем (под root
‘ом) файл /etc/passwd
.
Находим в этом файле строку, начинающуюся с имени пользователя (i2psrv
) и в конце строки меняем /bin/bash
на /bin/false
.
Сохраняем файл.
Остались нераскрытыми темы подписок (как добавлять I2P-сайты неизвестные вашему маршрутизатору I2P), интересные I2P-сайты, другие сервисы I2P, кроме WWW. Может быть когда-нибудь вернусь к этому вопросу, а пока рекомендую детально ознакомиться с документацией на сайте https://geti2p.net/, http://i2p-projekt.i2p и в консоли I2P.