Objectif
WireGuard crée un transport réseau chiffré entre leukOS et les microcontrôleurs compatibles IP.
Cela protège:
- la confidentialité du trafic,
- l'intégrité du transport,
- l'authentification des pairs réseau par clés WireGuard.
Positionnement
WireGuard sécurise la couche réseau, mais ne remplace pas complètement la sécurité applicative.
Recommandation leukOS:
WireGuardpour le tunnel chiffré,HMAC + nonce + timestamppour l'authentification des commandes applicatives.
Topologie type
- Le hub domotique leukOS expose une interface WireGuard (
wg0). - Chaque MCU Ethernet rejoint le VPN avec une clé privée dédiée.
- Les commandes passent par les adresses VPN (pas en clair sur le LAN).
Séquence de communication sécurisée
Séquence d'initialisation d'un peer MCU
Bonnes pratiques d'exploitation
- Une paire de clés WireGuard par MCU.
- ACL
AllowedIPsminimales (least privilege). - Rotation régulière des clés WireGuard.
- Supervision des peers (dernier handshake, perte de keepalive).
- Segmentation réseau: le trafic domotique passe prioritairement via
wg0.
Limites à garder en tête
- Si un peer VPN est compromis, il peut émettre du trafic dans son périmètre autorisé.
- Il faut donc conserver un contrôle applicatif (HMAC/ACL métier) côté leukOS.
Liaison MCU WT32-ETH01
La liaison active entre le node et le contrôleur de bureau utilise le sous-réseau
10.77.0.0/24 :
- node Raspberry :
10.77.0.1, écoute UDP51820; - WT32-ETH01 :
10.77.0.2; - le plugin C++ cible
tcp://10.77.0.2:23et attache sa socket àwg0avecSO_BINDTODEVICE; - seule l'adresse tunnel du node peut ouvrir le serveur de commandes du MCU ;
- les anciens services TCP
3232(OTA) et3233(configuration directe) ne sont pas démarrés ; - les configurations JSON transitent par
leukos-node, dans une trame HMAC signée, sur le même canal WireGuard.
Le script d'initialisation prend en charge les images embarquées qui disposent
de wg mais pas de wg-quick. Il refuse un fichier wg0.conf dont les droits
ne sont pas 0600 ou 0400.
Liaison dédiée Saturn ↔ leukOS
Saturn n'utilise pas le tunnel des MCU. Une interface indépendante
wg-saturn relie uniquement le nœud (10.78.0.1/30) à l'hôte Saturn
(10.78.0.2/30) sur UDP 51821. Le daemon gRPC du nœud écoute exclusivement
sur 10.78.0.1:9080 et le port gRPC Saturn est publié exclusivement sur
10.78.0.2:9130.
Chaque charge utile gRPC est en plus encapsulée avec le protocole
AUTH1/RESP1 décrit dans la page HMAC. Les réponses reprennent le nonce de
la requête et chaque récepteur maintient un cache anti-rejeu. La perte du
tunnel échoue donc fermée, sans repli HTTP ou LAN, et reste indépendante de
wg0 et de ses pairs ESP32.