- PVSM.RU - https://www.pvsm.ru -

Как подключиться к Hyperboria

Введение

На Хабре уже есть несколько статей про сеть Hyperboria:
Hyperboria: Интернет 2.0 [1]
Hyperboria: Как все устроено [2]
Hyperboria: Маршрутизация [3]

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

Здесь же я хочу написать что-то типа FAQ + гайд по подключению.

FAQ

В. О чём вообще речь?
О. О распределённой децентрализованной p2p-сети, строящейся на основе cjdns [4]

В. И зачем оно нужно?
О. Затем, что нынешний Интернет слишком зависимый. Зависит от провайдеров и от регулирующих их государств. Подключение к mesh-сети абсолютно открыто и бесплатно, информация не может быть зацензурированна, а сопоставить ваш ipv6-адрес в сети с реальным физическим адресом невозможно (в случае полноценной mesh-сети).

В. Что нужно для подключения?
О. Девайс с *nix-системой (в т.ч., OS X)

В. А как же Windows?
О. Разработка идёт [5]

В. А доступ в Интернет нужен?
О. Пока что – нужен, но в стратегическом плане переход на полноценную mesh-сеть.

В. Что такое mesh-сеть?
О. Cjdns поддерживает два режима работы:

  • оверлейный режим – когда связь между нодами происходит поверх обычного интернет-соединение
  • Mesh-режим – когда ноды соединяются напрямую (например, по wi-fi два недалеко стоящих роутера), без подключения к Интернет

Подключение

Сборка из исходников

Это официально предлагаемый автором [6] метод установки (перевод мой).
Вот ещё есть README на русском [7] от shifttstas [8]

Вам потребуется git, cmake и всякие прочие стандартные штуки.
Для DebianUbuntu:

sudo apt-get install cmake git build-essential

Дальше, выкачиваем себе репозиторий с github [9] и переключаемся в соответствующую директорию:

git clone https://github.com/cjdelisle/cjdns.git cjdns
cd cjdns

Собственно, сборка:

./do

При успешной сборке в итоге вы увидите

Build completed successfully

Есть инструкции по установке для ArchLinux [10] и для Gentoo [11]

Настройка
0. Проверьте, что есть всё необходимое
cat /dev/net/tun

Если получится такое:

cat: /dev/net/tun: File descriptor in bad state

значит, всё ок! Идём дальше [12]

Если же получили такой ответ

cat: /dev/net/tun: No such file or directory

выполните следующие команды:

sudo mkdir /dev/net &&
sudo mknod /dev/net/tun c 10 200 &&
sudo chmod 0666 /dev/net/tun

Попробуйте снова выполнить

cat /dev/net/tun

Если в ответ получите такое

cat: /dev/net/tun: Permission denied

Вы, вероятно, используете VPS [13] на основе платформы OpenVZ. Попросите хостера включить вам «туннельный интерфейс» TUN/TAP – это стандартная штука, они должны знать, как это сделать.

1. Создайте конфигурационный файл
./cjdroute --genconf >> cjdroute.conf

Этот файл – ваше всё! Там ваши ключи, ipv6-адрес, пароли доступа и т.д. и т.п., соответственно, он должен быть хорошо защищён.

Установите права доступа к фалу только для себя и поместите его, например, в home

chmod 600 cjdroute.conf
mv cjdroute.conf ~/.cjdroute.conf

2. Найдите пиры

Самый сложный шаг – пока сеть, в основном, работает в оверлейном режиме (т.е., поверх интернет-соединения), для подключения к Hyperboria вам нужно найти кого-то, кто уже подключён.

Можно посмотреть на карте проекта [14], попросить в IRC-чатике [15] irc://irc.efnet.org/#cjdns, попробовать спросить на русскоязычном форуме [16].

Есть некоторые публичные ноды, но они плохи тем, что (из-за малого количества нод вообще) ломают децентрализацию и сами становятся центрами подключения. Можно подключиться через публичную ноду, а затем найти кого-нибудь внутри сети (например, существует внутренний сервис микроблогов [17]).

3. Добавьте инфу пира в конфиг

Для подключения к пиру вам потребуется его ip и порт, пароль и публичный ключ. Обычно, всё это передаётся в виде JSON, выглядит примерно так:

"123.45.67.123:34567": {
    "password": "sjfhgwetuyfdgwudbjwedgu34",
    "publicKey": "amnfbwjhfbu4bwhcbuwyrho2iudh384rgiwyebuwygriwebdfgueyr.k"
}

Подобную информацию надо вставить в конфиг в поле 'connectTo'

// Nodes to connect to.
"connectTo":
{
    "0.1.2.3:45678":
    {
        "password": "thisIsNotARealConnection",
        "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile.k"
    }
}

Либо воспользоваться моим веб-интерфейсом (про него чуть дальше [18]).

Можно добавлять сколько угодно пиров (и чем больше – тем лучше).

Если вы хотите предоставить кому-то доступ через вашу ноду, то данные есть в конфиге в комментарии рядом с секцией 'authorizedPasswords'.
Нужно только вписать свой внешний ip-адрес.
В секции 'authorizedPasswords' можно добавлять различные пароли для разных людей, а в json-информацию о пирах в 'connectTo' можно добавлять любые поля (например, информацию о географическом местоположении ноды).

4. Проверьте открытые порты!

После подключения к сети ваша нода получит белый статический ipv6-адрес (впрочем, доступный только из Hyperboria), поэтому важно проверить, нет ли неизвестных вам открытых портов, к которым мог бы кто-то подключиться.

5. Поехали!
sudo ./cjdroute < ~/.cjdroute.conf

Если нужно записывать логи:

sudo ./cjdroute < ~/.cjdroute.conf > cjdroute.log

Также, логи можно смотреть «в прямом эфире» через мою веб-админку [18]

Чтобы выключить cjdns

sudo killall cjdroute

Для запуска cjdns не от рута тоже есть инструкция [19]

Вы в сети

Попробуйте зайти на какой-нибудь Hyperboria-сервис.
Например, аналог Твиттера: http://socialno.de [20]
При первом старте может потребоваться несколько минут на построение маршрутов.

Веб-интерфейс к админскому API cjdns

Я написал небольшую админку на nodejs [21], которую вмерджили в основной репозиторий cjdns.
Для использования вам потребуется node.js [22] и json-файлик '~/.cjdnsadmin' со следующим содержимым:

{"config":"~/.cjdroute.conf"}

Заходим в директорию репозитория cjdns, дальше переходим в директорию админки:

cd contrib/nodejs/admin

Устанавливаем node.js-зависимости с помощью npm:

npm install

Запускаем админку:

node admin.js

По-умолчанию, админка запускается на http://localhost:8084 [23], никак не закрыта для доступа извне, так что не держите её запущенной постоянно.

В админке доступно выполнение методов API, просмотр логов разного уровня в прямом эфире, редактирование пиров. Если дойдут руки — скоро будет доступна визуальная карта сети.
При сохранении конфига из админки после изменения пиров, предыдущая версия сохраняется в директории конфига.
Единственный минус – при сохранении удаляются все комментарии, так что если что – смотрите в самую первую версию конфига.

Подключение в mesh-режиме

Данный тип подключения пока что работает только для linux и не работает в OS X
В идеальном случае, всё просто: надо найти в конфиге закомментированную секцию 'ETHInterface' и раскомментировать её.
Также, надо указать в поле 'bind' имя сетевого интерфейса, который вы хотите использовать для поиска нод (например, 'eth0').

Перезапустите cjdroute и если в вашей сети (физической) будут другие cjdns-ноды с включённым 'ETHInterface' – они друг к другу автоматически подключатся.

При этом, если ни одна из нод не подключена к пирам из Hyperboria, то вы получите собственную cjdns-локалку, с по-умолчанию шифрованным траффиком и прочими радостями.

Сборка OpenWRT с поддержкой cjdns

Если вы хотите установить cjdns на роутер, придётся повозиться немного дольше.

Раз вы об этом задумались, скорее всего, вам не составит труда прочитать инструкцию на английском [24].
Основной косяк, который допустил я сам при первой попытке – это попытка собирать OpenWRT прямо на роутере :)
Конечно, это надо делать на нормальном компе, а потом уже скомпилированную прошивку устанавливать на роутер.

Предварительно, проверьте свой роутер на совместимость [25].

К слову, на моём Netgear WNDR3600 оно завелось, но через неделю роутер стал жутко тупить (даже при выключенном cjdns), пришлось снести OpenWRT и поставить обратно dd-wrt.

Захват мира

Глобальные планы автора cjdns и сообщества вообще – замена нынешней сети Интернет на Hyperboria.
Сейчас есть несколько mesh-участков сети в Штатах (самый большой, если не ошибаюсь, в Сиэтле).

Предлагаю заинтересованным в построении сети в России (и в Москве, в частности) приходить на форум [26] для разработки плана захвата.

Что уже есть в сети

Список известных сайтов [27]

Сайты о проекте

http://hyperboria.net [28]
http://projectmeshnet.org/ [29]
Вики проекта [30]
Русскоязычный сайт и форум [31]

Автор: norlin

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/42343

Ссылки в тексте:

[1] Hyperboria: Интернет 2.0: http://habrahabr.ru/post/181862/

[2] Hyperboria: Как все устроено: http://habrahabr.ru/post/182652/

[3] Hyperboria: Маршрутизация: http://habrahabr.ru/post/183606/

[4] cjdns: https://github.com/cjdelisle/cjdns/

[5] идёт: https://github.com/cjdelisle/cjdns/issues/213

[6] предлагаемый автором: https://github.com/cjdelisle/cjdns/#how-to-install-cjdns

[7] README на русском: https://github.com/cjdelisle/cjdns/blob/master/README_RU.md#%D0%9A%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-cjdns

[8] shifttstas: http://habrahabr.ru/users/shifttstas/

[9] репозиторий с github: https://github.com/cjdelisle/cjdns

[10] для ArchLinux: https://wiki.projectmeshnet.org/Install_on_ArchLinux

[11] для Gentoo: https://wiki.projectmeshnet.org/Install_on_Gentoo

[12] Идём дальше: #config

[13] VPS: https://www.reg.ru/?rlink=reflink-717

[14] карте проекта: http://map.projectmeshnet.org/

[15] в IRC-чатике: http://chat.efnet.org:9090/?channels=#cjdns

[16] на русскоязычном форуме: http://hype.rusblock.com/forum/index.php

[17] сервис микроблогов: http://socialno.de/

[18] чуть дальше: #web

[19] есть инструкция: https://github.com/cjdelisle/cjdns/blob/master/doc/non-root-user.md

[20] http://socialno.de: http://socialno.de

[21] админку на nodejs: https://github.com/cjdelisle/cjdns/tree/master/contrib/nodejs/admin

[22] node.js: http://nodejs.org/

[23] http://localhost:8084: http://localhost:8084

[24] инструкцию на английском: https://github.com/cjdelisle/cjdns-openwrt

[25] проверьте свой роутер на совместимость: http://wiki.openwrt.org/toh/start

[26] на форум: http://hype.rusblock.com/forum/viewforum.php?f=2

[27] Список известных сайтов: https://wiki.projectmeshnet.org/Known_Hyperboria_sites#Websites

[28] http://hyperboria.net: http://hyperboria.net

[29] http://projectmeshnet.org/: http://projectmeshnet.org/

[30] Вики проекта: http://wiki.projectmeshnet.org/

[31] Русскоязычный сайт и форум: http://hype.rusblock.com

[32] Источник: http://habrahabr.ru/post/192252/