Настройка yggdrasil

Кто-нибудь пытался настроить yggdrasil, чтобы связать свои устройства в сеть?
Хотелось получить примерно следующий результат:
  1. Доступ к устройствам за NAT (компьютеры, мобильники).
  2. Если устройства в одной локальной сети (например wifi), то соединение должно идти напрямую, а не через публичные пиры. Т.к. адреса устройств не изменяются, то должно получиться довольно удобно.
  3. Изолировать устройства (насколько это возможно) от общей сети yggdrasil (настройкой firewall, параметрами в конфиге).

Сейчас в наличии есть ноут с Arch и телефон на андроиде.
На ноут поставил yggdrasil (0.4.3-1) из офф реп, на телефон приложуху crispa-android (2.0.19).

По первому пункту:
Удалось подружить телефон и ноут через публичные пиры. Нужно было только прописать публичные пиры в конфиг и всё завелось без проблем.
Белого ip в наличии нет, поэтому настройка связи через свой сервер вместо публичных пиров сейчас не актуальна.

По второму пункту:
А вот здесь возникли проблемы. Если убрать публичных пиров из конфига, то телефон и ноут не находят друг друга в локальной сети через multicast.
Сервис похоже запускается без проблем:
$ systemctl status yggdrasil.service
Startup complete
Starting multicast module
UNIX admin socket listening on /var/run/yggdrasil.sock
Interface name: ygg0
Interface IPv6: <ipv6>/7
Interface MTU: 53049
Your public key is <key>
Your IPv6 address is <ipv6>
Your IPv6 subnet is <ipv6>::/64
Listening for TLS on: [<ipv6>%wlan0]:36455

Настройки multicast по умолчанию
/etc/yggdrasil.conf
...
  MulticastInterfaces:
  [
    {
      Regex: .*
      Beacon: true
      Listen: true
      Port: 0
    }
  ]
...
На момент экспериментов firewall отключал, не помогло. Такое ощущение, что на телефоне не активен multicast.

По третьему пункту:
Текущие настройки nftables:

table inet filter {
  chain input {
    type filter hook input priority filter
    policy drop

    iif lo accept comment "Accept any localhost traffic"
    ct state invalid drop comment "Drop invalid connections"
    ct state established,related accept comment "Accept traffic originated from us"

    iifname ygg0 jump yggdrasil_input
    #pkttype { broadcast,multicast} accept

    meta l4proto ipv6-icmp accept comment "Accept ICMPv6"
    meta l4proto icmp accept comment "Accept ICMP"
    ip protocol igmp accept comment "Accept IGMP"

    meta l4proto udp ct state new jump udp_chain
    meta l4proto tcp tcp flags & (fin|syn|rst|ack) == syn ct state new jump tcp_chain

    meta l4proto udp reject
    meta l4proto tcp reject with tcp reset
    counter reject with icmpx type port-unreachable
  }

  chain forward {
    type filter hook forward priority filter
    policy drop
  }

  chain output {
    type filter hook output priority filter
    policy accept
  }

  chain tcp_chain {
    #tcp dport <port> accept comment "allow ssh on port <port>"
    #tcp dport 1714-1764 accept comment "allow KDE Connect"
  }

  chain udp_chain {
    #udp dport 1714-1764 accept comment "allow KDE Connect"
  }

  chain yggdrasil_input {
    #ip6 saddr { <ipv6_устройств> } accept
  }
}

Так как документации по yggdrasil не шибко много, может кто поделится опытом :)
vantu5z
yggdrasil
Первый раз слышу.
vantu5z
Если убрать публичных пиров из конфига,
Так а как оно должно работать без их серверов?
Два варианта:
1. Поднять внутри локальной сети Traversal Using Relay NAT server и прописать его(вряд-ли авторы придумали что-то другое).
2. Просто выключить эту балалайку. т.к. устройства в одной локалке из и так будет видно.
Ошибки в тексте-неповторимый стиль автора©
indeviral
Так а как оно должно работать без их серверов?
Как я понял оно создает виртуальную mesh сеть работающую поверх других сетей (использует их как транспорт), использование интернета просто увеличивает масштаб соединений.

Они заявляют, что эта вся балалайка может работать вообще без интернета, и что устройства в этой mesh сети находят кратчайший маршрут, т.е. если у нас есть соединение с публичным пиром (через интернет), и в это же время ноут и телефон находятся в одной wifi сети, то соединение должно идти напрямую. То есть один раз настроил и подключаешься не зависимо от расположения устройства.

Вопрос в том, почему телефон и ноут друг друга не увидели в одной wifi сети. Есть предположение, что в телефонной версии не реализована эта функция или криво работает.

indeviral
Просто выключить эту балалайку. т.к. устройства в одной локалке из и так будет видно.
А если
устройство1 в сети1
устройство2 в сети1 и сети2
устройство3 в сети2
то устройство1 должно увидеть устройство3, как я понял автоматически и если хотя бы у одного из этих устройств есть подключение к публичному пиру, то и у всех будет доступ к пирам сети через этого публичного пира.
vantu5z
А если
Назад включите. Всё равно без их серверов, доступа в сеть за nat у вас не будет.
Ошибки в тексте-неповторимый стиль автора©
indeviral
Назад включите. Всё равно без их серверов, доступа в сеть за nat у вас не будет.
Это я понимаю, что за nat доступа не будет, если без их сервера или своего с белым IP. Просто не хочется гнать весь трафик через сервер (через интернет), когда находишься в одной сети.
Подождем ответа разработчиков https://github.com/yggdrasil-network/crispa-android/issues/62.

В общем-то задачу доступа к компу за nat оно решило. А для другого оно вряд ли мне пригодится.
vantu5z
для другого
У них в инструкции написано что с параметрами по умолчанию оно работает как раз таки локально.
Вы пробовали генерировать их конфиг заново и запускать с параметрами по умолчанию?
Ошибки в тексте-неповторимый стиль автора©
indeviral
Вы пробовали генерировать их конфиг заново и запускать с параметрами по умолчанию?
Да, конечно пробовал. Сейчас еще раз специально потер все конфиги и запустил с созданными по умолчанию (с выключенным firewall).
1. Сервис запускается, генерируется ipv6 сети yggdrasil, он (peer) как и написано в документации получается изолированным. Он пингуется, но только с локальной машины.
2. Запускаю сервис на телефоне, генерируется ipv6 сети yggdrasil, отображается подключение к VPN (особенность приложения).
3. Дальше они должны автоматом найтись и установить соединение, но этого не происходит: sudo yggdrasilctl getpeers ничего не показывает и пинг не проходит).

Из доп информации, стоит NetworkManager, может в нем что-то подкрутить нужно?
vantu5z
Да, конечно пробовал. Сейчас еще раз специально потер все конфиги и запустил с созданными по умолчанию (с выключенным firewall).
1. Сервис запускается, генерируется ipv6 сети yggdrasil, он (peer) как и написано в документации получается изолированным. Он пингуется, но только с локальной машины.
2. Запускаю сервис на телефоне, генерируется ipv6 сети yggdrasil, отображается подключение к VPN (особенность приложения).
3. Дальше они должны автоматом найтись и установить соединение, но этого не происходит: sudo yggdrasilctl getpeers ничего не показывает и пинг не проходит).

Из доп информации, стоит NetworkManager, может в нем что-то подкрутить нужно?
Только что попробовал. Телефон моментально нашел комп. Приложение для Android отсюда.
Ничего не настраивал. NetworkManager не трогал.
Lupus pilum mutat, non mentem.
jim945
Только что попробовал. Телефон моментально нашел комп. Приложение для Android отсюда.
Ничего не настраивал. NetworkManager не трогал.
Спасибо за наводку!
Поставил это приложение и завелось. Спасибо!
Дело действительно было в приложении.

Теперь осталось firewall настроить.
 
Зарегистрироваться или войдите чтобы оставить сообщение.