Andrey Stolyarov

Андрей Викторович Столяров: сайт автора

Опубликован очередной тарбол исходников FEDAnet, с номером версии 0.0.50. Я научил, наконец, эти fedaservы обмениваться сертификатами нод и проверять хеши, причём так, чтобы непосредственно взятием хеша могла заниматься машина, сидящая хоть за десятью NATами. Это может быть, например, домашняя машина, на которой нодмастер гоняет браузер — ну, он же где-то браузер точно гоняет :-) В принципе даже не обязательно иметь такую машину в каждой ноде, я вот, например, соответствующий инстанс запустил (через fedaproxy), у него теперь каждый может спросить, не знает ли он такую-то ноду, и каждый может ему представить свою ноду, а он её запомнит. Можно это рассматривать как автоматизированную поддержку коллекции сертификатов нод. Если свой такой не поднимать, единственный недостаток тут — что представлять свою ноду другим придётся вручную; это тоже возможно, в управляющей консоли (которая fedactl) появилась соответствующая команда. Если кратко, то реализованы три новых типа peer'ов:

  • trustncc — такой peer, к которому можно сходить с вопросом "не знаешь ли ты такую-то ноду", и если он знает, то пришлёт её ключевую инфу, подписанную его собственным ключом; идея в том, что мы ему доверяем настолько, что готовы принять от него информацию о ноде, не проверяя её хеш;
  • introducer — та самая "мощная машина", к которой пиры одной с ней ноды (это важно) могут обратиться с двумя интересными просьбами: первая — "сходи вон туда, представь там нашу ноду", а вторая — "мне тут прислали ключевую информацию незнакомой ноды, проверь её для меня plz" (в~этом случае, если проверка пройдена, такой peer сохраняет у себя сертификат только что проверенной ноды, так что если кто-то к нему придёт как к trustncc, он инфу отдаст);
  • certhub — это такая машина, про которую нам известно, что она принимает (и проверяет) информацию о новых нодах; технически это значит, что, когда к нам кто-то придёт незнакомый, мы ему можем посоветовать сходить туда представить свою ноду, подразумевая, что когда он там представится, мы об этом узнаем, например, сходив туда же уже как к trustncc, и он тогда сможет с нами связаться.

В конфигурационном файле появилось три новых опции: allow_nodehash yes разрешает (вообще, так сказать, глобально) данному инстансу считать хеши, intro_issue yes разрешает инициировать процесс представления ноды в роли клиента (что обычно обходится в четыре вычисления хешей от данных, предложенных сервером — это такая защита от DoSа), и intro_accept yes разрешает инстансу принимать представления в роли сервера (для этого нужна заранее сгенерённая таблица задач и ответов a.k.a. challenge-response table, та самая, которую node-ng генерирует по флажку -f и с которой потом можно работать с помощью программы feda-ct).

Технические подробности по ссылке выше, а также в файлах doc/serv.conf и doc/peer_types.txt. Если будут вопросы — задавайте (лучше там, но можно и здесь), постараюсь ответить.

К сожалению, конкретные соединения всё ещё приходится прописывать вручную, но теперь хотя бы новому участнику сети можно связаться с существующими нодами без ручного вмешательства их нодмастеров; ручной работы потребует только добавление новой ноды в списки. Чтобы сеть начала функционировать (в том числе расширяться) вообще без ручных действий, нужно реализовать рассылку широковещательных сообщений, через которую будут работать в том числе анонсы новых нод и изменения их местонахождения. Это как раз следующий этап; если/когда я с ними справлюсь, сеть достигнет функционирующего состояния (видимо, это будет релиз 0.1.00). Только тут есть такой момент, что, чтобы широковещательная рассылка работала, нужно то, на чём она будет работать — то, что обычно зовут бекбоном сети. Строительством этого бекбона можно уже начинать заниматься. Нам нужно, как я это себе представляю, 10-12 работающих нод, живущих на постоянных адресах. Сейчас ноды фактически только так и могут жить, но когда будет рассылка анонсов, нода сможет существовать за NAT'ом, причём если это однопользовательская нода, то даже restricted cone сойдёт. Но бекбон, через который можно будет попасть в сеть тем, кого там раньше не было, в любом случае требует нод, которые сидят на месте и не перемещаются то и дело. Вот его давайте уже попробуем построить.

Спасибо всем, кто следит за проектом!

pencil

пояснение


Вы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям.

Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда.

Андрей Михайлович Столяров в библиотеке Мошкова

Авторские права © Андрей Викт. Столяров, 2009 — 2026