Толик Панков
hex_laden
............ .................. ................
November 2020
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Установка и настройка I2P в Slackware Linux

Преамбула

I2P это такая скрытая пиринговая сеть, подробнее можно узнать в Википедии или на официальном сайте. В отличии от TOR, она обеспечивает не анонимный доступ в Интернет, а доступ к собственным ресурсам (сайтам, файлообменникам и т.д.), скрытым из обычной сети. Гейты в "большой" Интернет в ней есть, но они кривые, косые и пользоваться ими не рекомендуется. Расскажу, как ее установить и настроить на Slackware, заодно разрешив пользователям из локальной сети также получать к ней доступ.

Установка Java


Клиент сети написан на 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.

Создание пользователя для I2P


Понятно, что операции с пользователями надо делать под 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-сервисов в локальной сети.


Если вы намерены использовать 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").

Расшаривание Web-консоли


Отслеживание статуса соединения с сетью 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


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.su3?netid=2
java.lang.RuntimeException: Cannot load SunEC provider
at sun.security.pkcs11.P11ECKeyFactory.getSunECProvider(P11ECKeyFactory.java:55)
at sun.security.pkcs11.P11ECKeyFactory.generatePublic(P11ECKeyFactory.java:226)
at sun.security.pkcs11.P11ECKeyFactory.implTranslatePublicKey(P11ECKeyFactory.java:110)
at sun.security.pkcs11.P11ECKeyFactory.engineGeneratePublic(P11ECKeyFactory.java:171)
...


Сеть: Заблокирован брандмауэром:
Надо проверить настройки IPTABLES и/или пробросить порт I2P на роутере. I2P выбирает случайный порт для соединения с другими пирами сети при первой загрузке. Порт можно посмотреть в сетевых настройках: http://192.168.0.20:7657/confignet

Описание других ошибок и предупреждений есть во внутренней справке I2P http://192.168.0.20:7657/help#reachabilityhelp

Примечание: Замените адрес 192.168.0.20:7657 на ваш адрес сервера.

Настройка клиента на примере Firefox


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


На самом деле интерактивный доступ к системе для пользователя 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/ustanovka-i-nastrojka-i2p-v-slackware-linux/

From:
( )Anonymous- this user has disabled anonymous posting.
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs IP addresses of anonymous posters.