I2P-роутер на Raspberry Pi.

RaspberryPi в корпусе. Содрано с магазина "циферка.рф". Владелец оного в курсе, да.
RaspberryPi в корпусе. Содрано с магазина «циферка.рф». Владелец оного в курсе, да.

Здравствуй, дражайший читатель.

Давно уже руки чесались написать небольшое руководство по тому, как же скрестить вола и трепетную лань, а именно такое новомодное устройство, как Raspberry Pi и I2P роутер. Дело ведь в чем? Роутер написан на Java, которая — что уж там скрывать — довольно требовательна к такому ресурсу, как оперативная память. До сего момента приходилось размещать его либо на домашнем компьютере, либо на удаленном сервере. В общем, где-то, где достаточно ресурсов для относительно комфортной работы роутера. При этом размещение роутера на домашнем компьютере было связано с рядом неудобств. Во-первых, это шум от работающего компьютера. У кого-то есть отдельный системный блок, который можно спрятать куда-то подальше, а у кого-то нет. Во-вторых, неоправданно высокое энергопотребление компьютера, который, в идеале, должен работать 24 х 7. Именно такой режим повышает доверие к вашему роутеру других роутеров, и позволяет обеспечить сравнительно приемлемое время отклика и скорость канала, при работе с I2P-сетью.

Казалось бы, решением данной проблемы мог бы стать Raspberry Pi, но с одной маленькой оговоркой — существующие до недавнего времени модели обладали лишь 256 МБ оперативной памяти, что не лучшим образом сказывалось на способности устройства обслуживать достаточно серьезные аппетиты приложения, к тому же само приложение и его круглосуточная работа — не самоцель. Хочется же ещё прикладного использования — торренты, например. Да и самому что-нибудь «поднять» (например i2p-сайт). Причем, если на сам роутер такого количества памяти худо-бедно хватало, то на дополнительные «опции» — уже нет. Но недавно ситуация поменялась — появился Raspberry Pi model B v2 с 512 МБ оперативной памяти на борту, а кроме того, появилась возможность (не в этой модели, а вообще) повысить частоту работы процессора со штатных 700 МГц до 1 ГГц, что хоть небольшой прирост производительности, а добавит.

Для начала, что будет использовано?

  • Raspberry Pi model B 512 Mb, Cased (кстати, корпус — чертовски удобная штука! Особенно если микрокомпьютер будет валяться где попало или висеть на стене, как у меня).
  • Флеш-карта SDHC от 8 Гб и выше, класс 10.
  • I2P-роутер последней версии (на данный момент 0.9.4).
  • Raspbian — Debian, адаптированный для Raspberry Pi.

Помимо прочего, потребуется LAN-кабель (естественно, подключенный к интернет), и блок питания (когда будете покупать — учтите, что питание RPi получает через micro-USB, а не mini). Собственно в минимальной возможной конфигурации, к RPi подключается LAN кабель, кабель питания, и SDHC карта. Доступ по SSH. В итоге, при установке туда I2P-роутера, мы получаем тихую, автономную систему, способную обслуживать некую минимальную конфигурацию для работы анонимной сети.

Подготовка.

Собственно, покупка самого устройства. Лично я покупал Raspberry Pi с 512 Мб в магазинчике, с забавным названием Циферка (типа непроплаченная реклама хорошего магазина [ а справа — еще одна, уже нет :) ]). На момент покупки стоил он 3200 р. Что понравилось — быстрая доставка и корпус в комплекте (а не по отдельности и за дополнительные деньги). Плюс продают самую необходимую периферию — блоки питания и флешки (с уже записанным Raspbian — за запись наценки, как они говорят, не делают, флешка продается по среднегородской цене — проверял). Как вариант, можно заказать напрямую из Великобритании, например, но ждать надо будет пару-тройку недель (первую версию модели B я вообще ждал 3 или 4 месяца, не помню уже). Как блок питания подходит любая зарядка для телефона, с разъемом micro-USB. Важно, чтобы отдаваемый ток был в районе 0.9 — 1.1А, больше особо не нужно, меньше тоже.

Карточка SDHC — обратите внимание, класс устройства лучше брать повыше — ищите такое, чтобы было написано Class 10. От этого зависит скорость операций чтения-записи на «жесткий диск». В принципе, можно попытаться расширить оперативную память за счет swap-раздела. Но обоснованность такого решения под вопросом — неизвестно, не навредит ли это быстродействию.

Дистрибутив Raspbian в виде img-образа, для записи на флеш-карточку. Взять можно здесь.

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

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

В принципе, опять же, я записывал с помощью ноутбука (ибо на нем 32-разрядная ОС, а на компе 64 — могло из-за этого глючить). Всё просто на самом деле — открываете образ в программе, выбираете диск (флешку, флешку)) и жмете кнопку write.

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

Затем, надо свежеустановленную операционную систему обновить (sudo aptitude update + sudo aptitude upgrade) так как в образе может быть далеко не последняя версия различных пакетов и прочего. Затем необходимо поставить Java. Обратите внимание — не надо ставить стандартную JRE из пакетов! Она адово тормозит, адово! Я поначалу поставил openjdk с cacao — через пару часов просто не смог достучаться до устройства, ибо оно было загружено на 100% без возможности каких-то действий. Только оракловскую яву специально скомпилированную под процессоры ARM, причем там напрямую сказано, что её можно и нужно использовать на Raspberry Pi, так как у него есть аппаратная реализация ряда операций, необходимых для работы ява-машины. Взять ее можно здесь. Инструкция по установке — здесь (язык английский, пока просто физически не успеваю перевести основные моменты, но в целом все просто). Просто распаковываете и настраиваете окружение ($PATH в первую очередь).

После установки — проверяйте, набрав в консоли java -version — должно вывести информацию об установленном JRE.

Ну а затем — стандартная консольная установка роутера (типа java -jar i2pinstall_0.9.4.jar -console), скачанного с официального www.i2p2.de. Рекомендую запилить отдельную папочку под роутер в /home/pi/i2p/ или как-то так. И ставить туда. А вот запуск — запуск через sh-Файл в папке с роутером, называется runplain.sh. Его можно, кстати, прописать в crontab на @reboot. Но это потом, когда проверите работоспособность роутера на устройстве.

Заранее прошу прощения, что так скомкано, но основные моменты всё-таки отражены. Возможно, как у меня в будущем появится чуть больше времени — я опишу подробнее и подготовлю базовый дистрибутив, который останется только записать на флешку и вставить в устройство. Планировалось к этой статье, но обстоятельства сложились иным образом. К чести вышеупомянутого магазинчика (снова мини-реклама, да) у них дистрибутив, поставляемый на флешке, уже содержит правильную java — установленную и настроенную.

Вот, как-то так.

Автор

Алекс Разгибалов

Сумасшедший мужчина, неопределённого возраста, наслаждающийся манией преследования. Паталогически недоверчив, эгоистичен, авторитарен. Вторичные диагнозы - программист и поц. Владеет английским языком на уровне около хренового разговорного. Также знаком с некоторыми другими языками. Интересуется всем и вся, за счёт чего в любой области знания являются поверхностными, неглубокими. Характер невыдержанный. Крепость - 55 градусов.

I2P-роутер на Raspberry Pi.: 16 комментариев

      1. Вот зря Вы так. 100% стало бы на одного хорошего автора больше. Тем более компетентного в такой актуальной теме. Плохие люди и жополизы они везде есть. Считайте, что это еще одно зеркало нашего общества. Там и есть плохие статьи, а есть и очень хорошие. Можно создать аккаунт read-only и разместить статью в Песочнице, уверен в скором времени пришлют инвайт. И если Вы пишете для людей, пишете новые и полезные вещи, то у Вас сразу появится приличная аудитория и площадка для обсуждения идей. Это именно то что нужно любому автору.

      2. Да может быть я и согласен насчет того, что люди разные — но вот сколько я туда попадал, стоит почитать каменты под статьями — и как-то печально становится. Это механизмом кармы обусловлено. Всякое желание там писать пропадает — не люблю зависеть от чужих оценок :) К тому же я в принципе не особенно люблю писать контент на чужие ресурсы. Разве что знаю владельцев лично.

  1. Батенька, ну таки я в тебе не сомневался, ты — крут)
    На счет «циферки» у меня к тебе отдельный вопрос будет)))
    А вот на счет дистра — да, достойная мысль. Но как со временем у тебя?Помнится, ты и своб сборочку i2p начинал делать)) Я, как окончательно перешедший на Linux таки очень даже заинтересован в этом. Ну еще и тор бы загнать туда, но наверное малина не потянет такого удовольствия. Кста, упростил себе жизнь, настроив прозрачную торификацию через Privoxy, ну и конечно не обошел стороной i2p. Так что делюсь простецким конфигом:
    forward .i2p 127.0.0.1:4444
    forward i2p/ 127.0.0.1:4444
    forward-socks5 .[a-z][a-z] 127.0.0.1:9050 .
    forward-socks5 .[a-z][a-z][a-z] 127.0.0.1:9050 .
    forward-socks5 .onion 127.0.0.1:9050 .
    Пили есче статей по секурным вопросам, а то давно что-то не видно.

    1. Отож не понял :)

      Да когда их писать-то… Эту и то 2 недели пилил)) Потому что вроде как удалось добиться устойчивой конфигурации, а об этом никто не знает, бггг) Надо поделиться, ну и заодно немножко заработать, да))

      Кстати у меня к тебе тоже парочка практических вопросов будет :)

      1. Да в том то и дело, что времени всегда нет. Кстати, несколько часов назад новая версия i2p вышла. На счет вопросов наших обоюдных — забил я на аську, ой как редко захожу, т.ч. велкам на почту или в скайп. Я мб первый напишу, а то все собираюсь как обычно а времени нет. Вообще дико рад, что ты возобновил тему ИТ-безопасности, т.к. актуальность ее растет в геометрической прогрессии. Предлагаю затронуть так же тему децентрализации и файлообмена с уклоном на анонимность. Не обращал внимания на эту штуку: http://freedomboxfoundation.org/ ?

      2. О, нечто подобное слышал давно, только там называлось Pirate Box или как-то так. Я вообще заметил одну интересную вещь — в последнее время народ уходит в сторону технической изолированности от систем, контролируемых государством. И это неплохо — немного анархии, особенно в деле информации и связи, это всегда хорошо :) Ибо нехуй. Кстати да, обновил роутер, спасибо )

  2. Интересно было бы посматреть как будет вести себя raspberry-pi в плане производительности, если еще впрридачу к i2p поднять сервак, (mysql nginx php) и как это все будет работать в плане производительности.
    По поводу freedombox тема довольно интересная, но пока очень сырая, к томуже софта на разработку которого они собирали деньги, пока кроме привокси стабильного ничего нет

    1. Ну, у меня лично на RPi проработал роутер вполне нормально месяц. Потом просто отключил за ненадобностью. Насчет мускуля с nginx & php — у меня есть сомнения только насчет мускуля. Больно много она обычно жрет (хотя если настроить лимиты…)
      Вообще я сейчас в процессе работы над поднятием роутера на Cubieboard (наконец-то привезли, ироды!). Там гиг оперативки и процессор помощнее. Посмотрим на результаты.

  3. Здравствуйте! Я пока профан в этой теме, да и в сетях вообщем, но хотелось бы уточнить — как это работает?
    Чтоб мне был доступен i2p я должен подключиться к роутеру, это как я понял можно сделать посредством прокси сервера?
    Тогда следующий вопрос как сделать так чтоб прокси сервер выпускал только меня в i2p? Есть i2p сайты в которых есть картинки из внешнего интернета, что автоматом приводит к деанону. Воозможно ли вообще настроить прозрачно все, чтоб у меня был постоянно включен распберри и на всей моей подсети работали i2p сайты? Второй вопрос противоречит первому я это понимаю:) но просто интересно как это реализуется

    1. Ну, во-первых, в роутере насколько я помню есть возможность разрешить доступ из локальной сети к i2p. Однако, сам не пользовался. Самый простой вариант — поставить на него какой-нить tinyproxy и проксировать им трафик на туннель — т.е. в 127.0.0.1:4444. Затем в браузере надо установить расширение, способное рулить проксями на основе правил. Скажем нечто типа *://*\.i2p/* отправлять в вашу проксю. Это надо сделать на каждом компьютере, который будет должен иметь возможность ходить в сеть. Ну, вот и всё, в принципе. И это да, потенциальный деанон, однако практика показывает, что пока это фигня, ибо всем плевать на нас)))

  4. Я летом развлекался с Распберри A-type (Который экстендед), сделал себе вот такой роутер. Но там была жуткая проблема — даже с оптимизированным Java-пакетом под ARM-процы эта пакость имела average load в районе 5. А иногда и 6-8. Что-то в датском королевстве не так. Проц грелся так, что я даже его фольгой обклеил. Но не спасло.
    Что можно придумать?

    1. Гм… Радиатор? Либо ограничение пропускной способности — у меня, если я верно помню, стояло каких-то 30 тоннелей разделяемых, и загрузка была в районе 20%. После увеличения до 100 — загрузка процессора выросла до 70-80%. Памяти при этом оставалось ещё что-то около 250 Мб, т.е. примерно половина. Кстати говоря — у меня при этом камушек оставался терпимо-теплым. Но опять таки через runplain.sh я делал

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Собирать идеально - не обязательно, просто приблизительно соберите картинку (должен быть включен JavaScript).WordPress CAPTCHA