![image](https://habrastorage.org/webt/kx/an/3z/kxan3zfvzqtnqslt-ryvcworf8o.png)
Что такое Yggdrasil?
Yggdrasil — это распределённая Mesh сеть, которая работет в Overlay режиме, позволяя сделать интернет поверх интернета.Последние новости о сети cjdns датируются 2017 годом, может показатся, что сеть умерла и разработка остановлена (на самом деле — да), однако появился самозванец — Yggdrasil, который практически полностью копирует cjdns однако делает это намного лучше.
Причем, сеть может одновременно работать в двух режимах — через интернет и без интернета, соединяясь напрямую с физически соседними пирами (через Ethernet, Wi-Fi или Bluetooth) работая на 3-ем уровне модели OSI.
На Apple устройствах использован протокол AWDL.
В посте рассмотрим:
- Что такое Yggdrasil
- Зачем это нужно
- Откуда он взялся
- Можно ли ему доверять
- В чем отличее от cjdns
- Почему его стоит установить прямо сейчас
- Поддержка iOS (Да!)
- Что в планах
- Как настроить
Что такое Yggdrasil
Yggdrasil — это оверлейная сеть, которая призвана воплотить концепцию нулевой настройки сетей — вам не нужно знать маршруты, вам не нужно ничего настраивать — всё должно работать из коробки и сразу и еще это должно масштабироваться.
Зачем это?
Это тянет на отдельную статью, рассмотри кратко:
- Устранение текущих проблем BGP
- Настоящая zero-conf
- Еще один метод защиты от блокировок (будущих) с нарушением сетевой связанности
Откуда он взялся
Yggdrasil — это продолжение развития cjdns, только с чистого листа, разработчики участвующие в проекте cjdns в какой-то момент решили отделится от проекта cjdns и переписать всё с нуля.
Это произошло из-за разногласий с основателем cjdns — по его задумке в сети должны были появиться супер-узлы, которые должны содержать полню карту сети, по их мнению — этот путь неверный и они хотели сохранить сеть одноранговой (когда каждый узел по функциям одинаков с остальными). Помимо этого — оригинальная сеть медленно развивалась из-за выбранных методов разработки и языков и она так и не смогла (за 5 лет) добратся до поддержки мобильных устройств, что в современном мире — не простительно.
Активность разработки
![](https://habrastorage.org/webt/3a/jj/yp/3ajjypzq5wsf-yfdc4so1w2clje.png)
![](https://habrastorage.org/webt/ei/dk/_n/eidk_ngbyeb_lnxqrr-l8wurogm.png)
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 — там ведётся планирование
- Поддержка Android
- Поддержка авто-подключения между iOS устройствами даже если они не в одной Wi-Fi сети (очень круто)
- Работа через 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)и добавляем
![](https://habrastorage.org/webt/3a/nw/ag/3anwag4sch00oy1h-jjs5nmqnnq.png)
На iOS это можно сделать в интерфейсе приложения.
Если в странах СНГ будут желающие сделать публичных пиров — пишите в комментариях — добавим в пост и желательно добавляйте их в github.
Что посмотреть в сети?
Сервисы в сети описаны тут.
Первое куда стоит заглянуть — на карту сети http://[21f:dd73:7cdb:773b:a924:7ec0:800b:221e]/
![](https://habrastorage.org/webt/12/et/is/12etisclacxvnt48adxkdka2cmq.png)
Больше почитать по сеть можно на сайте сети yggdrasil-network.github.io и в блоге.
P.S.: Кстати, совсем недавно в ZeroNet была добавлена поддержка cjdns и yggdrasil, русское сообщество в Zeronet.
Комментарии (61)
dikkini
16.03.2019 09:57Подойдёт ли данное решение для защищённого общения микросервисов (обмен данными) на разных VPS в интернете и доступа к ним с локальной машины? Какие скорости?
shifttstas Автор
16.03.2019 10:09Через сеть где самая слабая железка — Raspberry pi — выдает 50 мб/с iperf'ом
По идее решение может подойти, однако надо учитывать, что сеть молодая и в продакшене использовать может быть опасно/нестабильно.dikkini
16.03.2019 23:35Ну то есть конфа примерно следующая: ставлю Игдрасилль на каждый сервер куда хочу иметь доступ с ноутбука, далее ставлю на ноут и при наличии интернета имею доступ к каждому серверу? (как впн по сути) При таком раскладе могу я повесить доступ к PostgreSQL/MongoDB на сетевой интерфейс Игдрасилля?
shifttstas Автор
17.03.2019 00:07только вы коннект настроить не забудьте между серверами и ноутом.
Если вы ограничите доступность сети только вашими серверами — я думаю вешать СУБД на этот порт можно, как дополнительный элемент безопасности — можно фаерволом ограничить доступ только с вашего IPv6 который получит ноутбук.
rogoz
17.03.2019 03:11Это можно сделать через tor, будет более менее скорость habr.com/ru/post/237019
Через тор удобно, когда все устройства за NAT или даже за прокси. Если хотя бы 1 устройство с белым IP, лучше обычный VPN через него.
ivan386
16.03.2019 10:24А есть публичные прокси через которые можно карту например посмотреть? По ней похоже что если вырубится центральная точка то сеть развалится на три части.
shifttstas Автор
16.03.2019 10:25+1Прокси нету, карта отображает только дефолтные маршруты, все существующие маршруты но не используемые — скрыты, на github идет обсуждение включения передачи всех маршрутов
ton1
16.03.2019 14:30yggdrasil-map.cwinfo.org
В списке сервисов в самом низу отметились 2 героя, предоставляющих открытые прокси для просмотра обычных сайтов через них изнутри этой сети.
PerlPower
16.03.2019 11:09Как эта штука будет работать в случае белых списков узлов и портов? А если не будет, то чем это лучше того же тора, из которого не будут выходить наружу?
shifttstas Автор
16.03.2019 11:17+1В случае белых списков не будет работать ничего, однако только 1 страна использует белые списки.
В случае же DPI/черных список — достаточно хотя бы одного линка через который пойдет трафик, не стоит забывать, что есть пограничные страны, роуминговые операторы через которые доступ никто запретить не может никак от слова совсем.
т.е если есть симкарта роумигового оператора связи, на уровне сети создается операторский тунель до родительской сети через которую уже и будет идти связь с миром.
Рассмотрим совсем плохой сценарий
В стране Х внедрены белые списки, однако иностранцы могут использовать роуминг при поездах по стране.
- Иностранец используя SIM своего домашнего оператора регистрируется в сети местного оператора
- Устанавливается туннель до домашней сети в которой нет белых списков
- У иностранца установлен клиент yggdrasil который устаналивает локальное (P2P) соединение c местными узлами
- Трафик маршрутизируется через него
Цена трафика сейчас — 10$ за гб в роуминге, не так дорого если рассматривать как гарантированный вариант доступа.AlexTest
16.03.2019 13:42Цена трафика сейчас — 10$ за гб в роуминге, не так дорого если рассматривать как гарантированный вариант доступа.
Как вы думаете сколько гигов трафика пойдет через такой узел в сутки?
Вы уверены, что некий иностранец будет платить из своего кармана такую цену за доступ остальных людей через его узел?shifttstas Автор
16.03.2019 13:44За всю сеть иностранец платить не будет, а вот за друзей/семью иностранцев — вполне.
Nosgoth
16.03.2019 11:11-5По идее решение может подойти, однако надо учитывать, что сеть молодая и в продакшене использовать может быть опасно/нестабильно.
Все что нужно знать.shifttstas Автор
16.03.2019 11:22+1Они об этом прямо на первой странице пишут, однако я бы делал скидку на то, что понятие «стабильность» — для каждого своё, у Google gmail был в бете очень долго. А тум мы говорим о некоммерческом проекте.
Перед публикацией я тестировал (и продолжаю) сеть в режиме как через интернет так и локальный вариант (через ПК и телефон) на протяжении месяца, судя по логам systemctl — падений не было.
Памяти кушает мало — 7-15 мб.
netricks
16.03.2019 11:12Отличные новости. CJDNS был прекрасен, но работал нестабильно. Попробуем еще раз. Мешсети так или иначе быть.
Nosgoth
16.03.2019 11:14И сколько у Вас опыта с этим? Хотелось бы развернутый ответ.
netricks
16.03.2019 11:40Довольно мало. Использовал cjdns для того, чтобы ходить на домачний сервер через nat. Дело кончилось оформлением белого айпи адреса.
cjdns требует настройки. И на моем raspberry pi посему-то отваливается на вторые сутки работы.
powerman
16.03.2019 11:27Не очень хорошо, что сеть не даёт анонимность.
Если взять два узла, у которых есть белый IP — соединение между ними всегда будет установлено напрямую, или всегда будет использоваться несколько промежуточных узлов как в Tor/I2P, или возможны оба сценария в зависимости от доступных моему узлу данных о роутинге?
Как у неё по скорости, если сравнивать с Tor и I2P?
Я правильно понимаю, что выход из этой сети в обычный интернет реализуется через доступ к сторонним сервисам на localhost? Т.е. например чтобы использовать VPN мне нужно установить на своём VPN-сервере узел этой сети, настроить на нём проброс порта в VPN-сервер на localhost, после чего поставить второй узел этой сети на машине с VPN-клиентом, и настроить VPN-клиент на подключение к IPv6-адресу первого узла этой сети?
shifttstas Автор
16.03.2019 11:33Как и cjdns сеть не ставить цель был анонимной, приватной — да.
По поводу VPN — не на localhost, вы можете подключатся по yggdrasil-IPv6 адресу к вашему VPN а он уже будет предоставлять доступ в обычный интернет.
Другими словами можно сделать так:
- На сервере устанавливаем yggdrasil и VPN (теперь к VPN можно подключится из интернета и из yggdrasil)
- На сервере добавляем публичного пира Y
- На клиенте устанавливаем yggdrasil и добавляем публичного пира X
- На клиенте вписываем v6 адрес сервера
Как итог — клиент будет подключатся к вашему VPN через сеть yggdrasil а не напрямую (при желании конечно можно и напрямую, смотря какая цель)
dartraiden
16.03.2019 13:23Кстати, если мне не изменяет память, разработчики Yggdrasil неоднократно заявляли, что в рамках проекта они обкатывают новую модель маршрутизации с намерением внедрить её затем в cjdns.
Но может случиться и так, что Yggdrasil заменит cjdns, да.
ton1
16.03.2019 13:38+1Как же я люблю такой zeroconf… и сразу через абзац идет с десяток консольных команд :)
Завел на винде. Вроде работает. Карту глянул, вики полистал. Дальше куда идти? Непонятно.
ирка, трекеры — были в i2p уже для анонимности, и в clearnet для всех отстающих.
Тему взаимодействия с zeronet можно было б раскрыть и побольше.
И список сервисов не линком, а пересказать, а то статья как-то жиденько выгдядит.
Интересно, retroshare взлетит на этом интерфейсе автоматом...? По идее должна, но с другой стороны, если нет друзей с сабжем, ловить там некого.
nlykl
16.03.2019 14:43Название шикарное. Как это вообще читается?
VADemon
16.03.2019 15:07+2Yggdrasil — популярное древо мира или древо жизни из мифологии. Произносится как "Иггдрасил", "Иггдразиль" и т.п. в зависимости от языка.
https://en.wikipedia.org/wiki/Yggdrasil
Hamper
16.03.2019 15:16+3С точки зрения законности, нужно ли владельцам нод лицензироваться как оператор связи (как например в некоторых случаях с технологическими сетями https://habr.com/ru/company/oleg-bunin/blog/440814/ )? И какие могут быть последствия с точки зрения штрафов за подобное использование, учитывая, что трафик этой сети никак себя не скрывает. И есть ли вообще у трафика внутри сети какие-то метки, на которые можно настроить DPI что бы отключить именно эту сеть?
LevOrdabesov
16.03.2019 15:42А I2P чем не устроил?
(ну, кроме того, что оно на яве, тормозит и машину грузит. Зато приватность)
Опять будет 16 конкурирующих стандартов?
LLE
16.03.2019 15:54Оно не только на Java, оно еще есть на C++ github.com/PurpleI2P/i2pd
LevOrdabesov
16.03.2019 15:57О, я почему-то думал, что С-версия ещё в стадии ранней альфы. Благодарю.
Ну и тем более тогда, нафига этот Иггдрасиль нужен? Без приватности-то.LLE
16.03.2019 16:06Оно уже давно пригодно для использования, хотя не без глюков, и значительно легче, чем i2p-java. Есть готовые пакеты для популярных ОС.
Если я правильно понимаю, они не совсем альтернативы друг другу, они могут друг друга дополнять. Но в плюсовом i2pd IPv6 пока работает как-то странно.powerman
16.03.2019 16:21Основная проблема I2P не в том, что демон слишком тяжёлый из-за Java, а в том, что скорость работы самой сети довольно медленная.
LevOrdabesov
16.03.2019 16:40Мало пиров, вот и медленно.
Потому и спрашиваю, зачем альтернатива, да ещё и без приватности. Пиарили б i2p, всё б летало. Но почему-то вместо этого пилят альтернативы. У i2p видимо, «фатальный недостаток» с т.з. разработчиков Игг.LLE
16.03.2019 16:58Самому I2P для работы нужен работающий интернет, а cjdns/ygg — это и есть интернет, некоторая его разновидность, которая может обходиться без провайдеров.
LevOrdabesov
16.03.2019 17:37+2Из статьи это как-то не очевидно.
Вот провайдер заблочил всё, кроме kremlin.ru. Чем к пирам Ygg подключаться? Из палок и верёвок городить радиоканал на 433 мгц на малинке?
Ладно, будем разбираться.
LevOrdabesov
16.03.2019 16:38А контрольной панели в веб-интерфейсе оно не имеет? Что-то найти не могу.
rogoz
16.03.2019 16:36+1Как-то непонятно, чем отличается от уже существующей I2P.
LLE
16.03.2019 17:00+2Насколько понимаю, они работают на разных уровнях, их нельзя сравнивать напрямую.
shifttstas Автор
16.03.2019 18:55yggdrasil как и cjdns может работать как через интернет так и локально, два пира рядом — создадут линк сами через бродкаст/мультикаст найдут друг друга
supervillain
16.03.2019 19:06+1Главная задача I2P — делать анонимные соединения поверх IPv4/IPv6 сетей.
У ygg совсем другая задача (об этом написано в статье), но обе сети можно сочетать:
— yggdrasil поверх I2P. Это дает «Location privacy», возможность двум (и более) сегментам сети yggdrasil соединяться, и при этом не раскрывать свой настоящий IP адрес в обычном Интернете.
— I2P поверх yggdrasil. Анонимизация внутри Mesh сети, пока что смысла в этом нет, но теоретически, если весь интернет перейдет на использование Mesh, будет очень кстати.rogoz
16.03.2019 19:14Ну выглядит, что проще добавить всё это в до сих пор неособо популярную I2P, чем городить ещё одну «сеть-в-сети».
shifttstas Автор
16.03.2019 19:21Назначение у сетей разное, задача I2P — аннонимизация трафика, cjdns/yggdrasil — замена сетевого уровня по модели оси.
timdorohin
16.03.2019 17:59Netsukuku была способна работать поверх wifi меш-сетей. И она заменяла третий(сетевой) уровень в модели OSI.
А Иггдрасиль так может? Потому что работать поверх интернета вообще не вариант, если его не будет.
Arqwer
16.03.2019 21:28Решили однажды разрабы свой интернет создать.
Вышел Netsukuku, решил с оверлейной сети начать, и умер.
Решили другие разрабы свой интернет создать.
Вышел CjDNS, решил с оверлейной сети начать, и умер.
В третий раз пошли разрабы свой интернет создавать.
Вышел yggrasil, решил с оверлейной сети начать...shifttstas Автор
16.03.2019 21:34+3И хочется отметить есть прогресс:
- Netsukuku дал идею и плохую поддержку и реализацию
- Cjdns дал первую сеть из 500+ узлов и работающий Mesh в торонто
- Yggdrasil дал iOS клиент
Еще несколько итераций и будет хорошо
dartraiden
16.03.2019 21:38Последние новости о сети cjdns датируются 2017 годом
Разработка идёт, последний коммит от CJD был в октябре 2018. Разработка ведётся не в ветке master. И для CJD характерно именно такое поведение: раз в несколько месяцев появиться, ударно накоммитить и исчезнуть.shifttstas Автор
16.03.2019 21:59Не в мастере — не считается, да и с 2017 года в сети не появилось никаких важных вещей о которых просили — поддержка мобильных в то числе.
Я не предлагаю хоронить cjdns вот прямо сейчас, но на мой взгляд — yggdrasil уже сейчас умеет все тоже самое + уже есть свои фичи и динамика разработки меня сильно радует.
CherryPah
16.03.2019 23:39-1это не TOR, таким образом риски «быть прокси» — пропадают.
Для тех кто помнит дело Богатова и опасается быть выходнойнодой торапроксей могу сказать что входной нодой сейчас тоже быть не рекомендуется. Пока за это еще не сажают, но уже сейчас товарищ майор бдит и записывает кто и куда гоняет udp трафик в виде openvpn особенно если большом объеме. Да и те же РКНовские краулеры которые ищут и банят телеговские прокси без суда и следствия.
Так что если у вашего Иггдрасиля есть какая-то сигнатура по которой можно отследить его через DPI — у меня для вас плохие новости
abmanimenja
17.03.2019 03:09Еще есть похожий на описываемое в статье Meshbird, «русскоязычными» программистами сделанный.
golangshow.podfm.ru/index/43
Довольно хорошая разработка, к сожалению, прекратили поддержку FreeBSD, а Yggdrasil поддерживает.
Еще один метод защиты от блокировок (будущих) с нарушением сетевой связанности
Да ну…
По мне так он для другого прежде всего — удобный способ объединения распределенной системы. Например, реализация собственного кластера.
saag
17.03.2019 09:55Вот
Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмича, да взять бакенбарды Балтазар БалтазаровичаIggdrasil скрестить с аналогом WeChat, то получится альтернативный интернет.
ivan386
Сеть использует весь диапазон IPv6 или есть выделенные префиксы под неё?
shifttstas Автор
Выделенный, отличный от cjdns