Yggdrasil in LAN

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

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

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

Yggdrasil in LAN

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

Не знаю, добавит ли это понимания, но…
Yggdrasil - это протокол и его реализация оверлейной одноранговой пиринговой сети.
Оверлейная означает сеть внутри сети. TCP over TCP. Т.е., запуская Yggdrasil вы создаете туннель «внутри» TCP к пирам, которые вы указали в конфиге или к тем, которые найдены автоматически в локальной сети на IPv6 link-local адресах. С учетом того, что используется туннельный интерфейс, это похоже на то, как работают туннели OpenVPN, например. Туннель в данном случае - это шифрованные пакеты TCP, которые передаются внутри обычных, нешифрованных пакетов TCP.
Пиринговая означает peer to peer соединения. Т.е., одноранговый узел с одноранговым узлом. Все узлы в сети равны. Нет центрального сервера. От одного узла к другому, от другого к третьему - так организуется сеть, которая представляет собой дерево. Где располагается конкретный узел в этом дереве - зависит от ключа, который генерируется вместе с конфигурационным файлом. От ключа же зависит и IPv6-Yggdrasil адрес из диапазона 0200::/7 (который, к слову, deprecated в интернете). На основе этого дерева и строится маршрутизация в этой шифрованной сети туннелей от узла к узлу, от корня и т.д.

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

Yggdrasil in LAN

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

А еще, в локальной сети не обязательно устанавливать Yggdrasil на все устройства, чтобы они имели доступ в эту сеть. Достаточно установить на одно устройство, а остальным присвоить адреса из маршрутизируемой подсети Yggdrasil. Об этом в вики есть отдельная статья…

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

Yggdrasil in LAN

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

le_ писал(а):
12 апр 2023, 02:19
Для работы MPD IPv6 должен быть включен на интерфейсах локальной сети (не на туннельном интерфейсе Yggdrasil (здесь IPv6 и так подразумевается)) и там должны быть link-local адреса из fe80::/10.
Это всё понятно из описаний...
le_ писал(а):
12 апр 2023, 02:19
Но если у вас сложности с настройкой link-local IPv6 на устройствах в локальной сети, вы можете в качестве публичных пиров вручную указывать IPv4 адреса пиров в локальной сети
Для того чтобы указывать в качестве пиров локальные IPv4 нужно к адресам ещё указывать им ещё и порты TCP. Где?

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

Yggdrasil in LAN

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

le_ писал(а):
12 апр 2023, 02:19
Попингуйте fe80-адрес одного устройства с другого с fe80-адресом. Если ответы на пинги есть, то MPD должен работать, эти два узла соединятся между собой и Yggdrasil-адрес одного будет отвечать на пинги с другого Yggdrasil-адреса.
Вот это по существу :!:
Как оказывается (когда я проверил) что у меня на большинстве компьютеров (только Linux) настройками Network Manager стоит для физических сетевых интерфейсов "Требовать адресацию IPv4 для этого соединения" и для IPv6 "Выключено".
Причины тому понятны: 1). меня никогда не интересовали нативные IPv6 (толку от них никакого) + 2). провайдер мой (хоть и оптоволоконный GPON) никогда не поддерживал IPv6 ... и, по моим вопросам, даже мыслью такой не задавался, 3). хостер вот этого форума (с другого конца) тоже на текущей площадке хостинга IPv6 не поддерживает...

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

Yggdrasil in LAN

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

Olej писал(а):
12 апр 2023, 11:25
Как оказывается (когда я проверил) что у меня на большинстве компьютеров (только Linux) настройками Network Manager стоит для физических сетевых интерфейсов "Требовать адресацию IPv4 для этого соединения" и для IPv6 "Выключено".
Поубирал (и то и другое).

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

olej@nvme:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 10:7b:44:47:a2:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.241/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
       valid_lft 172725sec preferred_lft 172725sec
    inet6 fe80::522d:d0bd:b221:a526/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
6: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet6 21c:4cbf:9e0b:2904:301c:1c7a:9715:62c0/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5a2:bf71:8f05:351f/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
Это ping по LAN ... к Raspberry Pi (чтоб сложнее условия - разные архитектуры):

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

olej@nvme:~$ ping -6 fe80::5b06:3ef5:5b91:15d3 -c3
PING fe80::5b06:3ef5:5b91:15d3(fe80::5b06:3ef5:5b91:15d3) 56 data bytes
64 bytes from fe80::5b06:3ef5:5b91:15d3%enp3s0: icmp_seq=1 ttl=64 time=0.478 ms
64 bytes from fe80::5b06:3ef5:5b91:15d3%enp3s0: icmp_seq=2 ttl=64 time=0.568 ms
64 bytes from fe80::5b06:3ef5:5b91:15d3%enp3s0: icmp_seq=3 ttl=64 time=0.628 ms

--- fe80::5b06:3ef5:5b91:15d3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2023ms
rtt min/avg/max/mdev = 0.478/0.558/0.628/0.061 ms

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

Yggdrasil in LAN

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

Olej писал(а):
12 апр 2023, 11:29
Это ping по LAN ... к Raspberry Pi (чтоб сложнее условия - разные архитектуры):
А это ping в той же LAN и к тому же Raspberry Pi:

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

olej@nvme:~$ ping -6 fe80::5b06:3ef5:5b91:15d3 -c3
PING fe80::5b06:3ef5:5b91:15d3(fe80::5b06:3ef5:5b91:15d3) 56 data bytes
64 bytes from fe80::5b06:3ef5:5b91:15d3%enp3s0: icmp_seq=1 ttl=64 time=0.478 ms
64 bytes from fe80::5b06:3ef5:5b91:15d3%enp3s0: icmp_seq=2 ttl=64 time=0.568 ms
64 bytes from fe80::5b06:3ef5:5b91:15d3%enp3s0: icmp_seq=3 ttl=64 time=0.628 ms

--- fe80::5b06:3ef5:5b91:15d3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2023ms
rtt min/avg/max/mdev = 0.478/0.558/0.628/0.061 ms
Который (ping) никак не шёл вчера:
Olej писал(а):
12 апр 2023, 01:48

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

root@nvme:~# ping -c3 21e:af75:7a27:75:fc2:2453:9dcb:8670
PING 21e:af75:7a27:75:fc2:2453:9dcb:8670(21e:af75:7a27:75:fc2:2453:9dcb:8670) 56 data bytes

--- 21e:af75:7a27:75:fc2:2453:9dcb:8670 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2055ms
Облом.

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

Yggdrasil in LAN

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

Olej писал(а):
12 апр 2023, 11:34
это ping в той же LAN
Хост с которого ping-уется:

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

olej@nvme:~$ sudo cat /etc/yggdrasil.conf | grep "Peers:"
  Peers: []
  InterfacePeers: {}
В конфигурации никаких внешних пиров, только LAN.

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

olej@nvme:~$ sudo yggdrasilctl getPeers
[sudo] пароль для olej:       
Port	                           Public Key                           	              IP Address              	Uptime	 RX 	 TX 	Pr	                     URI                       
1   	00000002a1150bb1ff15e07bb758c468f31e75cbf8d17bc246364377cf18eae3	21e:af75:7a27:75:fc2:2453:9dcb:8670   	4m33s 	 5kb	 6kb	0 	tls://[fe80::5b06:3ef5:5b91:15d3]:34053       	
2   	3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6	202:1a41:b65a:dbd6:c433:bd44:ea25:343f	4m33s 	 1kb	 1kb	0 	tls://[fe80::13f5:9fe2:6393:bf4a%enp3s0]:52353	
3   	3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6	202:1a41:b65a:dbd6:c433:bd44:ea25:343f	4m33s 	 1kb	 1kb	0 	tls://[fe80::9bac:3791:1b79:7237%enp3s0]:53625	

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

olej@nvme:~$ yggdrasil --version
Build name: yggdrasil
Build version: 0.4.7

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

Yggdrasil in LAN

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

Olej писал(а):
12 апр 2023, 11:39
olej@nvme:~$ sudo yggdrasilctl getPeers
[sudo] пароль для olej:
Port Public Key IP Address Uptime RX TX Pr URI
1 00000002a1150bb1ff15e07bb758c468f31e75cbf8d17bc246364377cf18eae3 21e:af75:7a27:75:fc2:2453:9dcb:8670 4m33s 5kb 6kb 0 tls://[fe80::5b06:3ef5:5b91:15d3]:34053
2 3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6 202:1a41:b65a:dbd6:c433:bd44:ea25:343f 4m33s 1kb 1kb 0 tls://[fe80::13f5:9fe2:6393:bf4a%enp3s0]:52353
3 3cb7c934a4852779885762bb59781f9f54d771206460ca0d1c9f72311a7729f6 202:1a41:b65a:dbd6:c433:bd44:ea25:343f 4m33s 1kb 1kb 0 tls://[fe80::9bac:3791:1b79:7237%enp3s0]:53625
Из этого видно, что Multicast Peer Discovery у вас работает. Установлены соединения с узлами в локальной сети на link-local адресах.

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

Yggdrasil in LAN

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

А это пинг вашего 21е-адреса с моей машины, подключенной к Yggdrasil:

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

ping -6 21e:af75:7a27:75:fc2:2453:9dcb:8670
PING 21e:af75:7a27:75:fc2:2453:9dcb:8670(21e:af75:7a27:75:fc2:2453:9dcb:8670) 56 data bytes
64 bytes from 21e:af75:7a27:75:fc2:2453:9dcb:8670: icmp_seq=2 ttl=64 time=905 ms
64 bytes from 21e:af75:7a27:75:fc2:2453:9dcb:8670: icmp_seq=3 ttl=64 time=152 ms
64 bytes from 21e:af75:7a27:75:fc2:2453:9dcb:8670: icmp_seq=4 ttl=64 time=156 ms
^C
--- 21e:af75:7a27:75:fc2:2453:9dcb:8670 ping statistics ---
5 packets transmitted, 3 received, 40% packet loss, time 4014ms
rtt min/avg/max/mdev = 152.338/404.317/905.109/354.115 ms

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

Yggdrasil in LAN

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

Olej писал(а):
12 апр 2023, 10:50
Для того чтобы указывать в качестве пиров локальные IPv4 нужно к адресам ещё указывать им ещё и порты TCP. Где?
Адреса листенеров вместе с портами указываются в параметре Listen. Пример:

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

Listen:
  [
    tcp://192.168.1.3:22855
  ]
Адреса этих листенеров на других узлах указываются в массиве Peers. Пример:

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

Peers:
  [
    tcp://192.168.1.3:22855
  ]

Ответить

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

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

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