Yggdrasil через LAN без сервиса Yggdrasil

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

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

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 15:26

Идея простая...
1). можно установить Yggdrasil "по класике" - как меш-сеть, прописав UID (tcp://, tls://, socks:// ...) внешних пиров, через которые хост будет выходить в IPv6 сеть...
2). если в LAN уже работает Yggdrasil-хост, то другим хостам LAN можно не прописывать внешних пиров - они будут ходить в IPv6 сеть со своими IPv6, но транзитом через уже работающий хост Yggdrasil (за счёт MPD IPv6 широковещания в LAN - см. Multicast Peer Discovery).
3). но ... более того - если в LAN уже работает Yggdrasil-хост, то для новых хостов LAN можно вообще не устанавливать сервис, софт Yggdrasil, а перенаправить трафик транзитом только за счёт роутинга/форвардинга... (см. Как подключиться к Yggdrasil, не устанавливая его клиент на устройство)

Об этом уже было: Yggdrasil in LAN.
Но ...
1). у меня просто выгорел напрочь Raspberry Pi, который был базовым в том эксперименте...
2). нужно бы в качестве базового использовать стационар, который максимально часто в работе + освежить и оптимизировать его Yggdrasil
3). ... оно там просто затеряется :-(

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

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 15:30

Olej писал(а):
09 июл 2023, 15:26
освежить и оптимизировать его Yggdrasil
Вот такой хост выбираю:

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

olej@nvme:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description:    LMDE 5 (elsie)
Release:        5
Codename:       elsie

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

olej@nvme:~$ yggdrasil -version
Build name: yggdrasil
Build version: 0.4.7
Установлен из .deb пакета (этот хост не из исходников Go!):

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

olej@nvme:~/2023/Yggdrasil$ ls -l yggdrasil-0.4.7-amd64.deb
-rw-r--r-- 1 olej olej 3703666 ноя 20  2022 yggdrasil-0.4.7-amd64.deb
Вот отсюда: https://github.com/yggdrasil-network/yg ... o/releases

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 15:35

Olej писал(а):
09 июл 2023, 15:26
оптимизировать его Yggdrasil
Оптимизировать по 2-м позициям:
1.
Olej писал(а):
09 июл 2023, 13:49
в LAN хостах, по идее, должно стоять:
- или Peers: [...] заполненное, а MulticastInterfaces: [] пустое ...
- или Peers: [] пустое, а MulticastInterfaces: [] заполненное ... тогда целяться только по LAN IPv6 к соседям:
Этот хост должен коннектиться только к внешним пирам! Поэтому:

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

olej@nvme:~$ grep "Multicast" /etc/yggdrasil.conf
  # Multicast peer discovery will work regardless of any listeners set
  MulticastInterfaces: []
2. Перебрать и оптимизировать по ping все URI внешних пиров, обновить...
В итоге из прописанных в конфиге уже 2/3 не работали...
После оптимизации как-то так:

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

olej@nvme:~$ grep " Peers:" /etc/yggdrasil.conf -A12
  Peers: [
  # URI                                 Country               Latency
  # tcp://193.111.114.28:8080           ukraine               14.5
    tcp://193.111.114.28:8080
  # tcp://195.123.245.146:7743          europe/czechia.md     32.0
    tcp://195.123.245.146:7743
  # tcp://yggdrasil.su:62486            europe/germany.md     37.3
    tcp://yggdrasil.su:62486
  # tcp://y.zbin.eu:7743                europe/slovakia.md    42
    tcp://y.zbin.eu:7743
  # tcp://158.101.229.219:17002         mena/saudi-arabia.md  97
    tcp://158.101.229.219:17002
  ]
Но это, повторяюсь - только для моей геолокации :!:
Это не нужно повторять - у вас всё может быть по-другому :!:
Если кому нужно выбрать свои URI оптимальных пиров - то вам сюда: Публичный пир

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 15:36

Olej писал(а):
09 июл 2023, 15:26
в качестве базового использовать
В итоге:

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

root@nvme:~# systemctl restart yggdrasil

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

root@nvme:~# systemctl status --no-pager --full yggdrasil
● yggdrasil.service - yggdrasil
     Loaded: loaded (/etc/systemd/system/yggdrasil.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-07-09 15:06:48 EEST; 2s ago
    Process: 2622 ExecStartPre=/sbin/modprobe tun (code=exited, status=0/SUCCESS)
    Process: 2624 ExecStartPost=/usr/bin/sleep 2s (code=exited, status=0/SUCCESS)
    Process: 2665 ExecStartPost=/usr/bin/ip address add 31c:4cbf:9e0b:2904::2/64 dev tun0 (code=exited, status=0/SUCCESS)
   Main PID: 2623 (yggdrasil)
      Tasks: 11 (limit: 18931)
     Memory: 7.2M
        CPU: 66ms
     CGroup: /system.slice/yggdrasil.service
             └─2623 /usr/bin/yggdrasil -useconffile /etc/yggdrasil.conf

июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Interface MTU: 53049
июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Your public key is 0000000d9a030fa6b7de7f1f1c2b4754e9fb66086cf971f7997576e842902ef4
июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Your IPv6 address is 21c:4cbf:9e0b:2904:301c:1c7a:9715:62c0
июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Your IPv6 subnet is 31c:4cbf:9e0b:2904::/64
июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Connected outbound TCP: 203:63fc:667d:b16c:8e78:a899:8d54:a5e4@193.111.114.28:8080, source 192.168.1.241:54536
июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Connected outbound TCP: 202:db60::9ce0:a73d:7498:d7ae@195.123.245.146:7743, source 192.168.1.241:49970
июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Connected outbound TCP: 218:71e5:78e4:8989:b71:db7f:7bf1:f1e1@94.130.176.250:62486, source 192.168.1.241:54466
июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Connected outbound TCP: 200:dc42::3fca:8a99:5d66:b660@77.247.225.234:7743, source 192.168.1.241:34016
июл 09 15:06:46 nvme yggdrasil[2623]: 2023/07/09 15:06:46 Connected outbound TCP: 201:ca29:d4c5:50c8:b6f3:aa9a:e5d7:616c@158.101.229.219:17002, source 192.168.1.241:51636
июл 09 15:06:48 nvme systemd[1]: Started yggdrasil.

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

root@nvme:~# yggdrasilctl getpeers
Port                               Public Key                                                 IP Address                Uptime   RX      TX     Pr                  URI
1       19c0399824e937187576672ab5a1b8c3908d198d92e222b6cd30a1852a57476f        203:63fc:667d:b16c:8e78:a899:8d54:a5e4  56s      3kb     2kb    0       tcp://193.111.114.28:8080
2       2493ffffffffec63eb18516ce50a3dc2667e29d49fb8b9bd7b39ffe94a32c882        202:db60::9ce0:a73d:7498:d7ae           56s      1kb     1kb    0       tcp://195.123.245.146:7743
3       000000c70d438dbb3b7a4712404207070f34e500cd47cef73f26dd54e8f5d591        218:71e5:78e4:8989:b71:db7f:7bf1:f1e1   56s      1kb     1kb    0       tcp://yggdrasil.su:62486
4       91deffffffffe01abab3514ca4cfc27ec04dc261c801d285f0ce06e3314f8b6e        200:dc42::3fca:8a99:5d66:b660           56s      1kb     1kb    0       tcp://y.zbin.eu:7743
5       4d758aceabcdd2431559468a27a4cda8d46a3899e27a2d41c26ed599a0b902f0        201:ca29:d4c5:50c8:b6f3:aa9a:e5d7:616c  56s      1kb     1kb    0       tcp://158.101.229.219:17002

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

root@nvme:~# yggdrasilctl getself
Build name:     yggdrasil
Build version:  0.4.7
IPv6 address:   21c:4cbf:9e0b:2904:301c:1c7a:9715:62c0
IPv6 subnet:    31c:4cbf:9e0b:2904::/64
Coordinates:    [1 92 118]
Public key:     0000000d9a030fa6b7de7f1f1c2b4754e9fb66086cf971f7997576e842902ef4

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 16:28

Olej писал(а):
09 июл 2023, 15:36
В итоге:
Проверка работы и скорости к серверу вот этого форума:

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

olej@277938:~$ 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 2e:49:10:b4:b2:02 brd ff:ff:ff:ff:ff:ff
    inet 90.156.230.27/24 brd 90.156.230.255 scope global dynamic eth0
       valid_lft 79549sec preferred_lft 79549sec
    inet6 fe80::2c49:10ff:feb4:b202/64 scope link 
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet6 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::d86f:9577:d828:cb4d/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
Сервер >4000 км.:

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

olej@nvme:/etc$ ping -c3 -6 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771
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=573 ms
64 bytes from 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771: icmp_seq=2 ttl=64 time=202 ms
64 bytes from 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771: icmp_seq=3 ttl=64 time=200 ms

--- 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 200.406/325.210/572.905/175.148 ms

На нём запускаю серверную сторону тестера скорости - тут обязательно (!) указание порта 8080 который не закрыт файерволом :

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

olej@277938:~$ iperf3 -s -p 8080
-----------------------------------------------------------
Server listening on 8080
-----------------------------------------------------------
...

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 16:33

Olej писал(а):
09 июл 2023, 16:28
На нём запуская серверную сторону тестера скорости:
Клиентская часть тестера скорости ...
1). IPv4 прямой коннект:

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

olej@nvme:~$ iperf3 -p8080 -c 90.156.230.27
Connecting to host 90.156.230.27, port 8080
[  5] local 192.168.1.241 port 58610 connected to 90.156.230.27 port 8080
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  5.37 MBytes  45.0 Mbits/sec    0   1.26 MBytes       
[  5]   1.00-2.00   sec  6.25 MBytes  52.4 Mbits/sec  444    667 KBytes       
[  5]   2.00-3.00   sec  5.00 MBytes  41.9 Mbits/sec    0    714 KBytes       
[  5]   3.00-4.00   sec  6.25 MBytes  52.4 Mbits/sec    0    745 KBytes       
[  5]   4.00-5.00   sec  6.25 MBytes  52.4 Mbits/sec    0    762 KBytes       
[  5]   5.00-6.00   sec  5.00 MBytes  41.9 Mbits/sec    0    772 KBytes       
[  5]   6.00-7.00   sec  6.25 MBytes  52.4 Mbits/sec    0    773 KBytes       
[  5]   7.00-8.00   sec  5.00 MBytes  41.9 Mbits/sec    0    773 KBytes       
[  5]   8.00-9.00   sec  6.25 MBytes  52.4 Mbits/sec    1    773 KBytes       
[  5]   9.00-10.00  sec  6.25 MBytes  52.4 Mbits/sec    0    779 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  57.9 MBytes  48.5 Mbits/sec  445             sender
[  5]   0.00-10.11  sec  54.8 MBytes  45.5 Mbits/sec                  receiver

iperf Done.
2). IPv6 мэш-сеть Yggdrasil:

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

olej@nvme:~$ iperf3 -p8080 -6 -c 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771
Connecting to host 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771, port 8080
[  5] local 31c:4cbf:9e0b:2904::2 port 42460 connected to 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771 port 8080
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.21 MBytes  10.2 Mbits/sec    0    673 KBytes       
[  5]   1.00-2.00   sec  1.59 MBytes  13.3 Mbits/sec   11    724 KBytes       
[  5]   2.00-3.00   sec   880 KBytes  7.21 Mbits/sec    8    414 KBytes       
[  5]   3.00-4.00   sec   880 KBytes  7.20 Mbits/sec    4    362 KBytes       
[  5]   4.00-5.00   sec   880 KBytes  7.20 Mbits/sec    3    310 KBytes       
[  5]   5.00-6.00   sec  1.01 MBytes  8.48 Mbits/sec    1    414 KBytes       
[  5]   6.00-7.00   sec  1.06 MBytes  8.90 Mbits/sec    1    414 KBytes       
[  5]   7.00-8.00   sec   880 KBytes  7.20 Mbits/sec    2    310 KBytes       
[  5]   8.00-9.00   sec  1.77 MBytes  14.8 Mbits/sec    0    362 KBytes       
[  5]   9.00-10.00  sec   880 KBytes  7.20 Mbits/sec    1    259 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  10.9 MBytes  9.18 Mbits/sec   31             sender
[  5]   0.00-10.23  sec  8.87 MBytes  7.27 Mbits/sec                  receiver

iperf Done.
Тут, конечно, не всё так хорошо как хотелось бы ... но тоже ничего за 4000 км. по динамически прокладываемой трассе!
Но тут - см. сюда: Yggdrasil скорость - там продолжаю со скоростями разбираться :!:

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 18:20

Olej писал(а):
09 июл 2023, 15:26
если в LAN уже работает Yggdrasil-хост, то для новых хостов LAN можно вообще не устанавливать сервис, софт Yggdrasil, а перенаправить трафик транзитом только за счёт роутинга/форвардинга...
Вот теперь до этой цели только дошёл...
По инструкукции Как подключиться к Yggdrasil, не устанавливая его клиент на устройство
Вариант 1: маршрутизация из подсети /64
Пример ручной настройки

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 18:32

Olej писал(а):
09 июл 2023, 18:20
Вот теперь до этой цели только дошёл...
Базовый хост работающий в Yggdrasil:

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

root@nvme:~# yggdrasilctl getself
Build name:     yggdrasil
Build version:  0.4.7
IPv6 address:   21c:4cbf:9e0b:2904:301c:1c7a:9715:62c0
IPv6 subnet:    31c:4cbf:9e0b:2904::/64
Coordinates:    [1 92 118]
Public key:     0000000d9a030fa6b7de7f1f1c2b4754e9fb66086cf971f7997576e842902ef4
1). Добавил IPv6 адрес ... произвольный, но из подсети 31c:4cbf:9e0b:2904::/64 :

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

root@nvme:~# sudo ip address add 31c:4cbf:9e0b:2904::1/64 dev enp3s0

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

root@nvme:~# ip a s dev enp3s0
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 158107sec preferred_lft 158107sec
    inet6 31c:4cbf:9e0b:2904::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::522d:d0bd:b221:a526/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 19:26

Olej писал(а):
09 июл 2023, 18:32
Базовый хост работающий в Yggdrasil:
2). Проверить: включен ли форвардинг?
И тут в инструкции (выше) - ошибка.
Проверяю так:

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

root@nvme:~# cat /proc/sys/net/ipv6/conf/all/forwarding
0
Конечно нет!
Устанавливаю так:

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

root@nvme:~# sysctl -w net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.forwarding = 1

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

root@nvme:~# cat /proc/sys/net/ipv6/conf/all/forwarding
1
А для того, чтобы это сохранилось после перезагрузки...
Проверили:

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

olej@nvme:~$ ls -l /etc/sysctl.conf
-rw-r--r-- 1 root root 2355 апр  6  2021 /etc/sysctl.conf

olej@nvme:~$ grep net.ipv6.conf.all.forwarding /etc/sysctl.conf
#net.ipv6.conf.all.forwarding=1
Поменяли:

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

olej@nvme:~$ grep net.ipv6.conf.all.forwarding /etc/sysctl.conf
net.ipv6.conf.all.forwarding=1
На этом с Yggdrasil хостом, вроде, всё ...

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

Yggdrasil через LAN без сервиса Yggdrasil

Непрочитанное сообщение Olej » 09 июл 2023, 19:38

Olej писал(а):
09 июл 2023, 18:32
Базовый хост работающий в Yggdrasil:
Теперь дальше любой хост LAN, который хотел бы быть клиентом Yggdrasil без установки ПО Yggdrasil... зайдя на хост, например, по SSH:
1). добавить произвольный (свободный) IPv6 из той же подсетки 31c:4cbf:9e0b:2904::/6
- уясняем имя интерфейса:

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

root@nvidia:~# ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 70:71:bc:a3:c5:c0 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
3: wlx008736005357: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 00:87:36:00:53:57 brd ff:ff:ff:ff:ff:ff
Добавляем адрес ... произвольный - у меня это 31c:4cbf:9e0b:2904::5, взят "с потолка":

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

    
root@nvidia:~# ip address add 31c:4cbf:9e0b:2904::5/64 dev eno1

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

root@nvidia:~# ip a s dev eno1
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 70:71:bc:a3:c5:c0 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet 192.168.1.11/24 brd 192.168.1.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet6 31c:4cbf:9e0b:2904::5/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::762:c6bf:9eaa:93a9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Ответить

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

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

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