Поднимаем I2P-роутер на Raspberry Pi

















Предыстория

Raspberry Pi сферический в вакууме.

Raspberry Pi — маленький, малопотребляющий и относительно недорогой компьютер на ARM. До недавнего времени был доступен только в A-конфигурации т.е. только с 256мб оперативной памяти. Как только стала доступна 512-мегабайтовая конфигурация, он был мною заказан.

… и валялся в качестве маленького торрент-клиента за телевизором. Прослышав про Закон об Информации (он же антипиратский), я подумал поставить анонимайзер I2P. И тут попался первый подводный камень: I2P-роутер должен работать долго, очень долго, а то и круглосуточно для лучшей интеграции в сеть. А поставлю-ка я его на мой rasp!

Подготовка

Что нам потребуется:

Собственно, Raspberry Pi ревизии B с блоком питания

Флеш-карта SDHC от 8 Гб и выше, класс 10.

I2P-роутер последней версии (на данный момент 0.9.9). Скачать можно здесь. Пункт «Linux/BSD/Solaris Graphical installer»

Raspbian — Debian, адаптированный для Raspberry Pi. Скачать можно здесь.



Первые танцы с бубном

Итак, для начала надо записать образ на флешку. Как это сделать подробно описано в официальном мануале. На английском, правда, но общий смысл в том, что надо перенести «один в один» скачанный образ на флешку, причем не простым копированием, а специальной софтинкой, типа никсового dd, либо Win32DiskImager — если у вас таки windows. На 64 работает фигово, надо заливать через 32-разрядную версию ОС.



Про начальное конфигурирование через rasspi-config — НЕ РАСШИЯЙТЕ ДИСК ДВАЖДЫ — это приведет к трешу и угарищу. Придется заново записывать образ на флешку и конфигурировать систему. Ибо повредится файловая система.



Затем, надо свежеустановленную операционную систему обновить, так как в образе может быть далеко не последняя версия различных пакетов и прочего.

#sudo aptitude update

#sudo aptitude upgrade


Затем необходимо поставить Java. Обратите внимание — не надо ставить стандартную JRE из пакетов! Она адово тормозит, адово! И вешает rasp намертво через пару часов работы.

Мы будем ставить Java, специально скомпилированную для процессора ARM. Установить её можно так: вводим на rasp'е

#wget http://www.java.net/download/jdk8/archive/b99/binaries/jdk-8-ea-b99-linux-arm-vfp-hflt-17_jul_2013.tar.gz

#sudo tar zxvf jdk-8-ea-b99-linux-arm-vfp-hflt-17_jul_2013.tar.gz -C /opt


В принципе, по инструкции, надобно настроить окружение $PATH, но… мы сделаем проще.

#sudo ln -s /opt/jdk1.8.0/bin/java /bin/java


Проверяем:

#java -version


И чистим:

#rm jdk-8-ea-b99-linux-arm-vfp-hflt-17_jul_2013.tar.gz




А где сам роутер?

#java -jar i2pinstall_0.9.7.jar -console
Вместо i2pinstall_0.9.9.jar подставить своё название файла установщика роутера.

Путь установки: /home/pi/i2p/

Вот и всё! I2P-роутер установлен!



Настройка

Установлен-то установлен, но работать с ним ещё рано. Он вас просто не «услышит» т.к. ждёт команд с 127.0.0.1, а вовсе не с вашего компьютера. Исправим:

#cd i2p

#./runplain.sh
#kill -9 `cat /tmp/router.pid` или killall java
#cd ..
#cd .i2p
#nano clients.config


Найдите
clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/
и замените на
clientApp.0.args=7657 0.0.0.0 ./webapps/


Продолжаем:

#nano i2ptunnel.config


Найдите строки

tunnel.0.interface=127.0.0.1

tunnel.6.interface=127.0.0.1


и замените на

tunnel.0.interface=0.0.0.0

tunnel.6.interface=0.0.0.0


Первичная настройка завершена! Можно запустить роутер командами:

#cd /home/pi/i2p

#./runplain.sh




Плюшки (обновляемое)

Оно само!
Если вы хотите, что бы роутер запускался самостоятельно, пропишем это в crontab:

#crontab -e


И добавим в конец файла:

0 * * * * /home/pi/i2p/runplain.sh

@reboot /home/pi/i2p/runplain.sh




Быстрое нахождение сайта
Дело в том, что сеть I2P не имеет привычных нам DNS-серверов. Но работать-то как-то надо! Поэтому SusiDNS обращается к уже известным ресурсам для пополнения так называемой «Адресной книги».

Заходим в браузере на http://<Raspberry Pi's IP>:7657/susidns/subscriptions

и добавляем
http://www.i2p2.i2p/hosts.txt

http://i2host.i2p/cgi-bin/i2hostetag
http://stats.i2p/cgi-bin/newhosts.txt
http://tino.i2p/hosts.txt
http://inr.i2p/export/alive-hosts.txt