Пакет под названием i2p, еще называют роутером. А называется он так потому, что программа занимается маршрутизацией пакетов в сети i2p.
Я буду ориентироваться на Gentoo, так как сам эту систему использую.
Установка:
Сначала нужно выполнить:
Код:
emerge java-service-wrapper
Проще устанавливать пакет i2p не из portage (там вечно с i2p какие-то заморочки), а стандартным инсталлятором, скачанным с сайта
https://geti2p.net/ru/download. Это делается примерно так:
Код:
java -jar i2pinstall_0.9.23.jar
Сразу после установки получаем "грабель". Оказывается, что не работает wrapper, то есть нельзя выполнить:
Чтобы заработал 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 и запускать роутер от нее:
Затем открыть 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 никаких автоматических настроек все равно не будет.
Это вероятно больше для Windows.
На странице
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 и сравнивать аналогичные названия в строках с:
Также на странице
http://localhost:7657/i2ptunnel/index.jsp можно дополнительно изменить еще кое-какие настройки i2p тоннелей:
Если вы не разработчик, то вам едва-ли понадобится mtn.i2p-projekt.i2p. Его можно отключить. Для этого нужно с левой стороны нажать на ссылку mtn.i2p-projekt.i2p, в открывшемся окне настроек отыскать:
И снять с него галку.
Для всех остальных настроек тоннелей, чтобы роутер меньше своевольничал, можно снять галку с:
Код:
Снижать количество туннелей при простое(d):
Примечание. Старайтесь всегда использовать плавное выключение на странице
http://localhost:7657/configservice, когда требуется роутер выключить. Таким образом вы уменьшите вероятность всяких блокировок вашего роутера на других роутерах.