devzone.org.ua/post/yggdrasil-mereza-z-detsentralizovanym-routynhom.md
2025-11-01 14:28:20 +02:00

81 lines
No EOL
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Yggdrasil - мережа з децентралізованим роутингом
[Yggdrasil](https://yggdrasil-network.github.io) - експериментальний протокол для побудови само-організованої локальної мережі з шифруванням трафіку та підтримкою оверлейного підключення через Інтернет.
В своїй основі використовує приватний ключ для генерації постійних псевдо-адрес IPv6 в діапазоні `0200::/7`
Має різні сфери застосування, зокрема: автоматизована побудова локальних мереж, маскування IP (як транспорт I2P), обхід блокувань та обмежень віртуальної адресації NAT (наприклад, для організації відео-спостереження без наявності виділеної адреси, розгортання домашнього веб-серверу, віддаленого керування інфраструктурою підприємства тощо). Завдяки простоті встановлення та здатності до саморозгортання підключень, здобув широку популярність зокрема серед користувачів CJDNS.
## Встановлення
Yggdrasil написаний на Go, початковий код доступний в репозиторії на [GitHub](https://github.com/yggdrasil-network/yggdrasil-go).
Бінарні збірки можуть бути встановлені зі штатного репозиторію командою:
```
apt install yggdrasil
```
або використовуючи останню збірку з релізу:
```
wget https://github.com/yggdrasil-network/yggdrasil-go/releases/download/v0.5.5/yggdrasil-0.5.5-amd64.deb
dpkg -i yggdrasil-0.5.5-amd64.deb
```
## Налаштування
У разі підключення до мережі Yggdrasil через Інтернет, необхідно додати до файлу конфігурації щонайменше один географічно близький [публічний вузол](https://publicpeers.neilalexander.dev/):
```
# /etc/yggdrasil/yggdrasil.conf
Peers: [
tls://xx.xx.xx.xx:xxxx
]
```
Також, зручно вказати назву для інтерфейсу Yggdrasil - щоб потім не плутати його наприклад з VPN:
```
IfName: ygg0
```
Після цього можна перезапустити сервіс, щоб застосувати зміни:
```
systemctl restart yggdrasil
```
Якщо все зроблено правильно, можна спробувати відкрити будь яку з адрес в [каталозі сервісів](https://yggdrasil-network.github.io/services.html).
## Додатково
Перевірити наявність нового інтерфейсу можна командою:
```
ifconfig
```
Отримати власну адресу:
```
yggdrasilctl getself
```
Можна легко створювати маски підмереж для окремих сервісів - стріми, вебсайти, пошта, та інше:
```
ifconfig lo inet6 add 3xx:xxxx:xxxx:xxxx::xx
```
* де `3xx:xxxx:xxxx:xxxx` - адреса з `yggdrasilctl getself`
Якщо підключення відбувається через власний публічний вузол, на ньому відкривається довільний порт.
У разі необхідності обмеження доступу для невідомих динамічних адрес, починаючи з версії 0.5.0 можна вказувати пароль:
* `tls://[::]:12345?password=123456abcdef` - сервер
* `tls://a.b.c.d:12345?password=123456abcdef` - клієнт
Початківцям важливо встановити мережний екран, наприклад `ufw` для `iptables`, інакше такі служби як принтери або локальні веб-сервери для розробки (що стандартно прослуховують `0.0.0.0`) можуть стати доступними для інших учасників локальної мережі. З цієї точки зору, буде зручним організація окремого роутеру наприклад на базі OpenWRT.
Важливо розуміти, що Yggdrasil не має на меті захист від ідентифікації користувача в мережі, порівнюючи з анонімайзерами Tor чи I2P. Іноді, може використовуватись як додатковий канал, але походження його пакетів може бути встановлено, якщо не використовуються такі засоби маскування трафіку як Shadowsocks та інші.
Yggdrasil - перш за все альтернативний маршрутизатор, який дозволяє автоматично створювати перманентні IPv6 адреси в середовищі IPv4 та є корисним інструментом для швидкого розгортання інфраструктури локальних дротових, лазерних та радіо мереж.
### Посилання
* https://yggdrasil-network.github.io - офіційна сторінка
* https://github.com/yggdrasil-network - проект на GitHub
* https://yggdrasil-map.cwinfo.net - орієнтовна мапа вузлів