Предыстория
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 — НЕ РАСШИЯЙТЕ ДИСК ДВАЖДЫ — это приведет к трешу и угарищу. Придется заново записывать образ на флешку и конфигурировать систему. Ибо повредится файловая система.
Затем, надо свежеустановленную операционную систему обновить, так как в образе может быть далеко не последняя версия различных пакетов и прочего.
1 2 |
#sudo aptitude update #sudo aptitude upgrade |
Затем необходимо поставить Java. Обратите внимание — не надо ставить стандартную JRE из пакетов! Она адово тормозит, адово! И вешает rasp намертво через пару часов работы.
Мы будем ставить Java, специально скомпилированную для процессора ARM. Установить её можно так: вводим на rasp’е
1 2 |
#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, но… мы сделаем проще.
1 |
#sudo ln -s /opt/jdk1.8.0/bin/java /bin/java |
Проверяем:
1 |
#java -version |
И чистим:
1 |
#rm jdk-8-ea-b99-linux-arm-vfp-hflt-17_jul_2013.tar.gz |
А где сам роутер?
1 |
#java -jar i2pinstall_0.9.7.jar -console |
Вместо i2pinstall_0.9.9.jar подставить своё название файла установщика роутера.
Путь установки: /home/pi/i2p/
Вот и всё! I2P-роутер установлен!
Настройка
Установлен-то установлен, но работать с ним ещё рано. Он вас просто не «услышит» т.к. ждёт команд с 127.0.0.1, а вовсе не с вашего компьютера. Исправим:
1 2 3 4 5 6 |
#cd i2p #./runplain.sh #kill -9 `cat /tmp/router.pid` или killall java #cd .. #cd .i2p #nano clients.config |
Найдите
1 |
clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/ |
и замените на
1 |
clientApp.0.args=7657 0.0.0.0 ./webapps/ |
Продолжаем:
1 |
#nano i2ptunnel.config |
Найдите строки
1 2 |
tunnel.0.interface=127.0.0.1 tunnel.6.interface=127.0.0.1 |
и замените на
1 2 |
tunnel.0.interface=0.0.0.0 tunnel.6.interface=0.0.0.0 |
Первичная настройка завершена! Можно запустить роутер командами:
1 2 |
#cd /home/pi/i2p #./runplain.sh |
Плюшки (обновляемое)
Оно само!
Если вы хотите, что бы роутер запускался самостоятельно, пропишем это в crontab:
1 |
#crontab -e |
И добавим в конец файла:
1 2 |
0 * * * * /home/pi/i2p/runplain.sh @reboot /home/pi/i2p/runplain.sh |
Быстрое нахождение сайта
Дело в том, что сеть I2P не имеет привычных нам DNS-серверов. Но работать-то как-то надо! Поэтому SusiDNS обращается к уже известным ресурсам для пополнения так называемой «Адресной книги».
Заходим в браузере на http://<Raspberry Pi’s IP>:7657/susidns/subscriptions
и добавляем
1 2 3 4 5 |
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 |