http://www.nncpgo.org/Yggdrasil.html
https://yggdrasil-network.github.io/
https://github.com/neilalexander/yggmail
NNCP теперь может выступать в качестве клиента сети Yggdrasil! Не
используя никакого стороннего софта, не настраивая сторонних демонов.
Идея, как и зачатки кода, полностью взяты из yggmail.
nncp-daemon может работать в качестве listener ноды принимающей
соединения от других участников, осуществляющей всю маршрутизацию и
вообще работу. nncp-call* могут подключаться к любой Yggdrasil ноде и
связываться с NNCP адресами. Из Yggdrasil используется только
возможность отправки/приёма пакетов: никаких сетевых интерфейсов или
вообще знаний об адресах иметь не нужно. Публичный ключ хоста,
магическим образом становится IPv6 адресом для пакетов μTP транспортного
протокола, достигая целевой ноды без вопросов туннелирования и прочего.
Что приятно тем, что никакой возни с TUN интерфейсами не нужно вообще,
где есть проблемы с не самыми свежими версиями ОС
(
883b33f7085a9dfd04fca75b056d0e0b4c3fdf73).
Почему μTP? Я взял из yggmail-а. Видимо, проще на Go нет ничего другого
для реализации транспортного протокола поверх пакетного сокета.
Реализации TCP на pure Go я не видел.
$ nncp-cfgnew -yggdrasl
Public:
c7274667c6...
Private:
a87d6f98d...
$ cat >> $NNCPCFG <<EOF
yggdrasil-aliases: {
prv:
a87d6f98d...
dst:
3915039ac...
entrypoint: "tcp://example.org:5400?key=
2cd18819...
bind: tcp://[::]:5400
EOF
$ nncp-call dst-node-name "yggdrasil:dst;prv;entrypoint"
$ nncp-daemon -yggdrasil "prv;bind;;"