Yggdrasil in LAN

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

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

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

Yggdrasil in LAN

Непрочитанное сообщение Olej » 12 апр 2023, 12:27

le_ писал(а):
12 апр 2023, 12:19
Из этого видно, что Multicast Peer Discovery у вас работает. Установлены соединения с узлами в локальной сети на link-local адресах.
Да, работает...
Проблема была в том, что я никогда не работал и не интересовался нативными link-local IPv6 адресами вида fe80::/10, и они на большинстве моих сетевых интерфейсов за ненадобностью были отключены (т.е. IPv6 адресация отключена через Network Manager).

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

Yggdrasil in LAN

Непрочитанное сообщение Olej » 12 апр 2023, 12:29

Olej писал(а):
12 апр 2023, 11:39
Хост с которого ping-уется:
И это как-раз тот хост, для которого вчера был добавлен репозиторий обновлений:

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

olej@nvme:~$ apt list --upgradable
Listing... Done
yggdrasil/bullseye-backports 0.4.7-1~bpo11+1 amd64 [upgradable from: 0.4.7]
N: There is 1 additional version. Please use the '-a' switch to see it

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

olej@nvme:~$ apt list -a --upgradable
Listing... Done
yggdrasil/bullseye-backports 0.4.7-1~bpo11+1 amd64 [upgradable from: 0.4.7]
yggdrasil/now 0.4.7 amd64 [installed,upgradable to: 0.4.7-1~bpo11+1]

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

Yggdrasil in LAN

Непрочитанное сообщение Olej » 12 апр 2023, 13:51

le_ писал(а):
12 апр 2023, 02:19
Для работы MPD IPv6 должен быть
Переконфигурировал "малыша" Raspberry Pi для работы в LAN через MPD:

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

root@raspberrypi:/etc# inxi -Mxxx
Machine:   Type: ARM Device System: Raspberry Pi 2 Model B Rev 1.1 details: BCM2835 rev: a21041 serial: 00000000f57e2ca8 

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

root@raspberrypi:/etc# cat /etc/yggdrasil.conf | grep "Peers:"
  Peers:
  InterfacePeers: {}
Рестарт:

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

root@raspberrypi:/etc# sudo systemctl start yggdrasil

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

root@raspberrypi:/etc# sudo systemctl restart yggdrasil
root@raspberrypi:/etc# systemctl status --no-pager --full yggdrasil
● yggdrasil.service - yggdrasil
     Loaded: loaded (/etc/systemd/system/yggdrasil.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-04-12 13:49:49 EEST; 2s ago
    Process: 25635 ExecStartPre=/sbin/modprobe tun (code=exited, status=0/SUCCESS)
   Main PID: 25637 (yggdrasil)
      Tasks: 11 (limit: 1595)
        CPU: 585ms
     CGroup: /system.slice/yggdrasil.service
             └─25637 /usr/bin/yggdrasil -useconffile /etc/yggdrasil.conf

апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 UNIX admin socket listening on /var/run/yggdrasil.sock
апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 Interface name: tun0
апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 Interface IPv6: 21e:af75:7a27:75:fc2:2453:9dcb:8670/7
апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 Interface MTU: 53049
апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 Your public key is 00000002a1150bb1ff15e07bb758c468f31e75cbf8d17bc246364377cf18eae3
апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 Your IPv6 address is 21e:af75:7a27:75:fc2:2453:9dcb:8670
апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 Your IPv6 subnet is 31e:af75:7a27:75::/64
апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 TLS listener started on [fe80::5b06:3ef5:5b91:15d3%eth0]:45925
апр 12 13:49:49 raspberrypi yggdrasil[25637]: 2023/04/12 13:49:49 Connected inbound TLS: 202:1a41:b65a:dbd6:c433:bd44:ea25:343f@fe80::9bac:3791:1b79:7237, source [fe80::5b06:3ef5:5b91:15d3%eth0]:45925
апр 12 13:49:49 raspberrypi Yggdrasil[25637]: 2023/04/12 13:49:49 Connected inbound TLS: 202:1a41:b65a:dbd6:c433:bd44:ea25:343f@fe80::13f5:9fe2:6393:bf4a, source [fe80::5b06:3ef5:5b91:15d3%eth0]:45925
Вот теперь оно всё живое:

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

root@raspberrypi:/etc# sudo yggdrasilctl getPeers
Port	                           Public Key                           	              IP Address              	Uptime	 RX 	 TX 	Pr	                    URI                      
1   	3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6	202:1a41:b65a:dbd6:c433:bd44:ea25:343f	12s   	 1kb	 1kb	0 	tls://[fe80::9bac:3791:1b79:7237%eth0]:38811	
2   	3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6	202:1a41:b65a:dbd6:c433:bd44:ea25:343f	12s   	 1kb	 1kb	0 	tls://[fe80::13f5:9fe2:6393:bf4a%eth0]:49381	
Включено в глобальную сеть Yggdrasil через 2 локальных пира:
tls://[fe80::9bac:3791:1b79:7237%eth0]:38811
tls://[fe80::13f5:9fe2:6393:bf4a%eth0]:49381

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

olej@R420:~$ host ygg.linux-ru.lib
ygg.linux-ru.lib has IPv6 address 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771

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

olej@raspberrypi:~ $ ping -6 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771 -c3
PING 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771(221:58c9:9a6:99be:f3d:c1ac:2b5b:9771) 56 data bytes
64 bytes from 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771: icmp_seq=1 ttl=64 time=1205 ms
64 bytes from 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771: icmp_seq=2 ttl=64 time=182 ms
64 bytes from 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771: icmp_seq=3 ttl=64 time=144 ms

--- 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2061ms
rtt min/avg/max/mdev = 143.625/509.961/1204.740/491.526 ms, pipe 2
(Хорошо видно характерный для Yggdrasil 1-й длинный коннект - установление трассы-роутинга, и дальше быстрый доступ.)

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

Yggdrasil in LAN

Непрочитанное сообщение Olej » 12 апр 2023, 14:53

le_ писал(а):
12 апр 2023, 03:51
в локальной сети не обязательно устанавливать Yggdrasil на все устройства, чтобы они имели доступ в эту сеть. Достаточно установить на одно устройство, а остальным присвоить адреса из маршрутизируемой подсети Yggdrasil. Об этом в вики есть отдельная статья…
Вот это любопытно...
Если остальное я более-менее видел, и нужно было только повозиться чтобы его добить по какой-то трабле, то этого я не видел вообще :-o
Буду поискать.

le_
Писатель
Сообщения: 24
Зарегистрирован: 07 апр 2023, 17:26
Контактная информация:

Yggdrasil in LAN

Непрочитанное сообщение le_ » 12 апр 2023, 14:56

Olej писал(а):
12 апр 2023, 14:53
Буду поискать.
Как подключиться к Yggdrasil, не устанавливая его клиент на устройство.
Там несколько вариантов с довольно подробными примерами.

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

Yggdrasil in LAN

Непрочитанное сообщение Olej » 12 апр 2023, 19:05

le_ писал(а):
12 апр 2023, 14:56
Как подключиться к Yggdrasil, не устанавливая его клиент на устройство.
Там несколько вариантов с довольно подробными примерами.
Очень интересно...
Разработчики Yggdrasil рекомендуют устанавливать клиент Yggdrasil на каждое устройство, которому нужен доступ в эту сеть. При этом гарантируется сквозное шифрование трафика между узлами, и каждый узел сети сможет выполнять роль маршрутизатора. Однако не во всех сетевых устройствах есть возможность установки и запуска Yggdrasil.
Варианты 2 и 3 ... ну, в общем, понятны и без особых объяснений, только повозиться та придётся с настройками, в зависимости от использования конкретных реализаций proxy и VPN...
А вот вариант 1 - особенно интересный:
Вариант 1: маршрутизация из подсети /64

Если устройство поддерживает протокол IPv6, оно может быть подключено к сети Yggdrasil путем присвоения ему IPv6 адреса из подсети 300::/64 и указания адреса шлюза в сеть Yggdrasil.

Иными словами, если у нас дома есть роутер, на котором имеется возможность установить Yggdrasil, то другие устройства в нашей сети мы можем подключить к сети Yggdrasil, не устанавливая на них клиент сети.
Это я обязательно попробую.
О результатах отпишу здесь ... потом :-)

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

Yggdrasil in LAN

Непрочитанное сообщение Olej » 14 апр 2023, 14:44

le_ писал(а):
11 апр 2023, 23:42
Там точно были изменения внутри ветки 0.4.х. Поэтому, желательно, хотя бы в своей локальной сети иметь одинаковые версии Yggdrasil на разных устройствах.
По поводу версий (экспериментально):
- это сервер, x86_64, с внешними пирами, Yggdrasil установлен apt из репозитория:

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

olej@R420:~$ yggdrasil --version
Build name: unknown
Build version: unknown
Тут и версию установить непросто стандартным способом...
Но вот так:

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

olej@R420:~$ sudo yggdrasilctl getSelf
[sudo] пароль для olej:       
IPv6 address: 202:1a41:b65a:dbd6:c433:bd44:ea25:343f
IPv6 subnet: 302:1a41:b65a:dbd6::/64
Public key: 3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6
olej@R420:~$ aptitude show yggdrasil
Пакет: yggdrasil                                 
Версия: 0.4.3-2ubuntu0.22.04.1
Новый: да
Состояние: установлен
Установлен автоматически: нет
Приоритет: необязательный
Раздел: universe/golang
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: amd64
Размер в распакованном виде: 9.157 k
Зависит: libc6 (>= 2.34)
Описание: Fully encrypted global-scale mesh network (program)
 Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6 network. It is lightweight, self-arranging, supported on multiple
 platforms and allows pretty much any IPv6-capable application to communicate securely with other Yggdrasil nodes. Yggdrasil does not require you to have
 IPv6 Internet connectivity - it also works over IPv4. 
 
 This package contains the executables.
Домашняя страница: https://github.com/yggdrasil-network/yggdrasil-go
Версия 0.4.3
Внешние пиры:

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

olej@R420:~$ sudo yggdrasilctl getPeers
                                                                  bytes_recvd  bytes_sent  coords        key                                                               port  remote                                        uptime           
21e:af75:7a27:75:fc2:2453:9dcb:8670                               25200        44283       [1 239 51 8]  00000002a1150bb1ff15e07bb758c468f31e75cbf8d17bc246364377cf18eae3  8     tls://[fe80::5b06:3ef5:5b91:15d3%eno1]:52529  03:20:35         
200:4ac1:2516:a78:b43e:51e1:ab90:e2a2                             39989        12837       [1 111 17]    da9f6d74fac3a5e0d70f2a378eaeb672b13e2a9ef33f873ae417ae9cd7a30c8f  3     tls://54.37.137.221:11129                     03:20:37         
202:db60::9ce0:a73d:7498:d7ae                                     134577       24095       [1 79]        2493ffffffffec63eb18516ce50a3dc2667e29d49fb8b9bd7b39ffe94a32c882  5     tcp://195.123.245.146:7743                    03:20:37         
203:63fc:667d:b16c:8e78:a899:8d54:a5e4                            82545        399105      [1 239]       19c0399824e937187576672ab5a1b8c3908d198d92e222b6cd30a1852a57476f  1     tcp://193.111.114.28:8080                     03:20:38         
218:71e5:78e4:8989:b71:db7f:7bf1:f1e1                             95574        49340       [1 116]       000000c70d438dbb3b7a4712404207070f34e500cd47cef73f26dd54e8f5d591  6     tls://94.130.176.250:62586                    03:20:37         
- это хост Raspberry Pi в LAN, подключенный в сеть через Multicast Peer Discovery (MPD), без внешних пиров:

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

olej@raspberrypi:~ $ yggdrasil --version
Build name: yggdrasil-develop
Build version: 0.4.7

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

root@raspberrypi:/etc# grep " Peers:" -A1 /etc/yggdrasil.conf 
  Peers:
  []

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

olej@raspberrypi:~ $ sudo yggdrasilctl getSelf
Build name:   	yggdrasil-develop                                               	
Build version:	0.4.7                                                           	
IPv6 address: 	21e:af75:7a27:75:fc2:2453:9dcb:8670                             	
IPv6 subnet:  	31e:af75:7a27:75::/64                                           	
Coordinates:  	[1 239 51 8]                                                    	
Public key:   	00000002a1150bb1ff15e07bb758c468f31e75cbf8d17bc246364377cf18eae3	
Версия 4.0.7
Пиры только внутренние, LAN:

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

olej@raspberrypi:~ $ sudo yggdrasilctl getPeers
Port	                           Public Key                           	              IP Address              	 Uptime 	 RX 	 TX 	Pr	                  URI                   
1   	3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6	202:1a41:b65a:dbd6:c433:bd44:ea25:343f	3h22m39s	42kb	64kb	0 	tls://[fe80::9bac:3791:1b79:7237]:41997	
2   	3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6	202:1a41:b65a:dbd6:c433:bd44:ea25:343f	3h22m39s	43kb	25kb	0 	tls://[fe80::13f5:9fe2:6393:bf4a]:39659	
olej@raspberrypi:~ $ 
(Хорошо видно что проключен через локальные IPv6 адреса в LAN fe80::9bac:3791:1b79:7237 и fe80::13f5:9fe2:6393:bf4a - это и есть 2 физических интерфейса сервера показанного выше.)

P.S. Как хорошо видно, версии 0.4.3 и 0.4.7, по крайней мере, прозрачно и успешно работают друг с другом.

le_
Писатель
Сообщения: 24
Зарегистрирован: 07 апр 2023, 17:26
Контактная информация:

Yggdrasil in LAN

Непрочитанное сообщение le_ » 14 апр 2023, 15:08

Olej писал(а):
14 апр 2023, 14:44
Как хорошо видно, версии 0.4.3 и 0.4.7, по крайней мере, прозрачно и успешно работают друг с другом.
В маленькой сети вы, возможно, не увидите проблем, они возникают непредсказуемо.
В общей сети Yggdrasil из-за наличия в ней разных версий Yggdrasil периодически возникают всяческие проблемы: частая смена координат узлов в дереве (шатание сети, нарушение связности), высокие пинги, узлы в одной локалке иногда соединяются друг с другом через узел где-то в другой стране... Об, этом частенько пишут в чате разработчиков, и разработчики рекомендуют использовать latest release, либо ждать выхода версии 0.5, которая не будет совместима со старыми версиями.

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

Yggdrasil in LAN

Непрочитанное сообщение Olej » 14 апр 2023, 16:08

Olej писал(а):
14 апр 2023, 14:44
хост Raspberry Pi в LAN, подключенный в сеть через Multicast Peer Discovery (MPD), без внешних пиров:
Olej писал(а):
12 апр 2023, 19:05
Вариант 1: маршрутизация из подсети /64
Olej писал(а):
12 апр 2023, 19:05
Это я обязательно попробую.
Это, как оказалось, вполне реализуемо, ... но не так просто ;-)
Хост роутинга в Yggdrasil, через который я хочу пробросить роутинг без установки Yggdrasil-клиента:

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

olej@raspberrypi:~ $ hostname
raspberrypi
Который сам не имеет внешних пиров и ходит в сеть за счёт MPD - для большего усложнения картины ... или для большей общности картины ;-) :
Olej писал(а):
14 апр 2023, 14:44
хост Raspberry Pi в LAN, подключенный в сеть через Multicast Peer Discovery (MPD), без внешних пиров
Olej писал(а):
14 апр 2023, 14:44
Хорошо видно что проключен через локальные IPv6 адреса в LAN fe80::9bac:3791:1b79:7237 и fe80::13f5:9fe2:6393:bf4a - это и есть 2 физических интерфейса сервера показанного выше.

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

olej@raspberrypi:/proc/sys/net/ipv6/conf/all $ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye

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

Yggdrasil in LAN

Непрочитанное сообщение Olej » 14 апр 2023, 16:16

Olej писал(а):
14 апр 2023, 16:08
Хост роутинга в Yggdrasil, через который я хочу пробросить роутинг

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

olej@raspberrypi:~ $ yggdrasil --version
Build name: yggdrasil-develop
Build version: 0.4.7
По инструкукции Как подключиться к Yggdrasil, не устанавливая его клиент на устройство
Вариант 1: маршрутизация из подсети /64
1.

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

olej@raspberrypi:~ $ ip a s tun0
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet6 21e:af75:7a27:75:fc2:2453:9dcb:8670/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::eeec:dd70:b702:96bd/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

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

root@raspberrypi:/etc# ip address add 31e:af75:7a27:75::1/64 dev eth0

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

root@raspberrypi:/etc# ip a s dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:7e:2c:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.142/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 107400sec preferred_lft 78260sec
    inet6 31e:af75:7a27:75::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::5b06:3ef5:5b91:15d3/64 scope link
       valid_lft forever preferred_lft forever
2. Тут перед установкой форвардинга я сначала решил прочитать что там установлено:

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

root@raspberrypi:/etc# sysctl -r net.ipv6.conf.all.forwarding
sysctl: no variables specified
Try `sysctl --help' for more information.

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

olej@raspberrypi:~ $ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

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

olej@raspberrypi:~ $ sysctl net.ipv6.ip_forward
sysctl: cannot stat /proc/sys/net/ipv6/ip_forward: Нет такого файла или каталога
И тут ожидает облом! :-( :-o

Ответить

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

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

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