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.

Комментарии (61)


  1. ivan386
    16.03.2019 09:33

    Сеть использует весь диапазон IPv6 или есть выделенные префиксы под неё?


    1. shifttstas Автор
      16.03.2019 09:40
      +1

      Выделенный, отличный от 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.


  1. dikkini
    16.03.2019 09:57

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


    1. shifttstas Автор
      16.03.2019 10:09

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

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


      1. dikkini
        16.03.2019 23:35

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


        1. shifttstas Автор
          17.03.2019 00:07

          только вы коннект настроить не забудьте между серверами и ноутом.

          Если вы ограничите доступность сети только вашими серверами — я думаю вешать СУБД на этот порт можно, как дополнительный элемент безопасности — можно фаерволом ограничить доступ только с вашего IPv6 который получит ноутбук.


        1. rogoz
          17.03.2019 03:11

          Это можно сделать через tor, будет более менее скорость habr.com/ru/post/237019
          Через тор удобно, когда все устройства за NAT или даже за прокси. Если хотя бы 1 устройство с белым IP, лучше обычный VPN через него.


  1. ivan386
    16.03.2019 10:24

    А есть публичные прокси через которые можно карту например посмотреть? По ней похоже что если вырубится центральная точка то сеть развалится на три части.


    1. shifttstas Автор
      16.03.2019 10:25
      +1

      Прокси нету, карта отображает только дефолтные маршруты, все существующие маршруты но не используемые — скрыты, на github идет обсуждение включения передачи всех маршрутов


    1. ton1
      16.03.2019 14:30

      yggdrasil-map.cwinfo.org

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


  1. PerlPower
    16.03.2019 11:09

    Как эта штука будет работать в случае белых списков узлов и портов? А если не будет, то чем это лучше того же тора, из которого не будут выходить наружу?


    1. shifttstas Автор
      16.03.2019 11:17
      +1

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

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

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

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

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

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


      Цена трафика сейчас — 10$ за гб в роуминге, не так дорого если рассматривать как гарантированный вариант доступа.


      1. AlexTest
        16.03.2019 13:42

        Цена трафика сейчас — 10$ за гб в роуминге, не так дорого если рассматривать как гарантированный вариант доступа.
        Как вы думаете сколько гигов трафика пойдет через такой узел в сутки?
        Вы уверены, что некий иностранец будет платить из своего кармана такую цену за доступ остальных людей через его узел?


        1. shifttstas Автор
          16.03.2019 13:44

          За всю сеть иностранец платить не будет, а вот за друзей/семью иностранцев — вполне.


  1. Nosgoth
    16.03.2019 11:11
    -5

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


    Все что нужно знать.


    1. shifttstas Автор
      16.03.2019 11:22
      +1

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

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

      Памяти кушает мало — 7-15 мб.


    1. cpcat
      19.03.2019 12:40

      Кто-то будет читать эту статью и через три года, там всё может быть иначе.


  1. netricks
    16.03.2019 11:12

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


    1. Nosgoth
      16.03.2019 11:14

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


      1. netricks
        16.03.2019 11:40

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


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


  1. powerman
    16.03.2019 11:27

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


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


    1. shifttstas Автор
      16.03.2019 11:33

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

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

      Другими словами можно сделать так:

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


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


  1. dartraiden
    16.03.2019 13:23

    Кстати, если мне не изменяет память, разработчики Yggdrasil неоднократно заявляли, что в рамках проекта они обкатывают новую модель маршрутизации с намерением внедрить её затем в cjdns.

    Но может случиться и так, что Yggdrasil заменит cjdns, да.


  1. ton1
    16.03.2019 13:38
    +1

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


  1. nlykl
    16.03.2019 14:43

    Название шикарное. Как это вообще читается?


    1. VADemon
      16.03.2019 15:07
      +2

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


    1. bukovki
      16.03.2019 18:52

      Иггдрасиль же


  1. Hamper
    16.03.2019 15:16
    +3

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


    1. LevOrdabesov
      16.03.2019 17:33

      Ох, не подсказывайте им.


  1. LevOrdabesov
    16.03.2019 15:42

    А I2P чем не устроил?
    (ну, кроме того, что оно на яве, тормозит и машину грузит. Зато приватность)

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


    1. LLE
      16.03.2019 15:54

      Оно не только на Java, оно еще есть на C++ github.com/PurpleI2P/i2pd


      1. LevOrdabesov
        16.03.2019 15:57

        О, я почему-то думал, что С-версия ещё в стадии ранней альфы. Благодарю.

        Ну и тем более тогда, нафига этот Иггдрасиль нужен? Без приватности-то.


        1. LLE
          16.03.2019 16:06

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


          1. powerman
            16.03.2019 16:21

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


            1. LevOrdabesov
              16.03.2019 16:40

              Мало пиров, вот и медленно.
              Потому и спрашиваю, зачем альтернатива, да ещё и без приватности. Пиарили б i2p, всё б летало. Но почему-то вместо этого пилят альтернативы. У i2p видимо, «фатальный недостаток» с т.з. разработчиков Игг.


              1. LLE
                16.03.2019 16:58

                Самому I2P для работы нужен работающий интернет, а cjdns/ygg — это и есть интернет, некоторая его разновидность, которая может обходиться без провайдеров.


                1. LevOrdabesov
                  16.03.2019 17:37
                  +2

                  Из статьи это как-то не очевидно.
                  Вот провайдер заблочил всё, кроме kremlin.ru. Чем к пирам Ygg подключаться? Из палок и верёвок городить радиоканал на 433 мгц на малинке?
                  Ладно, будем разбираться.


                  1. LLE
                    16.03.2019 18:36
                    +1

                    Радиоканал на любом беспроводном маршрутизаторе с OpenWrt на 2.4 или 5 ГГц.


          1. LevOrdabesov
            16.03.2019 16:38

            А контрольной панели в веб-интерфейсе оно не имеет? Что-то найти не могу.


            1. LLE
              16.03.2019 16:45

              Вы про i2pd? что-то есть http://127.0.0.1:7070/


  1. rogoz
    16.03.2019 16:36
    +1

    Как-то непонятно, чем отличается от уже существующей I2P.


    1. LLE
      16.03.2019 17:00
      +2

      Насколько понимаю, они работают на разных уровнях, их нельзя сравнивать напрямую.


    1. shifttstas Автор
      16.03.2019 18:55

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


    1. supervillain
      16.03.2019 19:06
      +1

      Главная задача I2P — делать анонимные соединения поверх IPv4/IPv6 сетей.

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

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

      — I2P поверх yggdrasil. Анонимизация внутри Mesh сети, пока что смысла в этом нет, но теоретически, если весь интернет перейдет на использование Mesh, будет очень кстати.


      1. rogoz
        16.03.2019 19:14

        Ну выглядит, что проще добавить всё это в до сих пор неособо популярную I2P, чем городить ещё одну «сеть-в-сети».


        1. shifttstas Автор
          16.03.2019 19:21

          Назначение у сетей разное, задача I2P — аннонимизация трафика, cjdns/yggdrasil — замена сетевого уровня по модели оси.


  1. timdorohin
    16.03.2019 17:59

    Netsukuku была способна работать поверх wifi меш-сетей. И она заменяла третий(сетевой) уровень в модели OSI.
    А Иггдрасиль так может? Потому что работать поверх интернета вообще не вариант, если его не будет.


    1. LLE
      16.03.2019 18:37

      Netsukuku сейчас в каком состоянии? померла?


      1. nad_oby
        17.03.2019 22:59

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


    1. shifttstas Автор
      16.03.2019 18:55

      Может, как и cjdns


  1. Arqwer
    16.03.2019 21:28

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


    1. shifttstas Автор
      16.03.2019 21:34
      +3

      И хочется отметить есть прогресс:

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


      Еще несколько итераций и будет хорошо


  1. dartraiden
    16.03.2019 21:38

    Последние новости о сети cjdns датируются 2017 годом
    Разработка идёт, последний коммит от CJD был в октябре 2018. Разработка ведётся не в ветке master. И для CJD характерно именно такое поведение: раз в несколько месяцев появиться, ударно накоммитить и исчезнуть.


    1. Foxcool
      16.03.2019 21:42

      кстати, автор проекта сидит у нас в англоязычном сабчатике (https://t.me/idistributed — правда через бридж matrix)


      1. Foxcool
        16.03.2019 21:43

        так же интервью с ним

        В общем, там все не так плохо.


    1. shifttstas Автор
      16.03.2019 21:59

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

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


  1. basilbasilbasil
    16.03.2019 23:11

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


  1. CherryPah
    16.03.2019 23:39
    -1

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

    Для тех кто помнит дело Богатова и опасается быть выходной нодой тора проксей могу сказать что входной нодой сейчас тоже быть не рекомендуется. Пока за это еще не сажают, но уже сейчас товарищ майор бдит и записывает кто и куда гоняет udp трафик в виде openvpn особенно если большом объеме. Да и те же РКНовские краулеры которые ищут и банят телеговские прокси без суда и следствия.
    Так что если у вашего Иггдрасиля есть какая-то сигнатура по которой можно отследить его через DPI — у меня для вас плохие новости


  1. abmanimenja
    17.03.2019 03:09

    Еще есть похожий на описываемое в статье Meshbird, «русскоязычными» программистами сделанный.
    golangshow.podfm.ru/index/43
    Довольно хорошая разработка, к сожалению, прекратили поддержку FreeBSD, а Yggdrasil поддерживает.

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

    Да ну…
    По мне так он для другого прежде всего — удобный способ объединения распределенной системы. Например, реализация собственного кластера.


  1. saag
    17.03.2019 09:55

    Вот Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича, да взять бакенбарды Балтазар Балтазаровича Iggdrasil скрестить с аналогом WeChat, то получится альтернативный интернет.


  1. ivan386
    19.03.2019 13:16

    А IPv6 в сети постоянный или меняется при каких то условиях?