Courtier MQTT accessible de l'extérieur sans ouvrir le port dans le pare-feu?

9

J'aimerais que mon courtier MQTT soit accessible de l'extérieur de mon réseau domestique, mais je suis un peu réticent à ouvrir un port dans le pare-feu. Et j'aimerais éviter d'utiliser mon adresse IP personnelle.

C'est assez pratique d'avoir un courtier ouvert non chiffré à la maison, mais cela ne fonctionne pas si je vais l'exposer. Quelles autres options ai-je?

Thomas Jensen
la source
@Bence Kaulics des suggestions sur ce qui manque à ma réponse?
hardillb
1
@hardillb Votre réponse est un bon résumé mais je pense qu'il pourrait être utile d'avoir plus de détails sur chaque point. Par exemple, comment configurer un tel pont entre deux courtiers. De plus, je voudrais tout simplement trouver d'autres idées s'il y en a, cette description des primes est la meilleure que j'ai pu trouver, votre réponse se démarque également. J'aurais peut-être dû choisir la raison "N'a pas reçu suffisamment d'attention".
Bence Kaulics
En tant que non-expert, je conviens que le point 2 (qui semble la partie la plus précieuse de la réponse) pourrait être développé un peu plus. Peut-être avec un lien vers un guide pratique, maintenant sûr.
Sean Houlihane
malheureusement, chaque type de courtier a une manière différente de configurer un pont, il est donc impossible de donner une réponse générique (de même avec l'authentification / la configuration TLS)
hardillb

Réponses:

10

Vous avez essentiellement 3 options si vous ne voulez pas transférer un port.

  1. Utilisez un courtier dans le cloud pour que le client à domicile s'y connecte toujours. Utilisez TLS et l'authentification pour que les autres ne puissent pas écouter ou injecter des messages indésirables
  2. Utilisez un courtier cloud et configurez un pont entre le courtier interne et le courtier cloud (vous voulez toujours crypter et définir le nom d'utilisateur / mot de passe sur le courtier cloud). Cela a l'avantage que les choses internes continuent de fonctionner si la connexion Internet tombe en panne.
  3. Un VPN sur tous les appareils externes pour permettre l'accès à votre réseau domestique (mais, pour être honnête, vous devrez probablement ouvrir un port pour le VPN ou avoir un routeur qui prend en charge le fait d'être un serveur VPN)

Mais le transfert d'un port vers un serveur correctement configuré (à peu près le même que le courtier cloud) n'est pas vraiment un risque.

hardillb
la source
1
J'aime l'idée du pont domestique cloud, qui a l'avantage supplémentaire que tous les services de reporting en dehors de mon réseau domestique fonctionneront toujours normalement si mon courtier local abandonne. Et le courtier local obtiendra les données "manquées" lorsqu'il reviendra en ligne. Génial! :)
Thomas Jensen
3

Étant donné que le courtier est un serveur, vous DEVEZ ouvrir au moins un port pour que les clients se connectent.

Ainsi, votre problème devient un cas particulier d'exposition d'un service sur Internet.

Cela a été fait via DMZ, soit via un proxy, soit d'une autre manière pour appliquer une authentification plus stricte que le service par défaut. Si votre proxy vit sur le cloud, cela étend simplement votre DMZ au cloud.

Votre approche la plus simple consiste probablement à durcir votre courtier (désactiver les clients anonymes) et à restreindre les personnes qui peuvent s'y connecter via le pare-feu (autoriser uniquement certaines adresses IP des clients, si vous les connaissez à l'avance).

Prise en charge de Gambit
la source
3
Ce n'est pas correct, j'ai ponté mon courtier local avec un cloud. Et puisque la connexion du pont est établie depuis l'intérieur de mon réseau domestique, aucune ouverture de port n'est requise.
Thomas Jensen
3

@hardillb a donné une bonne réponse, mais permettez-moi d'essayer d'ajouter quelques détails en ajoutant une touche "réelle":

  1. Choisissez un courtier MQTT accessible au public. HiveMQ peut être un bon exemple et vous pouvez commencer par la page d' essai décrivant comment se connecter au courtier:

Connectez-vous à Public Broker

Hébergeur: broker.hivemq.com

Port: 1883

Port Websocket: 8000

  1. Choisissez le client qui vous convient le mieux et utilisez-le pour l'interconnexion interne du courtier avec le courtier public MQTT. Par exemple, votre client C pourrait être Paho MQTT . Le client prend en charge SSL / TLS afin que votre sécurité reste à un niveau élevé.

  2. Paho MQTT intégré peut être votre choix pour les appareils externes.

  3. HiveMQ a une politique d'octroi de licences pay-as-you-go afin que vous puissiez la considérer avec soin. Quoi qu'il en soit, vous pouvez consulter cette page pour obtenir une liste des cloud disponibles et tester les courtiers MQTT disponibles.

Amit Vujic
la source