I2P под Linux

I2P под Linux

@PhoenixGruppe

Пакет под названием i2p, еще называют роутером. А называется он так потому, что программа занимается маршрутизацией пакетов в сети i2p.

Установка

Сначала нужно выполнить:

emerge java-service-wrapper

Проще устанавливать пакет i2p не из portage (там вечно с i2p какие-то заморочки), а стандартным инсталлятором, скачанным с сайта https://geti2p.net/ru/download. Это делается примерно так:

java -jar i2pinstall_0.9.23.jar

Сразу после установки получаем "грабель". Оказывается, что не работает wrapper, то есть нельзя выполнить:

...i2prouter start

Чтобы заработал wrapper, нужно выполнить:

cp /usr/bin/wrapper ~/i2p/i2psvc

cp /usr/share/java-service-wrapper/lib/wrapper.jar ~/i2p/i2p/lib

cp /usr/lib64/java-service-wrapper/libwrapper.so ~/i2p/i2p/lib

Следующий момент, для которого в общем-то и нужна была эта заморочка с wrapper -ом (выполнить простой запуск роутера можно и с помощью runplain.sh, находящегося в каталоге программы). Это задание памяти для роутера. В какой-то момент роутер все равно начнет просить у вас добавить памяти, а если выполняется запуск с помощью runplain.sh, то память добавить проблематично (точнее я не знаю как). Если запуск выполняется с помощью i2prouter, то нужно открыть файл ~/i2p/wrapper.config и изменить в нем строку:

wrapper.java.maxmemory=128

на строку

wrapper.java.maxmemory=1024

Или на то количество памяти, которое вы можете разрешить использовать i2p роутеру.

Теперь можно запускать стандартно:

cd ~/i2p ./i2prouter start

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

Для просмотра:

java-config --list-available-vms

Для выбора:

java-config --set-system-vm номер_машины

Например:

java-config --set-system-vm 3

Сейчас пакет установлен, но нужно настроить файерволл.

Несмотря на то, что порой пишут, что достаточно одного порта, это не совсем верно. Одного порта достаточно только теоретически, при этом придется дольше ждать, пока другие роутеры не найдут ваш роутер. То есть процесс соединений будет более долгий. Если же вы хотите, чтобы ваш роутер был более активным в плане соединений, то порта только для входящих соединений уже недостаточно. Смысл в том, что другие роутеры с вашим роутером соединяются, используя порт для входящих соединений. А ваш роутер с другими роутерами соединяется с произвольных портов из верхнего диапазона (по крайней мере, преимущественно). Из произвольного диапазона приходит и ответы от других роутеров.

Нужно будет открыть все неиспользуемые порты из верхнего диапазона. А чтобы через эти порты никто, кроме i2p роутера не ходил, нужно создать отдельную группу i2p и запускать роутер от нее:

groupadd i2p

Затем открыть visudo и добавить строку вида:

name_user ALL=(name_user:i2p) NOPASSWD: /home/name_user/i2p/i2prouter start

Например:

pupkin ALL=(pupkin:i2p) NOPASSWD: /home/pupkin/i2p/i2prouter start

Теперь вы можете запускать роутер с помощью sudo примерно так:

sudo -u pupkin -g i2p /home/pupkin/i2p/i2prouter start Если вы задали определенный порт для входящих соединений на странице http://localhost:7657/confignet , то его нужно соответственно открыть. Пускай этот порт имеет номер 1025, тогда:

iptables -A INPUT -p tcp -m tcp --dport 1025 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sport 1025 -m owner --gid-owner 1004 -j ACCEPT

iptables -A INPUT -p udp -m udp --dport 1025 -j ACCEPT

iptables -A OUTPUT -p udp -m udp --sport 1025 -m owner --gid-owner 1004 -j ACCEPT

Где --gid-owner 1004 - это GID ранее созданной группы i2p.

Порты из верхнего диапазона открываются примерно так:

Для исходящих соединений:

iptables -A OUTPUT -p tcp -m tcp -m owner --gid-owner 1004 --sport 1026:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p udp -m udp -m owner --gid-owner 1004 --sport 1026:65535 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Для входящих соединений:

iptables -A INPUT -p tcp -m tcp --dport 1026:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT

iptables -A INPUT -p udp -m udp --dport 1026:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Настройки браузера (Firefox) для работы с i2p:

Выбрать в меню "Edit", "Preferences", "Advanced". Или набрать в адресной строке:

about:preferences#advanced

Там выбрать вкладку "Network и нажать на кнопку "Settings". В появившемся окне нужно выбрать "Manual proxy configuration", затем для HTTP Proxy добавить адрес 127.0.0.1 и порт 4444. Для SSL Proxy выбрать 127.0.0.1 и порт 4445. Не использовать прокси (No Proxy for) для localhost, 127.0.0.1.

Базовой страницей веб-интерфейса является http://localhost:7657/home .

Теперь о настройках собственно роутера. Наиболее важные настройки находятся на страницах:

http://localhost:7657/confignet

http://localhost:7657/config

http://localhost:7657/configtunnels

На странице http://localhost:7657/confignet можно (и желательно) задать IP-адрес и входящий порт.

Кроме того, следует сказать об опции "Скрытый режим, не публиковать IP (предотвращает транзит трафика)". Данная опция - это фактически клиентский режим для сети i2p. То есть роутер перестает быть роутером, а становится клиентом, о нем знают только те роутеры, с которыми он соединяется. Включать или нет - ваше личное дело.

Опция uPNP - это автоматическая настройка файервола. Тем, кто соображает в настройках файервола, желательно эту галочку снять. Всем остальным, теоретически, наоборот, оставить включенной. Теоретически потому, что в случае Gentoo никаких автоматических настроек все равно не будет.

На странице http://localhost:7657/config нужно настроить соотношение скоростей. Здесь важно поставить высокие значения. Высокие значения нужны, чтобы роутер не пытался ограничивать и так небольшую скорость передачи данных в i2p сети. Я ставлю 15000 КБ и на прием, и на отдачу, 30% долю транзитного трафика. Но даже при очень высоких установленных значениях очень маловероятно, что вы сумеете добиться подобных скоростей, поэтому нет смысла беспокоиться о том, что трафик i2p займет все доступную пропускную способность для вашего интернет канала и будет мешать прочим действиям.

На странице http://localhost:7657/configtunnels находятся настройки тоннелей. Каждый тоннель - это канал для связи между конечными точками А и Б. Между такими точками находится еще несколько i2p маршрутизаторов - хопов, через которые проследует пакет. Чем меньше количество хопов, тем больше скорость, тем меньше безопасность. Чем больше хопов, тем больше безопасность, тем меньше скорость.

Если вы не агент 007, то желательно поставить два хопа. Для обычного пользователя этого достаточно. Ну, а если-же вы неуловимый Джо, или просто склонны к мазохизму, то количество хопов нужно поставить как можно больше.

Количество тоннелей - это количество параллельных каналов связи между конечными точками А и Б. Вот их для устойчивости связи и повышения ее скорости нужно ставить больше. Однако нужно учитывать, что чем больше будет тоннелей, тем сильнее будет нагрузка на ресурсы компьютера.

Резервное количество тоннелей - это количество тоннелей, которое отведено на случай замены рабочих тоннелей, если те по какой-то причине "выпадают". Однако есть мнение, что эта возможность пока не работает.

Floodfill маршрутизатор - это маршрутизатор, который помогает в сети i2p формировать базы данных обо всех сервисах и пользователях (маршрутизаторах) сети. Это аналог сервера директорий в Tor. Совместно с другими такими же узлами содержит информацию об узлах сети, к которым можно подключаться.

Зондирующие тоннели - это тоннели, которые используются для связи с Floodfill маршрутизаторами. Все значения этих тоннелей следует оставить по умолчанию. Впрочем, если связь неустойчива, то можно попробовать добавить несколько рабочих тоннелей.

Во всех остальных случаях количество рабочих тоннелей следует увеличивать, лучше до максимума.

Однако после увеличения количества тоннелей, роутер порой имеет обыкновение писать что-нибудь вроде:

ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком большие количества туннелей.

Ничего опасного на самом деле нет. Впрочем, справедливости ради, может быть тут речь идет преимущественно о Windows, я не проверял.

Иногда роутер просто сбрасывает настройки тоннелей на настройки по умолчанию. Поэтому имеет смысл задать некоторые настройки по умолчанию в файле ~/.i2p/i2ptunnel.config . В этом файле строки вида:

...option.inbound.length=2

...option.outbound.length=2

Задают количество хопов для входящих и исходящих тоннелей. В данном случае 2.

Строки вида:

...option.inbound.quantity=6

...option.outbound.quantity=6

Задают количество входящих и исходящих тоннелей. В данном случае 6.

Пример записи:

tunnel.0.option.inbound.length=2

tunnel.0.option.inbound.quantity=6

tunnel.0.option.outbound.length=2

tunnel.0.option.outbound.quantity=6

По умолчанию, tunnel.0 - это обычно HTTP Proxy. Но для более легкого ориентирования можно смотреть названия на странице http://localhost:7657/i2ptunnel/index.jsp и сравнивать аналогичные названия в строках с:

...name

Также на странице http://localhost:7657/i2ptunnel/index.jsp можно дополнительно изменить еще кое-какие настройки i2p тоннелей:

Если вы не разработчик, то вам едва-ли понадобится mtn.i2p-projekt.i2p. Его можно отключить. Для этого нужно с левой стороны нажать на ссылку mtn.i2p-projekt.i2p, в открывшемся окне настроек отыскать:

Автозапуск(A):

И снять с него галку.

Для всех остальных настроек тоннелей, чтобы роутер меньше своевольничал, можно снять галку с:

Снижать количество туннелей при простое(d):

Примечание.

Старайтесь всегда использовать плавное выключение на странице http://localhost:7657/configservice, когда требуется роутер выключить. Таким образом вы уменьшите вероятность всяких блокировок вашего роутера на других роутерах

Благодарим за предоставленную информацию @Inside_skynet

https://t.me/PhoenixTrading