Построение сети Meshwork¶
Настройка Meshwork сводится к тому, чтобы каждый узел знал своё имя и домен и имел хотя бы одного достижимого соседа. Дальше домен достраивает остальные связи сам. Все действия выполняются в веб-админке; изменение настроек Meshwork требует роли администратора. Точные поля и их расположение приведены в разделе Веб-интерфейс.
Требования и достижимость¶
Сетевая достижимость. Узел должен уметь установить TCP-соединение с административным веб-сервером соседа. Порт берётся из адреса соседа («хост:порт») либо из публичного порта, который сосед сообщает о себе (Идентичность узла), — это всегда тот порт, на котором настроен его веб-сервер, а при включённом у соседа HTTPS — его TLS-порт. Значения для свежей установки приведены в Начальные настройки; нужный порт соседа должен быть открыт со стороны других узлов.
HTTPS для автообнаружения через интернет. Если автообнаруженные узлы домена связываются по публичным (интернет-)адресам, им нужно установить между собой защищённое соединение (HTTPS), чтобы безопасно подтвердить подлинность друг друга по открытой сети. Поэтому включите HTTPS хотя бы на узлах, через которые идёт обнаружение. Включение HTTPS вступает в силу после перезапуска сервера. Если узлы доступны только по публичным адресам и ни один не поднят по HTTPS, прямые автообнаруженные связи не аутентифицируются: узел всё равно виден (через ретрансляцию от соседа), но его прямая связь помечается причиной (см. Карта сети и каталог ресурсов).
Локальная сеть — HTTPS не требуется. Если узлы домена общаются по частным адресам одной доверенной сети (
10.x.x.x,172.16–31.x.x,192.168.x.x, а также127.x.x.xи169.254.x.x), защищённое соединение для автообнаружения не нужно — узлы подтверждают подлинность и по обычному HTTP. Узел распознаётся как локальный по IP-адресу, поэтому в локальной сети задавайте соседей именно по IP-адресам, а не по доменным именам. HTTPS при этом можно включить — он будет использован, если доступен.Явная связь работает и по HTTP — на неё требование HTTPS не распространяется в любом случае.
Имя и секрет обязательны. Узел участвует в сети, только если у него заданы имя и секрет подписи. Без имени или без секрета узел в Meshwork не участвует.
Ограничения на имена. Имя узла — от 2 до 16 символов, имя домена — не длиннее 16 символов; разрешены латинские буквы, цифры и знаки
_,-,.. Пробелы и другие символы недопустимы (например, домен «Alex Home» задать нельзя — используйтеAlex_Home).
Идентичность узла¶
В настройках сервера задаётся, кем узел представляется в сети:
Имя узла — короткое уникальное имя, по которому узел узнают остальные. Пустое имя означает, что узел в сети не участвует.
Заметка — произвольная подпись узла (например, «Москва, стойка 3»), показывается в админке для удобства и на работу сети не влияет.
Домен — узлы с одинаковым доменом автоматически находят друг друга, делят общий каталог ресурсов и разносят оповещения. Пустое значение отключает автообнаружение (узел может работать только по явному списку соседей).
Публичные порты (HTTP и HTTPS) — порты, которые узел сообщает соседям для обратной достижимости при трансляции адресов (NAT). Если не заданы, узел сообщает собственные порты веб-сервера.
Дополнительные домены (режим super-node) — узел входит в автообнаружение каждого перечисленного домена наравне с основным. Ресурсы остаются изолированными по доменам — узел их не смешивает.
Соседи и секреты¶
Здесь задаётся, с какими соседями узел поддерживает прямую связь и как стороны проверяют друг друга. Запросы между узлами подписываются общим секретом, поэтому без совпадающих секретов связь не установится. Длина каждого секрета — от 16 до 128 символов.
Список соседей — это записи вида «адрес — имя — секрет»:
Адрес соседа — «хост:порт» его админки. Запись может быть без адреса: такой сосед никогда не вызывается этим узлом (он только сам дозванивается) и опознаётся по имени и секрету — это применяют для узла за NAT, который умеет только инициировать соединение.
Имя соседа должно в точности совпадать с именем, заданным у самого соседа.
Общий секрет связи с этим соседом должен быть одинаковым на обоих концах.
Кроме списка соседей, у узла есть собственный секрет подписи: им узел подписывает свои исходящие запросы. Сосед проверяет подпись тем секретом, который хранит для этого узла, поэтому собственный секрет узла должен совпадать с секретом, записанным о нём у каждого соседа.
Примечание
Практическое правило: для простой площадки задайте один общий секрет и используйте его и как собственный секрет подписи на каждом узле, и как секрет в каждой записи о соседе — тогда любая пара узлов аутентифицируется одинаково. Для более строгого разграничения можно держать отдельный секрет на каждую связь.
Быстрый старт¶
Вариант A. Два узла напрямую (явная связь)¶
Самый простой Meshwork — два сервера, соединённых вручную.
На каждом узле задайте уникальное короткое имя (например,
node1иnode2).На каждом узле добавьте запись о соседе: адрес его админки, его имя и общий секрет.
На каждом узле задайте собственный секрет подписи. Проще всего держать единый общий секрет на оба узла.
Откройте карту сети в админке. В течение нескольких секунд оба узла увидят друг друга в состоянии «на связи».
Домен при этом можно не задавать, но без общего домена вы получите только взаимную видимость узлов. Общий каталог ресурсов и разнос оповещений работают лишь между узлами с одинаковым доменом — если они нужны, задайте узлам общий домен (вариант B).
Вариант B. Домен с автообнаружением¶
Когда узлов больше двух, удобнее задать им общий домен и не перечислять каждую связь вручную.
На каждом узле задайте уникальное имя и общий домен площадки.
Если узлы домена связываются через интернет (по публичным адресам), включите HTTPS хотя бы на одном-двух узлах домена и перезапустите их (см. Требования и достижимость). В локальной сети этот шаг можно пропустить.
Свяжите узлы «точкой входа»: на каждом узле пропишите хотя бы одного уже работающего соседа (адрес, имя, общий секрет), как в варианте A. Остальные узлы домена узел найдёт сам.
Откройте карту сети. Через несколько секунд в ней появятся все узлы домена: явно прописанные — как постоянные, найденные автоматически — как автообнаруженные.
Узлы за NAT¶
Узел в частной сети, до которого извне не достучаться напрямую, может полноценно состоять в сети как инициатор. Он сам устанавливает соединение к доступному соседу, и через это одно соединение данные идут в обе стороны — узел и сообщает о себе, и получает сведения о других. Такому узлу достаточно прописать хотя бы одного достижимого соседа.
Сведения о NAT-узле распространяются по домену автоматически: сосед, который с ним на связи, ретранслирует его состояние остальным. У дальних соседей такой узел будет показан как полученный через ретрансляцию, но в состоянии «на связи».
Чтобы узел за NAT был достижим и для входа (например, служил точкой входа домена), настройте публикацию публичного порта (см. Идентичность узла) и пробросьте этот порт на маршрутизаторе/файрволе на административный веб-сервер узла. Со стороны соседей такой узел держат записью «имя + секрет без адреса»: сосед не будет тщетно дозваниваться до частного адреса, а опознает узел по имени и секрету, когда тот подключится сам.
Типичные проблемы¶
Узлы не видят друг друга. Проверьте: у обоих задано имя узла; у каждого есть секрет подписи и он совпадает с тем, что записан о нём у соседа; адрес соседа верен и его админ-порт открыт со стороны другого узла.
Сосед в состоянии «нет связи». Узел вышел за окно ожидания: проверьте сеть и работоспособность его веб-сервера. Для узла за NAT убедитесь, что он сам инициирует соединение к достижимому соседу либо что настроены публикация и проброс порта.
Автообнаруженный сосед помечен причиной, прямая связь не работает. В домене не удаётся подтвердить подлинность узлов. Если они связываются через интернет, включите HTTPS хотя бы на одном узле домена и перезапустите его; в локальной сети проверьте, что соседи заданы по IP-адресам, а не по доменным именам. По явной связи (постоянные узлы) связь работает и без HTTPS.
Ложный признак NAT. Если узлы заданы по доменным именам, а не по IP, признак NAT может не определяться по адресу — это не мешает работе. Для надёжной диагностики NAT используйте IP-адреса.
Смена домена «сбросила» карту. Изменение домена или набора дополнительных доменов пересобирает членство: автообнаруженные связи и общий каталог временно сбрасываются и собираются заново. Это нормально.