Nouveau : le pare-feu IA surveille chaque module et explique chaque incident en termes simples. Découvrez comment ça marche

Un appareil ne se connecte pas

Pourquoi un appareil ne peut pas se connecter ou se déconnecte sans cesse : hôte et TLS, identifiants, règles du profil, réseaux autorisés, codes CONNACK, adresses bloquées.

Cette page vous aide lorsqu’un appareil ne peut pas se connecter à Hermetry, est refusé à la connexion ou perd sa connexion en permanence. Elle couvre MQTT et l’API HTTP des appareils. Pour les appareils LoRaWAN, voir Résolution des problèmes de jointure ; pour les appareils en interrogation, voir Intervalles d’interrogation, temporisation et quota.

Où chercher en premier

EmplacementAffiche
L’onglet Log de l’appareilChaque refus de connexion avec sa raison, et chaque déconnexion avec sa raison. La raison d’un refus n’est jamais envoyée à l’appareil : elle n’est disponible qu’ici.
La carte Connection details de l’appareilLe nom d’hôte du broker et les ports que votre appareil doit utiliser
Le journal propre au clientLe code CONNACK ou le statut HTTP reçu, ou l’erreur TLS

Étape 1 : l’appareil peut-il joindre le broker ?

Symptôme sur l’appareilCauseCorrection
La résolution DNS échoue, ou la connexion expireMauvais hôte, ou un pare-feu bloque le port sortantUtilisez l’hôte indiqué dans la carte Connection details, pour la région de votre organisation. Autorisez le TCP sortant 8883 (et 443 pour HTTPS).
La négociation TLS échoueL’appareil se connecte par adresse IP (SNI est requis), n’a pas de bundle d’autorités de certification, ou son horloge est très décalée, de sorte que le certificat semble invalideConnectez-vous par nom d’hôte ; utilisez le magasin d’autorités de certification du système ; réglez l’horloge (NTP)
TLS échoue sur un appareil très petitIl ne prend en charge que d’anciennes suites de chiffrement ou TLS 1.0/1.1TLS 1.2 est le minimum, avec des suites ECDHE et GCM ou ChaCha20. Mettez à jour la bibliothèque TLS.
Le port 1883 est refuséLe profil est TLS only (port 8883), la valeur par défautUtilisez 8883 ou, uniquement sur un réseau privé, autorisez le MQTT non chiffré sur le profil
Un certificat client est rejeté pendant la négociationLe certificat ne provient pas de l’autorité de certification des appareils Hermetry, ou il a été révoquéUn certificat non approuvé met fin à la négociation ; il n’existe pas de repli vers un mot de passe. Voir Certificats des appareils.

Voir Sécurité du transport des appareils.

Étape 2 : la connexion est-elle acceptée ?

MQTT répond au CONNECT par un code CONNACK :

CONNACKSignificationCauses habituelles
1Version de protocole non prise en chargeLe client envoie MQTT 5. Hermetry parle MQTT 3.1.1.
2Identifiant client rejetéL’identifiant client est vide, dépasse 64 caractères ou contient des caractères hors de A–Z a–z 0–9 . _ : -
3Serveur indisponibleLe service démarre ou est occupé, ou votre adresse est brièvement bloquée après des connexions échouées répétées. Espacez les tentatives et réessayez avec une gigue aléatoire.
4Nom d’utilisateur ou mot de passe incorrectLe jeton ou le mot de passe est erroné, a été renouvelé ou révoqué ; un nom d’utilisateur sans mot de passe est lu comme un jeton d’accès
5Non autoriséVoir le tableau ci-dessous. La raison exacte figure dans l’onglet Log de l’appareil.
Raison du CONNACK 5Correction
L’appareil est désactivéActivez-le depuis la page de l’appareil
Le certificat est révoqué ou expiréLaissez l’appareil le renouveler, ou récupérez-le. Voir Certificats des appareils.
Le profil n’autorise pas ce type de connexionAllowed authentication dans l’onglet Transport & auth du profil
L’adresse de l’appareil est en dehors des Allowed networks du profilAjoutez le réseau, ou vérifiez quelle adresse publique votre site utilise réellement (NAT, opérateur mobile)
MQTT non chiffré sur un profil TLS uniquementUtilisez le port 8883
L’organisation est suspendueDemandez à un propriétaire de l’organisation. Voir Organisations et locataires.
La limite d’appareils ou d’appareils connectés du forfait est atteinteVoir Forfaits et l’extension IoT

En HTTP, les mêmes contrôles répondent 401 (jeton absent ou inconnu), 403 (désactivé, suspendu, en dehors des réseaux autorisés, ou une interrogation de commandes en HTTP non chiffré que le profil n’autorise pas : tls_required) ou 404 (un jeton dans l’URL sur un profil sans Token in the URL). Voir API HTTP des appareils.

Rappels de connexion

IdentifiantClient IDNom d’utilisateurMot de passe
Jeton d’accèstout ID validele jetonvide
MQTT basiqueau choix, ou celui épingléle nom d’utilisateurle mot de passe
Certificat X.509le numéro de série de l’appareil, égal au CN du certificatignorévide

Le secret d’un identifiant n’est affiché qu’une seule fois, à sa création ou à son renouvellement. S’il a été perdu, renouvelez-le et mettez à jour l’appareil. Voir Identifiants des appareils.

Étape 3 : l’appareil se connecte, puis se déconnecte

L’onglet Log indique la raison de la déconnexion :

RaisonSignificationCorrection
keepalive_timeoutRien n’est arrivé dans le délai de keepaliveUtilisez un keepalive de 30 à 300 secondes et envoyez PINGREQ ; vérifiez la liaison mobile
takeoverUne seconde connexion du même appareil a pris le relaisDeux appareils partagent un identifiant, ou un client se reconnecte sans fermer l’ancien socket. Donnez à chaque appareil son propre identifiant.
auth_revokedL’identifiant, l’appareil ou l’organisation n’est plus autoriséLes sessions sont revérifiées environ toutes les 60 secondes ; un identifiant renouvelé met fin à l’ancienne session
rate_limitL’appareil a continuellement dépassé sa limite de débit (plus de trois fois son allocation par minute rejetée en une minute)Regroupez les mesures, envoyez moins souvent, ou augmentez les limites du profil
inflight_exceededTrop de messages QoS 1 non acquittés (20 par défaut)Attendez les PUBACK avant d’en envoyer davantage
server_shutdownUn nœud du broker a redémarréReconnectez-vous ; rien à corriger
uplink_window_expiredLa fenêtre en ligne Recent message s’est terminéeNormal pour les appareils qui ne se connectent que pour envoyer
protocol_error, socket_errorLe client a enfreint le protocole, ou le réseau a échouéMettez à jour le client ; vérifiez la liaison

Un appareil dont la session est reprise à plusieurs reprises depuis deux réseaux est temporairement mis en attente, et vos administrateurs reçoivent une notification « takeover fight ».

Étape 4 : l’appareil se connecte, mais apparaît hors ligne

CauseVérification
La règle de présence du profilLive connection, Recent message ou Last seen only déterminent ce que signifie « en ligne ». Voir État de connexion et activité.
QuarantaineUn appareil auto-enregistré placé en quarantaine se connecte, mais ses données sont acquittées puis ignorées jusqu’à leur activation par un administrateur. Voir Quarantaine.
L’appareil est un enfant de passerelleSon état provient des messages v1/gw/connect et v1/gw/disconnect de la passerelle. Voir Appareils derrière une passerelle.

Un appareil mal configuré bloque les autres

Des échecs de connexion répétés depuis une même adresse bloquent cette adresse pendant un court moment, pour chaque appareil derrière elle. Plusieurs appareils derrière un même NAT ou routeur mobile sont alors tous refusés avec CONNACK 3 (HTTP 429). Trouvez l’appareil aux identifiants erronés (son onglet Log affiche les échecs), corrigez-le, et laissez les autres réessayer avec temporisation.

Comportement recommandé de l’appareil

  1. Connectez-vous en TLS par nom d’hôte, avec un keepalive compris entre 30 et 300 secondes.
  2. Après CONNACK 0, abonnez-vous aux topics de descente, demandez les attributs partagés, publiez les attributs client, puis envoyez les mesures mises en mémoire tampon.
  3. En cas de refus, espacez les tentatives : réessayez CONNACK 3 avec une gigue aléatoire ; attendez au moins 5 minutes après CONNACK 4 ; cessez de réessayer CONNACK 1 et 2 tant que la configuration n’a pas changé.

Voir MQTT.

Voir aussi