Cjdns сеть

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Cjdns сеть

Непрочитанное сообщение Olej » 18 окт 2014, 21:02

Собственно Cjdns - это протокол, главным образом протокол динамической маршрутизации.
Cjdns — это сетевой протокол и его реализация, с помощью которого можно создать масштабируемую, безопасную и простую в настройке сеть. Сеть может работать как поверх интернет соединения, так и между маршрутизаторами напрямую.
Но собственно на сайте http://cjdroute.net/ ... и других ресурсах посвящённых cjdns, Cjdns сетью называют сеть Hyperboria:
Hyperboria это децентрализованная, одноранговая сеть, которая построена на движке маршрутизации cjdns. Она была создана для того, чтобы любые данные, при передаче через интернет, были надежно зашифрованы, а скорость доступа к ним стремилась к максимально возможной.
После установки Hyperboria на вашем ПК будет создан виртуальный тунельный адаптер - TUN ему будет назначен уникальный, случайный IPv6 адрес, который невозможно никак соотнести с вашим реальным IPv4 адресом. Таким образом, любая программа, которая умеет работать с IPv6 протоколом - сможет работать через сеть Hyperboria !
cjdns работает на любом Unix - совместимой OS, Ubuntu, Mac OS X
(интересно ... а для Windows такого нет? часто бывает как-раз наоборот)

Там же инструкция по инсталляции с git-исходниками и всем нужным для инсталляции, и есть та же страница инструкции (и описания) на русском языке:
Безопасная, зашифрованная сеть для обычных людей.

Cjdns — это зашифрованная IPv6 сеть, в которой используются публичные ключи шифрования для присвоения публичного адреса и распределённой таблицы маршрутизации (DHT). Это позволяет создавать сети с очень простой настройкой, которые будут защищены от потенциальных проблем ныне существующих IPv4 и IPv6 сетей.
В данный момент работает тестовая сеть, в которой имеется от 500 до 1000 узлов.
Cjdns была протестирована на x86, amd64, ARMv5, ARMv7, MIPS, PowerPC32 и PowerPC64. Тестирование на различных Linux системах продолжается.
Об инсталляции как-нибудь попозже ... а сейчас о том, зачем Cjdns (Hyperboria) интересует меня и может заинтересовать вас:

1. Протокол cjdns называют одним из (альтернативно) базовых инструментов постоения Mesh-сети.

2. Сеть Hyperboria очень напоминает (по возможностям, а не по технике реализации) TOR сеть для создания зашифрованной защищённой сети обмена.

Если кому эти 2 позиции неинтересны, то вам не стоит и терять время дальше в разбирательствах... ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Cjdns сеть

Непрочитанное сообщение Olej » 18 окт 2014, 21:12

Olej писал(а): 2. Сеть Hyperboria очень напоминает (по возможностям, а не по технике реализации) TOR сеть для создания зашифрованной защищённой сети обмена.
Но есть и существенные отличия:
В отличии от TOR, I2P, и Freenet’a, cjdns планировалась не как анонимная есть. Она не использует случайную маршрутизацию, динамические маршруты и другие технологии для обеспечения анонимности.
Наоборот, cjdns использует самый оптимальный маршрут. Мы пошли на такой шаг, для обеспечения максимальной производительности.
Cjdns гарантирует, что пакет по пути был не кем не модифицирован, что подтверждается криптографическими средствами, которые используются в этом протоколе.
Cjdns защищает информацию которая поступает к вам, от использования заведомо ложного маршрута, что позволяет полностью избежать атаки man-in-the-middle.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Cjdns сеть

Непрочитанное сообщение Olej » 18 окт 2014, 22:54

Olej писал(а):Об инсталляции как-нибудь попозже ...
Подробно описана Как установить cjdns.

Почти (!) по инструкции (установка в RPM дистрибутиве Fedora 20, у них там всё описано в DEB дистрибутиве Debian - пишу для себя подробный конспект, но может кому пригодится):

- Скачиваем:

Код: Выделить всё

[Olej@modules CJ]$ git clone https://github.com/cjdelisle/cjdns.git cjdns
Cloning into 'cjdns'...
remote: Counting objects: 24464, done.
remote: Total 24464 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (24464/24464), 17.92 MiB | 490.00 KiB/s, done.
Resolving deltas: 100% (14519/14519), done.
Checking connectivity... done.
[Olej@modules CJ]$ cd cjdns
- Компилируем:

Код: Выделить всё

[Olej@modules cjdns]$ ./do
Installing node.js
You can bypass this step by manually installing node.js v0.8.15 or newer
--2014-10-18 21:18:07--  http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-x64.tar.gz
Распознаётся nodejs.org (nodejs.org)... 165.225.133.150
Подключение к nodejs.org (nodejs.org)|165.225.133.150|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 5472950 (5,2M) [application/octet-stream]
Сохранение в: «STDOUT»

100%[=================================================================================>] 5 472 950    505KB/s   за 13s
/2014-10-18 21:18:22 (414 KB/s) - записан в stdout [5472950/5472950]

Initialize 1ms
Copy dependencies
Compiler supports link time optimization
Build NaCl
Creating directories
Getting system type
System is [amd64]
Using premade plan at [node_build/plans/amd64_plan.json]
Creating system specific integer type headers
beginning build
implementations generated
Compiling jsbuild/objects_internal/crypto_hashblocks_sha512_inplace_blocks.c.o
Compiling jsbuild/objects_internal/crypto_scalarmult_curve25519_donna_c64_base.c.o
Compiling jsbuild/objects_internal/crypto_scalarmult_curve25519_donna_c64_smult.c.o
Compiling jsbuild/objects_internal/crypto_hash_sha512_ref_hash.c.o
Compiling jsbuild/objects_internal/crypto_stream_salsa20_amd64_xmm6_stream.s.o
Compiling jsbuild/objects_internal/crypto_verify_16_ref_verify.c.o
...
Checking codestyle
Test 409ms
Pack 1ms
Get mtimes 5ms
Save State 10ms
Build completed successfully, type ./cjdroute to begin setup.
Total build time: 16961ms.
- Установка:

Код: Выделить всё

[Olej@modules cjdns]$ ./cjdroute
Cjdns AMD64 64-bit LittleEndian linux +seccomp
Usage: ./cjdroute [--help] [--genconf] [--bench] [--version] [--cleanconf] [--nobg]
...
... и проверяем, что сетевой интерфейс создан:

Код: Выделить всё

[Olej@modules cjdns]$ ls -l /dev/net/tun
crw-rw-rw-. 1 root root 10, 200 окт 18 21:22 /dev/net/tun
[Olej@modules cjdns]$ cat /dev/net/tun
cat: /dev/net/tun: Дескриптор файла в плохом состоянии
Именно так должно быть!

Здесь генерируется конфиг-файл

Код: Выделить всё

[Olej@modules cjdns]$ ./cjdroute --genconf >> cjdroute.conf
[Olej@modules cjdns]$ ls -l cjdroute.conf
-rw-rw-r--. 1 Olej Olej 8101 окт 18 21:26 cjdroute.conf
Теперь нужно:
Найдите пира.
Для доступа в сеть вам потребуется человек который уже в сети.
И тут начинаются разбежности... :-o
Их IRC-канал (и русский и английский) URL указан неправильно - сервер не находится.
Через WEB-интерфейс к IRC - есть, но там на мои "глас вопиющего в пустыни" ;-) не отозвался никто за 3 часа, и вообще нет никакой активности ... не повезло :-o
Беру данные с тестового пира, что тоже нехорошо...
Дальше:
В файле cjdroute.conf вы увидите:

Код: Выделить всё

        // Nodes to connect to.
        "connectTo":
        {
            // Add connection credentials here to join the network
            // Ask somebody who is already connected.
        }
После добавления данных пира он будет выглядеть как-то так:
Болт вам! нет там такой секции "connectTo"!
Ну дописал в хвост полностью и секцию + тестовый украинский пир:

Код: Выделить всё

    "connectTo": {
        // Ukrane public node
        "195.34.197.189:42998":{
            "password": "5cvyb5mvb1pktcqhqcwjq5ng82lhjdx",
            "publicKey":"sn6lbr223vznkv4hr1prgxzcs7gw8fmb222huprd8zyfv617du90.k"}
    }
- Запуск:

Код: Выделить всё

[Olej@modules cjdns]$ sudo ./cjdroute < cjdroute.conf
[sudo] password for Olej: 
1413658961 INFO cjdroute2.c:540 Cjdns AMD64 64-bit LittleEndian linux +seccomp
1413658961 INFO cjdroute2.c:544 Checking for running instance...
1413658961 DEBUG AdminClient.c:333 Connecting to [127.0.0.1:11234]
1413658961 DEBUG UDPAddrInterface.c:289 Bound to address [0.0.0.0:56101]
1413658961 INFO cjdroute2.c:570 Forking angel to background.
1413658961 DEBUG Pipe.c:135 Buffering a message
1413658961 DEBUG cjdroute2.c:607 Sent [200] bytes to angel process
1413658961 INFO RandomSeed.c:42 Attempting to seed random number generator
1413658961 INFO RandomSeed.c:50 Trying random seed [/dev/urandom] Success
1413658961 INFO RandomSeed.c:56 Trying random seed [sysctl(RANDOM_UUID) (Linux)] Failed
1413658961 INFO RandomSeed.c:50 Trying random seed [/proc/sys/kernel/random/uuid (Linux)] Success
1413658961 INFO RandomSeed.c:64 Seeding random number generator succeeded with [2] sources
1413658961 DEBUG AngelInit.c:165 Getting pre-configuration from client
1413658961 DEBUG Pipe.c:232 Pipe [/tmp/cjdns_pipe_client-angel-jxlq9sgs4u3vpgw4f95rldxxh17r5t] established connection
1413658961 DEBUG Pipe.c:232 Pipe [/tmp/cjdns_pipe_client-angel-jxlq9sgs4u3vpgw4f95rldxxh17r5t] established connection
1413658961 DEBUG Pipe.c:254 Sending buffered message
1413658961 DEBUG AngelInit.c:169 Finished getting pre-configuration from client
1413658961 INFO AngelInit.c:196 Initializing core [/home/Olej/cjdns/cjdroute]
1413658961 DEBUG AngelInit.c:200 Sending pre-configuration to core.
1413658961 DEBUG Pipe.c:135 Buffering a message
1413658961 INFO RandomSeed.c:42 Attempting to seed random number generator
1413658961 INFO RandomSeed.c:50 Trying random seed [/dev/urandom] Success
1413658961 INFO RandomSeed.c:56 Trying random seed [sysctl(RANDOM_UUID) (Linux)] Failed
1413658961 INFO RandomSeed.c:50 Trying random seed [/proc/sys/kernel/random/uuid (Linux)] Success
1413658961 INFO RandomSeed.c:64 Seeding random number generator succeeded with [2] sources
1413658961 INFO LibuvEntropyProvider.c:59 Taking clock samples every [1000]ms for random generator
1413658961 DEBUG Pipe.c:232 Pipe [/tmp/cjdns_pipe_dwqlxfq56d7jk1lwbj4yvxd0d6z1h8] established connection
1413658961 DEBUG Pipe.c:232 Pipe [/tmp/cjdns_pipe_dwqlxfq56d7jk1lwbj4yvxd0d6z1h8] established connection
1413658961 DEBUG Pipe.c:254 Sending buffered message
1413658961 DEBUG UDPAddrInterface.c:250 Binding to address [127.0.0.1:11234]
1413658961 DEBUG UDPAddrInterface.c:289 Bound to address [127.0.0.1:11234]
1413658961 DEBUG Hermes.c:158 Sending [64] bytes to angel [d5:error4:none5:admind4:bind15:127.0.0.1:11234e4:txid8:00000000e�].
1413658961 DEBUG AdminClient.c:333 Connecting to [127.0.0.1:11234]
1413658961 DEBUG UDPAddrInterface.c:289 Bound to address [0.0.0.0:34905]
1413658961 INFO Configurator.c:126 Checking authorized password 0.
1413658961 INFO Configurator.c:148 Adding authorized password #[0] for user [password [0]].
Cjdns has started up in the background

Код: Выделить всё

[Olej@modules 18]$ ps -A | grep cj
 7100 pts/19   00:00:00 cjdroute
 7101 pts/19   00:00:00 cjdroute
Вот он, новый IPv6 интерфейс:

Код: Выделить всё

[Olej@modules cjdns]$ ifconfig tun0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1312
        inet6 fc89:457e:85b:962f:9be3:dd16:3400:183d  prefixlen 8  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1166  bytes 209880 (204.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Теперь бу хорошо разобраться ;-) каким же приложением IPv6 лучше проверить работоспостобность и потестировать. Нужно бы такое, у кого IPv4 запретить для страховки.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Cjdns сеть

Непрочитанное сообщение Olej » 18 окт 2014, 22:57

Форум вопросов-ответов русскоязычного сообщества Cjdns сети.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Cjdns сеть

Непрочитанное сообщение Olej » 19 окт 2014, 12:08

Olej писал(а):Форум вопросов-ответов русскоязычного сообщества Cjdns сети.
Там:
Всего сообщений: 3143 • Тем: 258 • Пользователей: 2144
В сравнении с этим вот нашим форумом:
Всего сообщений: 8053 • Тем: 936 • Пользователей: 415
Хотя это (число пользователей) ничего и не значит (простой учёт мёртвых душ), но как-то есть показателем того, что "альтернативный Интернет" всё-таки имеет оживлённый интерес.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Cjdns сеть

Непрочитанное сообщение Olej » 22 окт 2014, 16:59

Olej писал(а):
Olej писал(а): Дальше:
В файле cjdroute.conf вы увидите:

Код: Выделить всё

        // Nodes to connect to.
        "connectTo":
        {
            // Add connection credentials here to join the network
            // Ask somebody who is already connected.
        }
После добавления данных пира он будет выглядеть как-то так:
Болт вам! нет там такой секции "connectTo"!
В документации написано неправильно!
Полученные параметры пира нужно вписать не в секцию "connectTo", а в подсекцию "connectTo" вложенную глубоко в секцию "interfaces" ...
Что-то типа такого:

Код: Выделить всё

// Interfaces to connect to the switch core.
    "interfaces":
    {
        // The interface which connects over UDP/IP based VPN tunnel.
        "UDPInterface":
        [
            {
                // Bind to this port.
                "bind": "0.0.0.0:49882",

                // Nodes to connect to.
                "connectTo":
                {
                    // Add connection credentials here to join the network
                    // Ask somebody who is already connected.

                   // Ukraine public node
                      "195.34.197.189:42998": {
                          "password": "5cvyb5mvb1pktcqhqcwjq5ng82lhjdx",
                          "publicKey":"sn6lbr223vznkv4hr1prgxzcs7gw8fmb222huprd8zyfv617du90.k" }
                  }
            }
        ]
...
Вот после этого:

Код: Выделить всё

[Olej@modules cjdns]$ sudo ./cjdroute < cjdroute.conf
[sudo] password for Olej: 
1413967024 INFO cjdroute2.c:540 Cjdns AMD64 64-bit LittleEndian linux +seccomp
1413967024 INFO cjdroute2.c:544 Checking for running instance...
...
И теперь интерфейс похож на живой:

Код: Выделить всё

[Olej@modules ~]$ ifconfig tun0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1312
        inet6 fc89:457e:85b:962f:9be3:dd16:3400:183d  prefixlen 8  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 3093  bytes 669680 (653.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7919  bytes 1404680 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Код: Выделить всё

[Olej@modules ~]$ ping6 fc71:ec46:57a0:2bbc:537d:b680:3630:93e4
PING fc71:ec46:57a0:2bbc:537d:b680:3630:93e4(fc71:ec46:57a0:2bbc:537d:b680:3630:93e4) 56 data bytes
64 bytes from fc71:ec46:57a0:2bbc:537d:b680:3630:93e4: icmp_seq=1 ttl=42 time=385 ms
64 bytes from fc71:ec46:57a0:2bbc:537d:b680:3630:93e4: icmp_seq=2 ttl=42 time=374 ms
64 bytes from fc71:ec46:57a0:2bbc:537d:b680:3630:93e4: icmp_seq=3 ttl=42 time=369 ms
64 bytes from fc71:ec46:57a0:2bbc:537d:b680:3630:93e4: icmp_seq=4 ttl=42 time=373 ms
^C
--- fc71:ec46:57a0:2bbc:537d:b680:3630:93e4 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 369.066/375.588/385.386/5.998 ms

Код: Выделить всё

[Olej@modules ~]$ ping6 fc9a:18e2:c973:5ac1:2b68:4c43:0a7e:dec2
PING fc9a:18e2:c973:5ac1:2b68:4c43:0a7e:dec2(fc9a:18e2:c973:5ac1:2b68:4c43:a7e:dec2) 56 data bytes
64 bytes from fc9a:18e2:c973:5ac1:2b68:4c43:a7e:dec2: icmp_seq=1 ttl=42 time=39.2 ms
64 bytes from fc9a:18e2:c973:5ac1:2b68:4c43:a7e:dec2: icmp_seq=2 ttl=42 time=39.7 ms
64 bytes from fc9a:18e2:c973:5ac1:2b68:4c43:a7e:dec2: icmp_seq=3 ttl=42 time=39.4 ms
^C
--- fc9a:18e2:c973:5ac1:2b68:4c43:0a7e:dec2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 39.290/39.499/39.758/0.253 ms
Это уже ICMP6 ping-и где-то далеко-далеко за пределами моей собственной LAN.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Cjdns сеть

Непрочитанное сообщение Olej » 26 янв 2015, 17:18

Olej писал(а):Это уже ICMP6 ping-и где-то далеко-далеко за пределами моей собственной LAN.
Тут же возникает вопрос: как теперь проверить реальный трафик (UDP/TCP) внутри этой IPv6 защищённой сети?


Тема поднималась пользователем Olej 26 янв 2015, 17:18.

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей