CJDNS мертв, да здравствует Yggdrasil

    image


    Что такое Yggdrasil?
    Yggdrasil — это распределённая Mesh сеть, которая работет в Overlay режиме, позволяя сделать интернет поверх интернета.

    Причем, сеть может одновременно работать в двух режимах — через интернет и без интернета, соединяясь напрямую с физически соседними пирами (через Ethernet, Wi-Fi или Bluetooth) работая на 3-ем уровне модели OSI.

    На Apple устройствах использован протокол AWDL.
    Последние новости о сети cjdns датируются 2017 годом, может показатся, что сеть умерла и разработка остановлена (на самом деле — да), однако появился самозванец — Yggdrasil, который практически полностью копирует cjdns однако делает это намного лучше.

    В посте рассмотрим:

    • Что такое Yggdrasil
    • Зачем это нужно
    • Откуда он взялся
    • Можно ли ему доверять
    • В чем отличее от cjdns
    • Почему его стоит установить прямо сейчас
    • Поддержка iOS (Да!)
    • Что в планах
    • Как настроить


    Что такое Yggdrasil


    Yggdrasil — это оверлейная сеть, которая призвана воплотить концепцию нулевой настройки сетей — вам не нужно знать маршруты, вам не нужно ничего настраивать — всё должно работать из коробки и сразу и еще это должно масштабироваться.

    Зачем это?


    Это тянет на отдельную статью, рассмотри кратко:

    1. Устранение текущих проблем BGP
    2. Настоящая zero-conf
    3. Еще один метод защиты от блокировок (будущих) с нарушением сетевой связанности

    Откуда он взялся


    Yggdrasil — это продолжение развития cjdns, только с чистого листа, разработчики участвующие в проекте cjdns в какой-то момент решили отделится от проекта cjdns и переписать всё с нуля.

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

    Активность разработки


    CJDNS


    Yggdrasil


    Arceliar — второй разработчик по количеству коммитов как раз покинул cjdns и основал совместно с neilalexander — yggdrasil.

    Можно ли ему доверять


    Да, разработчики — те же.

    В чем отличее от cjdns


    • Сеть одноранговая
    • Есть поддержка большого количества устройств (даже iOS!)
    • Есть официальный репозиторий публичных узлов
    • Подключаться к узлу можно без приватного ключа (а можно и с ним конечно) — публичные ноды используют подключение без
    • Используемый язык — Go
    • Есть готовые пакеты под большинство систем
    • Более тонкая и удобная настройки
    • Более быстрая разработка

    Почему его стоит установить прямо сейчас


    Прямо сейчас в сети работает 280+ узлов, и они прибывают примерно по 10 узлов в неделю, сеть как и CJDNS позволяет подключаться как через обычный интернет yggdrasil --> интернет --> yggdrasil.

    Так и в «нативном» режиме, который прекрасно работает — устанавливаем yggdrasil на домашний сервер (например raspberry) и делаем линк yggdrasil --> интернет --> публичный узел yggdrasil.

    После этого, внутри вашей локальной сети, любой пользователь с клиентом (ПК или даже iPhone) сам обнаружит ваш узел на raspberry и подключится.

    В связи с будущими планами развития рунета, есть большой шанс нарушения международных связей (всех или почти всех) однако интернет штука сложная, всегда найдется где-то выход в международный сегмент. Если уже сейчас установить себе yggdrasil то в рамках сети у кого-то может остатся доступ к публичному сегменту, вот через него трафик и будет маршрутизирован.

    Отдельно хочу отметить — сеть не позволяет выйти в обычный интернет — только свои ресурсы — это не TOR, таким образом риски «быть прокси» — пропадают. Всё что передается в yggdrasil остается там же.

    Однако, если вы планируете использовать сеть, как резервный источник доступа на случий непредвиденных ситуаций — это вполне можно сделать, вы сможете подключится к вашему MTProto Proxy или VPN через yggdrasil.

    Схема будет следующая VPN --> Yggdrasil (неизвестные вам узлы) --> ваш VPN --> Интернет

    Поддержка iOS (Да!)


    Сеть правда поддерживает работу на iOS причем работает стабильно, имеет авто-подключение, на iOS как и 1.1.1.1 работает через установку VPN адаптера (ссылки будут ниже)

    Что в планах


    Планы взяты на основе Roadmap разработчиков и Issue с github — там ведётся планирование

    1. Поддержка Android
    2. Поддержка авто-подключения между iOS устройствами даже если они не в одной Wi-Fi сети (очень круто)
    3. Работа через WebSocket как способ скрытия работы сети

    Как настроить


    На официальном сайте предоставлены все инструкции yggdrasil-network.github.io/installation.html

    Debian/Ubuntu/Raspberry


    Добавляем ключи репозитория

    gpg --fetch-keys https://neilalexander.s3.eu-west-2.amazonaws.com/deb/key.txt
    gpg --export 569130E8CA20FBC4CB3FDE555898470A764B32C9 | sudo apt-key add -
    

    Добавляем репозиторий

    echo 'deb http://neilalexander.s3.eu-west-2.amazonaws.com/deb/ debian yggdrasil' | sudo tee /etc/apt/sources.list.d/yggdrasil.list
    sudo apt-get update
    

    Устанавливаем

    sudo apt-get install yggdrasil

    Конфигурационный файл — /etc/yggdrasil.conf о нем мы поговорим чуть позже.

    P.S.: Можно скачать только пакет или собрать из исходных кодов — инструкция тут yggdrasil-network.github.io/installation.html

    OS X


    Скачиваем готовый пакет

    wget https://700-115685026-gh.circle-artifacts.com/0/yggdrasil-0.3.5-macos-amd64.pkg

    Устанавливаем

    sudo installer -pkg yggdrasil-0.3.5-macos-amd64.pkg -target /


    Либо устанавливаем из исходных кодов yggdrasil-network.github.io/installation-macos-other.html

    Конфигурационный файл - /etc/yggdrasil.conf.

    iOS


    Через iPhone/iPad нужно открыть ссылку и согласится на тестирование

    Скачиваем TestFlight itunes.apple.com/us/app/testflight/id899247664?mt=8

    Устанавливаем Yggdrasil testflight.apple.com/join/jZNsIkRr

    Для корректной работы нужно согласится на установку VPN адаптера

    Подключаемся


    Установили приложение?

    Переходим в публичный каталог пиров и выбираем ближайшего к себе с точки зрения географии пиров (а лучше парочку).

    Теперь пора добавить «пиров», идем в /etc/yggdrasil.conf (в случае iOS на вкладку Peers)

    и добавляем



    На iOS это можно сделать в интерфейсе приложения.

    Если в странах СНГ будут желающие сделать публичных пиров — пишите в комментариях — добавим в пост и желательно добавляйте их в github.

    Что посмотреть в сети?


    Сервисы в сети описаны тут.

    Первое куда стоит заглянуть — на карту сети http://[21f:dd73:7cdb:773b:a924:7ec0:800b:221e]/


    Больше почитать по сеть можно на сайте сети yggdrasil-network.github.io и в блоге.

    P.S.: Кстати, совсем недавно в ZeroNet была добавлена поддержка cjdns и yggdrasil, русское сообщество в Zeronet.
    Поделиться публикацией

    Похожие публикации

    Комментарии 68

      0
      Сеть использует весь диапазон IPv6 или есть выделенные префиксы под неё?
        +3
        Выделенный, отличный от cjdns

        Will Yggdrasil conflict with my network routing?

        Yggdrasil uses the 0200::/7 range, which is a range deprecated by the IETF. It has been deprecated since 2004, pending changes to an RFC which simply never materialised 14 years later. It was decided to use this range instead of fc00::/7 (which is more typically allocated to private networks) in order to prevent conflicts with existing ULA ranges.
        0

        Подойдёт ли данное решение для защищённого общения микросервисов (обмен данными) на разных VPS в интернете и доступа к ним с локальной машины? Какие скорости?

          0
          Через сеть где самая слабая железка — Raspberry pi — выдает 50 мб/с iperf'ом

          По идее решение может подойти, однако надо учитывать, что сеть молодая и в продакшене использовать может быть опасно/нестабильно.
            0
            Ну то есть конфа примерно следующая: ставлю Игдрасилль на каждый сервер куда хочу иметь доступ с ноутбука, далее ставлю на ноут и при наличии интернета имею доступ к каждому серверу? (как впн по сути) При таком раскладе могу я повесить доступ к PostgreSQL/MongoDB на сетевой интерфейс Игдрасилля?
              0
              только вы коннект настроить не забудьте между серверами и ноутом.

              Если вы ограничите доступность сети только вашими серверами — я думаю вешать СУБД на этот порт можно, как дополнительный элемент безопасности — можно фаерволом ограничить доступ только с вашего IPv6 который получит ноутбук.
                0
                Это можно сделать через tor, будет более менее скорость habr.com/ru/post/237019
                Через тор удобно, когда все устройства за NAT или даже за прокси. Если хотя бы 1 устройство с белым IP, лучше обычный VPN через него.
            0
            А есть публичные прокси через которые можно карту например посмотреть? По ней похоже что если вырубится центральная точка то сеть развалится на три части.
              +1
              Прокси нету, карта отображает только дефолтные маршруты, все существующие маршруты но не используемые — скрыты, на github идет обсуждение включения передачи всех маршрутов
                0
                yggdrasil-map.cwinfo.org

                В списке сервисов в самом низу отметились 2 героя, предоставляющих открытые прокси для просмотра обычных сайтов через них изнутри этой сети.
                0
                Как эта штука будет работать в случае белых списков узлов и портов? А если не будет, то чем это лучше того же тора, из которого не будут выходить наружу?
                  +2
                  В случае белых списков не будет работать ничего, однако только 1 страна использует белые списки.

                  В случае же DPI/черных список — достаточно хотя бы одного линка через который пойдет трафик, не стоит забывать, что есть пограничные страны, роуминговые операторы через которые доступ никто запретить не может никак от слова совсем.

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

                  Рассмотрим совсем плохой сценарий

                  В стране Х внедрены белые списки, однако иностранцы могут использовать роуминг при поездах по стране.

                  1. Иностранец используя SIM своего домашнего оператора регистрируется в сети местного оператора
                  2. Устанавливается туннель до домашней сети в которой нет белых списков
                  3. У иностранца установлен клиент yggdrasil который устаналивает локальное (P2P) соединение c местными узлами
                  4. Трафик маршрутизируется через него


                  Цена трафика сейчас — 10$ за гб в роуминге, не так дорого если рассматривать как гарантированный вариант доступа.
                    0
                    Цена трафика сейчас — 10$ за гб в роуминге, не так дорого если рассматривать как гарантированный вариант доступа.
                    Как вы думаете сколько гигов трафика пойдет через такой узел в сутки?
                    Вы уверены, что некий иностранец будет платить из своего кармана такую цену за доступ остальных людей через его узел?
                      0
                      За всю сеть иностранец платить не будет, а вот за друзей/семью иностранцев — вполне.
                  –9
                  По идее решение может подойти, однако надо учитывать, что сеть молодая и в продакшене использовать может быть опасно/нестабильно.


                  Все что нужно знать.
                    0
                    Они об этом прямо на первой странице пишут, однако я бы делал скидку на то, что понятие «стабильность» — для каждого своё, у Google gmail был в бете очень долго. А тум мы говорим о некоммерческом проекте.

                    Перед публикацией я тестировал (и продолжаю) сеть в режиме как через интернет так и локальный вариант (через ПК и телефон) на протяжении месяца, судя по логам systemctl — падений не было.

                    Памяти кушает мало — 7-15 мб.
                      0
                      Кто-то будет читать эту статью и через три года, там всё может быть иначе.
                        0
                        Понадобилось даже не 3 года, а меньше 3х месяцев
                        image
                      +3

                      Отличные новости. CJDNS был прекрасен, но работал нестабильно. Попробуем еще раз. Мешсети так или иначе быть.

                        0
                        И сколько у Вас опыта с этим? Хотелось бы развернутый ответ.
                          0

                          Довольно мало. Использовал cjdns для того, чтобы ходить на домачний сервер через nat. Дело кончилось оформлением белого айпи адреса.


                          cjdns требует настройки. И на моем raspberry pi посему-то отваливается на вторые сутки работы.

                        0

                        Не очень хорошо, что сеть не даёт анонимность.
                        Если взять два узла, у которых есть белый IP — соединение между ними всегда будет установлено напрямую, или всегда будет использоваться несколько промежуточных узлов как в Tor/I2P, или возможны оба сценария в зависимости от доступных моему узлу данных о роутинге?
                        Как у неё по скорости, если сравнивать с Tor и I2P?


                        Я правильно понимаю, что выход из этой сети в обычный интернет реализуется через доступ к сторонним сервисам на localhost? Т.е. например чтобы использовать VPN мне нужно установить на своём VPN-сервере узел этой сети, настроить на нём проброс порта в VPN-сервер на localhost, после чего поставить второй узел этой сети на машине с VPN-клиентом, и настроить VPN-клиент на подключение к IPv6-адресу первого узла этой сети?

                          0
                          Как и cjdns сеть не ставить цель был анонимной, приватной — да.

                          По поводу VPN — не на localhost, вы можете подключатся по yggdrasil-IPv6 адресу к вашему VPN а он уже будет предоставлять доступ в обычный интернет.

                          Другими словами можно сделать так:
                          1. На сервере устанавливаем yggdrasil и VPN (теперь к VPN можно подключится из интернета и из yggdrasil)
                          2. На сервере добавляем публичного пира Y
                          3. На клиенте устанавливаем yggdrasil и добавляем публичного пира X
                          4. На клиенте вписываем v6 адрес сервера


                          Как итог — клиент будет подключатся к вашему VPN через сеть yggdrasil а не напрямую (при желании конечно можно и напрямую, смотря какая цель)
                          0
                          Кстати, если мне не изменяет память, разработчики Yggdrasil неоднократно заявляли, что в рамках проекта они обкатывают новую модель маршрутизации с намерением внедрить её затем в cjdns.

                          Но может случиться и так, что Yggdrasil заменит cjdns, да.
                            +4
                            Как же я люблю такой zeroconf… и сразу через абзац идет с десяток консольных команд :)
                            Завел на винде. Вроде работает. Карту глянул, вики полистал. Дальше куда идти? Непонятно.
                            ирка, трекеры — были в i2p уже для анонимности, и в clearnet для всех отстающих.
                            Тему взаимодействия с zeronet можно было б раскрыть и побольше.
                            И список сервисов не линком, а пересказать, а то статья как-то жиденько выгдядит.
                            Интересно, retroshare взлетит на этом интерфейсе автоматом...? По идее должна, но с другой стороны, если нет друзей с сабжем, ловить там некого.
                              0
                              Название шикарное. Как это вообще читается?
                                +5

                                Yggdrasil — популярное древо мира или древо жизни из мифологии. Произносится как "Иггдрасил", "Иггдразиль" и т.п. в зависимости от языка.
                                https://en.wikipedia.org/wiki/Yggdrasil

                                  +1
                                  Иггдрасиль же
                                  +3

                                  С точки зрения законности, нужно ли владельцам нод лицензироваться как оператор связи (как например в некоторых случаях с технологическими сетями https://habr.com/ru/company/oleg-bunin/blog/440814/ )? И какие могут быть последствия с точки зрения штрафов за подобное использование, учитывая, что трафик этой сети никак себя не скрывает. И есть ли вообще у трафика внутри сети какие-то метки, на которые можно настроить DPI что бы отключить именно эту сеть?

                                    –1
                                    Ох, не подсказывайте им.
                                    0
                                    А I2P чем не устроил?
                                    (ну, кроме того, что оно на яве, тормозит и машину грузит. Зато приватность)

                                    Опять будет 16 конкурирующих стандартов?

                                      +1
                                      Оно не только на Java, оно еще есть на C++ github.com/PurpleI2P/i2pd
                                        0
                                        О, я почему-то думал, что С-версия ещё в стадии ранней альфы. Благодарю.

                                        Ну и тем более тогда, нафига этот Иггдрасиль нужен? Без приватности-то.
                                          +1
                                          Оно уже давно пригодно для использования, хотя не без глюков, и значительно легче, чем i2p-java. Есть готовые пакеты для популярных ОС.
                                          Если я правильно понимаю, они не совсем альтернативы друг другу, они могут друг друга дополнять. Но в плюсовом i2pd IPv6 пока работает как-то странно.
                                            +1

                                            Основная проблема I2P не в том, что демон слишком тяжёлый из-за Java, а в том, что скорость работы самой сети довольно медленная.

                                              0
                                              Мало пиров, вот и медленно.
                                              Потому и спрашиваю, зачем альтернатива, да ещё и без приватности. Пиарили б i2p, всё б летало. Но почему-то вместо этого пилят альтернативы. У i2p видимо, «фатальный недостаток» с т.з. разработчиков Игг.
                                                0
                                                Самому I2P для работы нужен работающий интернет, а cjdns/ygg — это и есть интернет, некоторая его разновидность, которая может обходиться без провайдеров.
                                                  +2
                                                  Из статьи это как-то не очевидно.
                                                  Вот провайдер заблочил всё, кроме kremlin.ru. Чем к пирам Ygg подключаться? Из палок и верёвок городить радиоканал на 433 мгц на малинке?
                                                  Ладно, будем разбираться.
                                                    +1
                                                    Радиоканал на любом беспроводном маршрутизаторе с OpenWrt на 2.4 или 5 ГГц.
                                                    0
                                                    I2P не нужен для работы интернет. Он не завязан ни на какие центральные узлы, которые нельзя бы было изменить.
                                                      0
                                                      Ему нужна хоть какая-то компьютерная сеть на основе IP, не этот Интернет, а что-то интернето-подобное. Так?
                                                        0
                                                        Да, просто IP-связность.
                                                0
                                                А контрольной панели в веб-интерфейсе оно не имеет? Что-то найти не могу.
                                                  0
                                                  Вы про i2pd? что-то есть http://127.0.0.1:7070/
                                          +1
                                          Как-то непонятно, чем отличается от уже существующей I2P.
                                            +2
                                            Насколько понимаю, они работают на разных уровнях, их нельзя сравнивать напрямую.
                                              0
                                              yggdrasil как и cjdns может работать как через интернет так и локально, два пира рядом — создадут линк сами через бродкаст/мультикаст найдут друг друга
                                                +2
                                                Главная задача I2P — делать анонимные соединения поверх IPv4/IPv6 сетей.

                                                У ygg совсем другая задача (об этом написано в статье), но обе сети можно сочетать:

                                                — yggdrasil поверх I2P. Это дает «Location privacy», возможность двум (и более) сегментам сети yggdrasil соединяться, и при этом не раскрывать свой настоящий IP адрес в обычном Интернете.

                                                — I2P поверх yggdrasil. Анонимизация внутри Mesh сети, пока что смысла в этом нет, но теоретически, если весь интернет перейдет на использование Mesh, будет очень кстати.
                                                  0
                                                  Ну выглядит, что проще добавить всё это в до сих пор неособо популярную I2P, чем городить ещё одну «сеть-в-сети».
                                                    0
                                                    Назначение у сетей разное, задача I2P — аннонимизация трафика, cjdns/yggdrasil — замена сетевого уровня по модели оси.
                                                +1
                                                Netsukuku была способна работать поверх wifi меш-сетей. И она заменяла третий(сетевой) уровень в модели OSI.
                                                А Иггдрасиль так может? Потому что работать поверх интернета вообще не вариант, если его не будет.
                                                  0
                                                  Netsukuku сейчас в каком состоянии? померла?
                                                    0

                                                    Да вроде того.
                                                    Автор собрался её переписывать и как-то всё сошло на нет.

                                                    0
                                                    Может, как и cjdns
                                                    0

                                                    Решили однажды разрабы свой интернет создать.
                                                    Вышел Netsukuku, решил с оверлейной сети начать, и умер.
                                                    Решили другие разрабы свой интернет создать.
                                                    Вышел CjDNS, решил с оверлейной сети начать, и умер.
                                                    В третий раз пошли разрабы свой интернет создавать.
                                                    Вышел yggrasil, решил с оверлейной сети начать...

                                                      +3
                                                      И хочется отметить есть прогресс:
                                                      • Netsukuku дал идею и плохую поддержку и реализацию
                                                      • Cjdns дал первую сеть из 500+ узлов и работающий Mesh в торонто
                                                      • Yggdrasil дал iOS клиент


                                                      Еще несколько итераций и будет хорошо
                                                        0
                                                        Решили однажды разрабы децентрализованную замену вебу сделать, и получилось: zeronet.
                                                          0

                                                          Хорошо, что получилось сделать централизованную замену веба.
                                                          Очень жаль, что не получилось собрать deb-пакет с systemd-юнитом.

                                                        0
                                                        Последние новости о сети cjdns датируются 2017 годом
                                                        Разработка идёт, последний коммит от CJD был в октябре 2018. Разработка ведётся не в ветке master. И для CJD характерно именно такое поведение: раз в несколько месяцев появиться, ударно накоммитить и исчезнуть.
                                                          0
                                                          кстати, автор проекта сидит у нас в англоязычном сабчатике (https://t.me/idistributed — правда через бридж matrix)
                                                            0
                                                            так же интервью с ним

                                                            В общем, там все не так плохо.
                                                            0
                                                            Не в мастере — не считается, да и с 2017 года в сети не появилось никаких важных вещей о которых просили — поддержка мобильных в то числе.

                                                            Я не предлагаю хоронить cjdns вот прямо сейчас, но на мой взгляд — yggdrasil уже сейчас умеет все тоже самое + уже есть свои фичи и динамика разработки меня сильно радует.
                                                            +1

                                                            Как жрет батарею на мобилах?

                                                              –3
                                                              это не TOR, таким образом риски «быть прокси» — пропадают.

                                                              Для тех кто помнит дело Богатова и опасается быть выходной нодой тора проксей могу сказать что входной нодой сейчас тоже быть не рекомендуется. Пока за это еще не сажают, но уже сейчас товарищ майор бдит и записывает кто и куда гоняет udp трафик в виде openvpn особенно если большом объеме. Да и те же РКНовские краулеры которые ищут и банят телеговские прокси без суда и следствия.
                                                              Так что если у вашего Иггдрасиля есть какая-то сигнатура по которой можно отследить его через DPI — у меня для вас плохие новости
                                                                0
                                                                Еще есть похожий на описываемое в статье Meshbird, «русскоязычными» программистами сделанный.
                                                                golangshow.podfm.ru/index/43
                                                                Довольно хорошая разработка, к сожалению, прекратили поддержку FreeBSD, а Yggdrasil поддерживает.

                                                                Еще один метод защиты от блокировок (будущих) с нарушением сетевой связанности

                                                                Да ну…
                                                                По мне так он для другого прежде всего — удобный способ объединения распределенной системы. Например, реализация собственного кластера.
                                                                  0
                                                                  Вот Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича, да взять бакенбарды Балтазар Балтазаровича Iggdrasil скрестить с аналогом WeChat, то получится альтернативный интернет.
                                                                    0
                                                                    А IPv6 в сети постоянный или меняется при каких то условиях?
                                                                      +1
                                                                      IP соответствует приватному ключу шифрования, который хранится в конфиге. Если вдруг надо сменить IP, можно просто сгенерировать новый конфиг, или заменить приватный ключ на новый.

                                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                    Самое читаемое