Установка и настройка I2P в Slackware Linux
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_HO ME}/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,symbol icName=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.I2P предполагает 2 способа запуска - через скрипт запуска сервиса:
i2prouter start
Остановка:
i2prouter stop
И, если не работает, то можно организовать запуск через
runplain.sh
:sh /path/to/script/runplain.sh
Запуск в network namespace под названием
provns
:ip netns exec provns /home/i2psrv/server/i2prouter start
или:
ip netns exec provns sudo -u i2psrv sh /home/i2psrv/server/runplain.sh
Далее заходим с браузера по адресу
http://192.168.0.20:7657
В последней версии I2P мы увидим мастер настройки. Аккуратно проходим все этапы, читая инструкции на экране.
Настраиваем пропускную способность (чем больше, тем лучше):
Наконец, попадаем в консоль:
Сеть: ОШИБКА — Часы сбиты (расхождение NNNN): Настраиваем часы. копия
Сеть: ОШИБКА — Нет активных узлов, проверьте подключение к сети и брандмауэр
и
Начальная загрузка не удалась. Смотрите страница настройки начальной загрузки для получения помощи
Кроме действительного отсутствия подключения, например при неправильной настройке брандмауэра, это может случиться из-за кривого пакета java, мне вот пришлось искать правильный. Вот он
В любом случае при такой ошибке идем в log (http://192.168.0.20:7657/logs)
Если в логах встретилось ошибки java - надо переустановить java из другого пакета:
Dec 13, 2019 9:51:08 AM INFO [JobQueue 3/4] networkdb.reseed.ReseedChecker: Downloading peer router information for a new I2P installation
Dec 13, 2019 9:51:09 AM ERROR [Reseed ] uter.networkdb.reseed.Reseeder: Error reseeding from https://i2p.mooo.com/netDb/i2pseeds.s u3?netid=2
java.lang.RuntimeException: Cannot load SunEC provider
at sun.security.pkcs11.P11ECKeyFactory.getS unECProvider(P11ECKeyFactory.java:55)
at sun.security.pkcs11.P11ECKeyFactory.gene ratePublic(P11ECKeyFactory.java:226)
at sun.security.pkcs11.P11ECKeyFactory.impl TranslatePublicKey(P11ECKeyFactory.java:1 10)
at sun.security.pkcs11.P11ECKeyFactory.engi neGeneratePublic(P11ECKeyFactory.java:17 1)
...
Сеть: Заблокирован брандмауэром:
Надо проверить настройки IPTABLES и/или пробросить порт I2P на роутере. I2P выбирает случайный порт для соединения с другими пирами сети при первой загрузке. Порт можно посмотреть в сетевых настройках: http://192.168.0.20:7657/confignet
Описание других ошибок и предупреждений есть во внутренней справке I2P http://192.168.0.20:7657/help#reachabili
Примечание: Замените адрес
192.168.0.20:7657
на ваш адрес сервера.1. Заводим отдельный профиль для I2P.
Заходим на
about:profiles
, нажимаем кнопку "Создать новый профиль" и следуем инструкциям мастера.2. Ставим дополнение FoxyProxy Standart
3. Заходим в Options
4. Нажимаем Add и заполняем форму.
- Title or Description: I2P
- Do not use for localhost and intarnet/private IP addresses: Ставим переключатель в On
- Proxy Type: HTTP
- Proxy IP address or DNS name:
192.168.0.20
- Port:
4444
(по умолчанию, можно изменить в i2ptunnel.config
или в консоли: http://192.168.0.20:7657/i2ptunnelmgr, щелкнув по ссылке I2P HTTP Proxy в таблице Клиентские I2P туннели)- Нажимаем Save
5. Включаем созданный профиль
6. Переключите FoxyProxy в режим Use Enabled Proxies By Patterns And Order
Иначе можно получить ошибку HTTP-proxy I2P:
Ваш браузер не поддерживает iFrames Не используйте прокси-сервер для доступа к консоли маршрутизатора, локальному компьютеру или локальной сети.
7. В качестве домашней страницы можно установить Панель управления I2P (http://192.168.0.20:7657)
Переходим по адресу 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.
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/12/19/usta