Construction d’un réseau Meshwork¶
La configuration de Meshwork se résume à faire en sorte que chaque nœud connaisse son propre nom et son domaine et dispose d’au moins un voisin joignable. Ensuite, le domaine construit lui-même les liaisons restantes. Toutes les actions sont effectuées dans l’interface d’administration web ; la modification des paramètres Meshwork nécessite le rôle d’administrateur. Les champs exacts et leur emplacement sont décrits dans la section Interface web.
Prérequis et joignabilité¶
Joignabilité réseau. Un nœud doit pouvoir établir une connexion TCP vers le serveur web d’administration d’un voisin. Le port est repris de l’adresse du voisin (« hôte:port ») ou du port public que le voisin annonce à son sujet (Paramètres du nœud). Meshwork n’a pas de port propre : c’est le port du serveur web du voisin ou, lorsque HTTPS est activé chez le voisin, son port TLS. Si le voisin derrière un NAT a défini un port public, c’est le port transféré vers son serveur web. Les valeurs pour une installation neuve sont indiquées dans Réglages initiaux ; le port requis d’un voisin doit être ouvert du côté des autres nœuds.
HTTPS pour la découverte automatique via internet. Si les nœuds du domaine découverts automatiquement communiquent via des adresses publiques (internet), ils doivent établir entre eux une connexion sécurisée (HTTPS) afin de confirmer en toute sécurité leur authenticité mutuelle sur le réseau ouvert. Activez donc HTTPS au moins sur les nœuds par lesquels s’effectue la découverte. L’activation de HTTPS prend effet après un redémarrage du serveur. Si les nœuds ne sont accessibles que par des adresses publiques et qu’aucun n’utilise HTTPS, les liaisons directes découvertes automatiquement ne sont pas authentifiées : le nœud reste visible (via un relais depuis un voisin), mais sa liaison directe est signalée avec un motif (voir Carte du réseau et catalogue des ressources).
Réseau local — HTTPS non requis. Si les nœuds du domaine communiquent via des adresses privées d’un même réseau de confiance (
10.x.x.x,172.16–31.x.x,192.168.x.x, ainsi que127.x.x.xet169.254.x.x), une connexion sécurisée pour la découverte automatique n’est pas nécessaire — les nœuds confirment l’authenticité également via un simple HTTP. Un nœud est reconnu comme local d’après son adresse IP, définissez donc les voisins sur un réseau local précisément par adresses IP et non par noms de domaine. HTTPS peut néanmoins être activé — il sera utilisé s’il est disponible. Exception : un nœud auquel est attribuée une interface d’annonce à adresse privée. Il ne s’annonce que pour un simple HTTP. Si un nœud dispose de plusieurs réseaux (par exemple, un réseau interne et un réseau public par lequel passe la route par défaut), sans réglage particulier il communique son adresse publique aux voisins. Attribuez une interface d’annonce à un tel nœud (Nœud à plusieurs réseaux).Une liaison explicite fonctionne aussi via HTTP — l’exigence HTTPS ne s’y applique en aucun cas.
Le nom et le secret sont obligatoires. Un nœud ne participe au réseau que si un nom et un secret de signature lui sont définis.
Horloges synchronisées. Depuis la version 2.0.2.416, un nœud refuse un voisin dont l’horloge s’écarte de la sienne de plus de 5 minutes, et une telle liaison est affichée comme indisponible. Maintenez la synchronisation de l’heure (NTP) sur tous les nœuds. Quand l’écart dépasse la moitié de la tolérance, les deux nœuds écrivent dans le journal un avertissement avec le nom du voisin et la valeur de l’écart. La tolérance est définie par le paramètre
cluster-hello-window-secde la sectionclusterdu fichier de configuration (Le fichier de configuration pss.json) : 300 secondes par défaut, de 0 à 86400 ; 0 désactive la vérification des horloges si elles ne peuvent pas être synchronisées.Restrictions sur les noms. Un nom de nœud comporte de 2 à 16 caractères, un nom de domaine ne dépasse pas 16 caractères ; les lettres latines, les chiffres et les caractères
_,-,.sont autorisés. Les espaces et autres caractères ne sont pas admis (par exemple, le domaine « Alex Home » ne peut pas être défini — utilisezAlex_Home).
Paramètres du nœud¶
Dans les paramètres du serveur, on définit comment le nœud se présente sur le réseau :
Nom du nœud — un nom court et unique par lequel les autres reconnaissent le nœud. Un nom vide signifie que le nœud ne participe pas au réseau.
Note — une étiquette libre du nœud (par exemple « Moscou, baie 3 »), affichée dans l’interface d’administration et sans effet sur le fonctionnement du réseau.
Domaine — les nœuds ayant le même domaine se trouvent automatiquement, partagent un catalogue des ressources commun et répliquent les alertes. Une valeur vide désactive la découverte automatique (le nœud ne peut fonctionner que via la liste explicite de voisins).
Ports publics (HTTP et HTTPS) — les ports que le nœud communique aux voisins pour la joignabilité en retour lors de la traduction d’adresses (NAT). S’ils ne sont pas définis, le nœud communique ses propres ports de serveur web.
Interface d’annonce — l’interface réseau dont le nœud communique l’adresse aux voisins à la place du nom d’hôte du serveur web ou de son adresse publique. Elle est nécessaire à un nœud disposant de plusieurs réseaux (Nœud à plusieurs réseaux). Une adresse privée n’est annoncée que pour un simple HTTP, les ports publics ne s’y appliquent pas. La valeur « Par défaut (nom d’hôte HTTP ou adresse publique) » signifie que le nœud communique l’adresse par défaut.
Domaines supplémentaires (mode super-node) — le nœud est également membre des domaines listés. Les ressources restent isolées par domaine — le nœud ne les mélange pas. Dans son domaine principal, le nœud est un participant à part entière de la découverte automatique. Dans un domaine supplémentaire, il n’est lié qu’aux voisins de sa liste (Voisins et secrets) : il reçoit d’eux le catalogue des ressources et les alertes de ce domaine, voit les autres nœuds du domaine à travers eux et ne s’adresse pas lui-même à ces nœuds. Par conséquent, pour chaque domaine supplémentaire, indiquez sur le super-node au moins un voisin de ce domaine.
Voisins et secrets¶
On définit ici avec quels voisins le nœud maintient une liaison directe et comment les parties se vérifient mutuellement. Les requêtes entre nœuds sont signées avec un secret partagé, de sorte qu’aucune liaison ne s’établit sans secrets concordants. La longueur de chaque secret est de 16 à 128 caractères.
La liste des voisins est constituée d’entrées de la forme « adresse — nom — secret » :
Adresse d’un voisin — le « hôte:port » de son interface d’administration. Une entrée peut être sans adresse : un tel voisin n’est jamais appelé par ce nœud (il ne fait que se connecter lui-même) et est identifié par son nom et son secret. C’est ainsi qu’on déclare un nœud derrière un NAT qui ne peut qu’initier une connexion.
Le nom d’un voisin doit correspondre exactement au nom défini sur le voisin lui-même.
Le secret partagé de la liaison avec ce voisin doit être identique aux deux extrémités.
Interface d’annonce (facultatif) — l’interface dont le nœud communique l’adresse à ce voisin précis à la place de son interface d’annonce générale (Nœud à plusieurs réseaux). La valeur « Comme le nœud » signifie que l’interface générale s’applique.
L’interface d’annonce d’un voisin est liée à son nom, et non à la ligne de la liste :
tant que la ligne n’a pas de nom de voisin valide, le choix de l’interface est indisponible — il n’y a rien sous quoi enregistrer le paramètre ;
lorsque le voisin est renommé, le paramètre le suit ;
lorsque le voisin est supprimé de la liste, le paramètre est conservé et reste en vigueur si ce nœud reste dans le réseau via la découverte automatique.
Ces paramètres pour des nœuds absents de la liste des voisins sont affichés dans le bloc « Interface d’annonce pour les autres nœuds » sous la liste : on peut les y modifier ou les supprimer. Il est impossible d’ajouter un nouveau nœud à ce bloc — le paramètre se définit dans la ligne du voisin.
L’entrée d’un voisin inactif ne se supprime pas seulement ici : l’action « Oublier le nœud » des écrans « Nœuds » et « Topologie » (Nœuds) le raye de cette liste. Il s’agit de la même modification de configuration, effectuée depuis un écran de supervision, et elle est irréversible.
Outre la liste des voisins, un nœud possède son propre secret de signature : c’est avec lui que le nœud signe ses requêtes sortantes. Un voisin vérifie la signature avec le secret qu’il conserve pour ce nœud, de sorte que le propre secret du nœud doit correspondre au secret enregistré à son sujet chez chaque voisin.
Les réponses sont signées de la même manière : un nœud n’accepte la réponse d’un voisin que si elle est signée avec la clé qui a signé la requête — le secret de liaison ou la clé du domaine. Une réponse dont la signature est incorrecte ou qui vient d’un autre nœud n’établit pas la liaison. La clé du domaine est transmise chiffrée entre les nœuds. Les nœuds des versions antérieures à 2.0.2.415 ne signent pas les réponses ; la conduite à tenir dans un domaine mixte est décrite dans Mise à jour des nœuds du domaine. Depuis la version 2.0.2.416, chaque message d’un nœud porte son heure d’envoi et le nom de son destinataire : un voisin refuse un message renvoyé ou adressé à un autre nœud, ainsi qu’un message dont l’heure sort de la tolérance (voir « Horloges synchronisées » dans Prérequis et joignabilité).
Note
Règle pratique : pour un site simple, définissez un unique secret partagé et utilisez-le à la fois comme propre secret de signature sur chaque nœud et comme secret dans chaque entrée de voisin. Toute paire de nœuds s’authentifie alors de la même manière. Pour une séparation plus stricte, vous pouvez conserver un secret distinct par liaison.
Démarrage rapide¶
Variante A. Deux nœuds directement (liaison explicite)¶
Le Meshwork le plus simple, ce sont deux serveurs connectés manuellement.
Sur chaque nœud, définissez un nom court unique (par exemple,
node1etnode2).Sur chaque nœud, ajoutez une entrée de voisin : l’adresse de son interface d’administration, son nom et le secret partagé.
Sur chaque nœud, définissez le propre secret de signature. Le plus simple est de conserver un unique secret partagé pour les deux nœuds.
Ouvrez l’écran « Nœuds » de la zone Meshwork dans l’interface d’administration. En quelques secondes, les deux nœuds se voient mutuellement avec le statut « Actif ».
Un domaine n’a pas besoin d’être défini pour cela, mais sans domaine commun vous n’obtiendrez que la visibilité mutuelle des nœuds. Le catalogue des ressources commun et la réplication des alertes ne fonctionnent qu’entre nœuds du même domaine. Si vous en avez besoin, définissez un domaine commun pour les nœuds (variante B).
Variante B. Un domaine avec découverte automatique¶
Lorsqu’il y a plus de deux nœuds, il est plus commode de leur attribuer un domaine commun que de lister chaque liaison manuellement.
Sur chaque nœud, définissez un nom unique et le domaine commun du site.
Si les nœuds du domaine communiquent via internet (par adresses publiques), activez HTTPS sur au moins un ou deux nœuds du domaine et redémarrez-les (voir Prérequis et joignabilité). Sur un réseau local, cette étape peut être ignorée ; aux nœuds dont le nom d’hôte du serveur web n’est pas défini, attribuez comme interface d’annonce leur interface interne (Nœud à plusieurs réseaux).
Reliez les nœuds via un « point d’entrée » : sur chaque nœud, indiquez au moins un voisin déjà opérationnel (adresse, nom, secret partagé), comme dans la variante A. Le nœud trouvera de lui-même les autres nœuds du domaine.
Ouvrez la carte du réseau. En quelques secondes, tous les nœuds du domaine y apparaissent : ceux indiqués explicitement comme permanents, ceux trouvés automatiquement comme découverts automatiquement.
Nœuds derrière un NAT¶
Un nœud sur un réseau privé, injoignable directement depuis l’extérieur, peut participer au réseau en tant qu”initiateur. Il établit lui-même une connexion avec un voisin joignable, et via cette unique connexion les données circulent dans les deux sens — le nœud se signale et reçoit des informations sur les autres. Pour un tel nœud, il suffit d’indiquer au moins un voisin joignable.
Les informations sur un nœud NAT se propagent automatiquement dans le domaine : un voisin qui est en contact avec lui relaie son état aux autres. Chez les voisins distants, un tel nœud est affiché comme reçu via relais, mais à l’état « online ».
Pour qu’un nœud derrière un NAT soit joignable aussi pour les connexions entrantes (par exemple, pour servir de point d’entrée du domaine), configurez la publication du port public (voir Paramètres du nœud) et transférez ce port sur le routeur/pare-feu vers le serveur web d’administration du nœud. Du côté des voisins, un tel nœud est conservé sous une entrée « nom + secret sans adresse » : le voisin n’essaiera pas en vain de joindre l’adresse privée, mais identifiera le nœud par son nom et son secret lorsqu’il se connectera de lui-même.
Nœud à plusieurs réseaux¶
Par défaut, un nœud communique à ses voisins l’adresse à laquelle il faut s’adresser à lui : le nom d’hôte défini pour le serveur web ou, s’il n’est pas défini, l’adresse de sa première interface publique. Pour un nœud doté d’un seul réseau, cela suffit. Mais si un nœud dispose de plusieurs réseaux, le choix par défaut peut s’avérer erroné. Cas typique : tous les nœuds du domaine se trouvent sur le réseau interne, mais l’un d’eux possède en plus une interface publique par laquelle passe la route par défaut. Un tel nœud communique son adresse publique aux voisins, et ceux-ci commencent à s’adresser à lui via le réseau public et en HTTPS, alors que tous les nœuds se trouvent sur le même réseau interne.
Pour que le nœud annonce l’adresse voulue, attribuez-lui une interface d’annonce (Paramètres du nœud). C’est l’interface réseau dont le nœud communique l’adresse aux voisins à la place du nom d’hôte et de l’adresse publique :
si l’adresse de l’interface est privée (
10.x.x.x,172.16–31.x.x,192.168.x.x,127.x.x.x,169.254.x.x), le nœud ne l’annonce que pour un simple HTTP — sur le port du serveur web, sans HTTPS et sans ports publics. Les voisins du réseau interne s’adressent à lui en HTTP, HTTPS n’est pas requis pour l’échange ;si l’adresse est publique, elle est annoncée de la même manière que l’adresse publique du nœud : avec HTTPS lorsque HTTPS est activé et en tenant compte des ports publics.
L’interface d’annonce détermine uniquement l’adresse que le nœud communique à son sujet. L’interface par laquelle sortent les connexions propres du nœud vers les voisins reste déterminée par la table de routage du serveur.
Procédure de configuration d’un domaine interne dans lequel un nœud dispose aussi d’un réseau public :
Sur le nœud à plusieurs réseaux, définissez comme interface d’annonce l’interface du réseau interne.
Sur les nœuds du domaine dont le nom d’hôte du serveur web n’est pas défini, définissez également comme interface d’annonce leur interface interne. Sans elle, un nœud qui ne possède que des adresses privées ne communique rien à son sujet, et la découverte automatique ne le trouve pas : il n’est lié qu’aux nœuds qui l’ont indiqué explicitement.
Déclarez les nœuds comme voisins les uns des autres par leurs adresses IP internes.
Vérifiez la carte du réseau (Carte du réseau et catalogue des ressources) : les adresses des nœuds sont internes, l’indication NAT n’est pas positionnée sur le nœud à deux réseaux, et les liaisons ne portent aucun motif d’échec d’authentification.
Si un nœud doit communiquer des adresses différentes à des voisins différents (par exemple l’adresse interne aux voisins du réseau interne et l’adresse publique à un voisin sur internet), définissez l’interface d’annonce pour des voisins individuels (Voisins et secrets) : elle s’applique à la place de l’interface d’annonce générale du nœud. Attention : si un même nœud s’annonce différemment dans des réseaux différents, un troisième nœud qui reçoit des informations à son sujet depuis les deux réseaux peut voir son adresse alterner entre l’une et l’autre. C’est pourquoi des adresses différentes sont attribuées à un nœud situé à la frontière entre réseaux, dont les voisins des différents réseaux n’échangent pas d’informations les uns sur les autres.
Le résultat est visible sur l’écran « Nœuds » (Nœuds) dans la ligne du nœud lui-même : les champs « HTTP public » et « HTTPS public » montrent ce que le nœud communique à ses voisins. Avec une interface d’annonce privée, le champ « HTTPS public » est absent, et « HTTP public » contient l’adresse interne et le port. Une interface définie pour un voisin individuel n’apparaît pas dans la ligne du nœud lui-même — elle est visible dans la ligne de ce nœud sur le voisin auquel elle est destinée.
Dans l’interface d’administration, l’interface d’annonce se choisit dans la liste des interfaces réseau du serveur — nom et adresse IPv4 ; dans le fichier de configuration, elle peut aussi être indiquée par une adresse IP. Une interface qui n’existe pas sur le serveur est refusée à l’enregistrement avec un message du type cluster-bind-if: 'eth9' is neither a network interface of this host nor an IPv4 address. Si l’interface disparaît plus tard (par exemple, lorsqu’un VPN se coupe), le paramètre est conservé : le nœud continue de fonctionner et communique l’adresse par défaut jusqu’au retour de l’interface, et dans la liste de choix l’interface enregistrée est affichée par son seul nom, sans adresse.
Mise à jour des nœuds du domaine¶
Depuis la version 2.0.2.415, les nœuds vérifient la signature des réponses des voisins et transmettent la clé du domaine chiffrée (Voisins et secrets). Les nœuds des versions antérieures ne signent pas les réponses, l’ordre de mise à jour a donc de l’importance :
si possible, mettez à jour tous les nœuds du domaine en une seule fois ;
si ce n’est pas possible, mettez d’abord à jour les nœuds auxquels les autres se connectent (nœuds centraux et nœuds à adresse publique), puis les nœuds derrière un NAT.
Tant que des nœuds de versions différentes fonctionnent dans le domaine :
un ancien et un nouveau nœud continuent de se voir mutuellement en fonctionnement ;
les données de l’ancien nœud (sessions de connexion automatique, catalogue des ressources partagé, alertes) parviennent au nouveau nœud lorsque l’ancien s’y connecte lui-même — généralement en moins de 30 secondes ;
un ancien nœud qui ne peut pas se connecter au nouveau (par exemple à cause d’un NAT) n’apparaît, jusqu’à sa mise à jour, que comme en fonctionnement, sans ses données ;
la protection complète contre la réémission d’échanges enregistrés s’applique lorsque tous les nœuds du domaine fonctionnent en version 2.0.2.415 ou ultérieure.
Le retour à la version précédente est sans risque.
Depuis la version 2.0.2.416, les nœuds vérifient en plus l’heure d’envoi des messages ; par conséquent :
avant la mise à jour, vérifiez que la synchronisation de l’heure (NTP) fonctionne sur tous les nœuds du domaine (Prérequis et joignabilité) ;
mettez à jour le domaine entier : tant qu’il contient des nœuds de versions antérieures, leurs messages peuvent encore être rejoués ;
un nœud ramené de 2.0.2.416 à une version antérieure est refusé par ses voisins en 2.0.2.416 jusqu’à leur redémarrage. Revenez en arrière sur le domaine entier, ou redémarrez les nœuds en 2.0.2.416 après le retour en arrière.
Problèmes courants¶
Les nœuds ne se voient pas. Vérifiez : les deux ont un nom de nœud défini ; chacun a un secret de signature et il correspond à celui enregistré à son sujet chez le voisin ; l’adresse du voisin est correcte et son port d’administration est ouvert du côté de l’autre nœud.
Un voisin est à l’état « Inactif ». Le nœud a dépassé la fenêtre d’attente : vérifiez le réseau et le bon fonctionnement de son serveur web. Pour un nœud derrière un NAT, assurez-vous qu’il initie lui-même la connexion vers un voisin joignable ou que la publication et le transfert de port sont configurés. Si le journal contient un avertissement d’écart d’horloge avec ce voisin, synchronisez l’heure sur les deux nœuds (NTP).
Un voisin est devenu indisponible après le retour en arrière d’un nœud. Les voisins en 2.0.2.416 refusent un nœud ramené à une version antérieure jusqu’à leur redémarrage : redémarrez-les ou revenez en arrière sur le domaine entier.
Un voisin découvert automatiquement est signalé avec un motif, la liaison directe ne fonctionne pas. Le domaine ne parvient pas à confirmer l’authenticité des nœuds. S’ils communiquent via internet, activez HTTPS sur au moins un nœud du domaine et redémarrez-le ; sur un réseau local, vérifiez que les voisins sont indiqués par adresses IP et non par noms de domaine, et que le nœud à plusieurs réseaux dispose d’une interface d’annonce. Une liaison explicite (nœuds permanents) fonctionne aussi sans HTTPS.
Les voisins s’adressent au nœud par son adresse publique, alors que le domaine se trouve sur un réseau interne. Le nœud dispose de plusieurs réseaux et communique par défaut son adresse publique aux voisins. Attribuez-lui comme interface d’annonce l’interface interne (Nœud à plusieurs réseaux).
Indication NAT erronée. Si les nœuds sont indiqués par noms de domaine et non par IP, l’indication NAT peut ne pas être déterminée d’après l’adresse — cela ne gêne pas le fonctionnement. Pour le diagnostic NAT, utilisez des adresses IP.
Le changement de domaine a « réinitialisé » la carte. La modification du domaine ou de l’ensemble des domaines supplémentaires reconstruit l’appartenance : les liaisons découvertes automatiquement et le catalogue commun sont temporairement réinitialisés et reconstruits. C’est normal.