Сокет администратора предоставляет интерфейс для запросов информации и настройки Yggdrasil во время выполнения. По умолчанию Yggdrasil прослушивает подключения администратора на localhost: 9001 (параметр AdminListen в конфигурационном файле).
Утилита yggdrasilctl предоставляет удобный интерфейс CLI для сокета администратора Yggdrasil. Она может подключаться как к локальным, так и к удаленным экземплярам Yggdrasil и принимать те же команды, что описаны ниже. Каждое поле задается в формате field=value.
Примеры использования:
yggdrasilctl getDHT yggdrasilctl getPeers
Для получения списка поддерживаемых команд наберите:
yggdrasilctl list
Чтобы выполнить действие на удаленном узле Yggdrasil, укажите параметр -endpoint:
yggdrasilctl -endpoint=tcp://10.0.0.1:9001 getPeers yggdrasilctl -endpoint=unix:///var/run/yggdrasil.sock getDHT
Чтобы получить ответ в формате JSON вместо «дружественного» вывода, укажите параметр -json:
yggdrasilctl -json getPeers
Сокет администратора Yggdrasil для запросов и ответов использует формат JSON.
Запрос должен быть:
После получения запроса возвращается ответная строфа.
Структура типичного запроса выглядит следующим образом:
{ "request": "XXX", "arguments": { "baz": "qux" } }
Запрос:
echo "{\"request\": \"debug_remotegetself\", \"arguments\": {\"key\": \"00000275cb3ab9ee8d285ecaef5a0d82fbd6d19edc5bc33617094232fd047964\"}}" | nc -U /var/run/yggdrasil.sock
Типичный ответ имеет такую структуру:
{ "request": { "request": "XXX", "foo": "bar", "baz": "qux" }, "response": { }, "status": "success" }
Ответ:
Поле «request» содержит команду, предписывающую, какой запрос следует выполнить.
Не содержит никаких дополнительных полей запроса.
Возвращает известные узлы в DHT.
Не содержит никаких дополнительных полей запроса.
Возвращает одну или несколько записей, содержащих информацию об активных одноранговых сеансах. Первая запись обычно относится к текущему узлу.
Для каждого IPv6-адреса:
Ожидает:
tcp://a.b.c.d:e
Добавляет новый узел.
Возвращает:
Ожидает:
Удаляет существующий узел.
Возвращает:
Не ожидает никаких дополнительных полей запроса.
Возвращает одну запись, содержащую информацию о текущем узле Yggdrasil.
Для текущего адреса IPv6:
Не ожидает никаких дополнительных полей запроса.
Возвращает ноль или более записей, содержащих информацию об открытых сеансах между текущим узлом Yggdrasil и другими узлами. Открытые сеансы говорят о том, что недавно был обмен траффиком с удаленным узлом.
Для каждого IPv6-адреса:
Не ожидает никаких дополнительных полей запроса.
Возвращает одну запись, содержащую информацию об адаптере TUN/TAP текущего узла.
Для каждого адаптера:
Не ожидает никаких дополнительных полей запроса.
Возвращает ноль или более строк, содержащих включенные многоадресные интерфейсы.
Если возвращаются ноль строк, то подразумевается, что многоадресный пиринг не разрешен ни на одном интерфейсе.
Ожидает:
Просит удаленный узел ответить с его nodeinfo.
Возвращает секцию nodeinfo. Данные могут быть в любом формате, могут содержать любые ключи.
Admin API (EN): https://yggdrasil-network.github.io/admin.html
Обсуждение
Что-то на манер traceroute для IPv4?
traceroute IPv6 показывает hops, но не показывает их IP:
olej@R420:~$ sudo traceroute -6 -T 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771 -i tun0
traceroute to 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771 (221:58c9:9a6:99be:f3d:c1ac:2b5b:9771), 30 hops max, 80 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771 (221:58c9:9a6:99be:f3d:c1ac:2b5b:9771) 498.504 ms 118.028 ms 118.722 ms
https://github.com/yggdrasil-network/yggdrasil-go/issues/743