Comment éviter la redirection de port lorsque j'expose des appareils IoT à Internet externe?

15

J'ai reçu de bonnes réponses à la question De quoi ai-je besoin pour créer mon propre cloud personnel pour les appareils IoT? et l'une des choses que j'ai comprises à partir de là, c'est que je dois «exposer» mon HUB ou PASSERELLE à Internet externe. La solution proposée pour cela est la redirection de port .

J'ai créé cela comme une question distincte car il serait difficile de suivre correctement juste avec des commentaires sur toutes les réponses, quelqu'un pourrait se perdre un peu. De plus, ces informations peuvent être utiles pour une personne ayant une question similaire.

Je n'aime pas l'idée de devoir aller dans la configuration de mon routeur et de configurer la redirection de port car cela signifie que je dois configurer un appareil qui, bien qu'il fasse partie de l'infrastructure IoT, ne fait pas partie de "mes" appareils. Il doit perturber le moins possible le réseau domestique déjà existant. De plus, j'ai eu des cas où je ne connais pas le mot de passe administrateur d'un routeur particulier et il a été très difficile de l'obtenir.

Je suis sûr qu'il existe un moyen de contourner cela, même si cela signifie avoir un hub IoT plus puissant peut-être exécutant Linux, je ne sais tout simplement pas ce que cela pourrait être. Il est OK d'avoir un HUB un peu plus complexe si cette manière "alternative" permet d'éviter cette configuration de redirection de port.

Je dis que je suis sûr qu'il existe un moyen de penser que des applications comme Team Viewer n'ont pas besoin de configurer la redirection de port.

La question est donc la suivante: quelqu'un connaît-il un moyen «d'exposer» un appareil embarqué IoT à Internet externe afin d'y accéder de n'importe où dans le monde qui n'implique pas la redirection de port?

m4l490n
la source

Réponses:

10

Si vous ne pouvez pas transférer votre routeur, vous devrez peut-être recourir à la perforation :

Le poinçonnage est une technique de mise en réseau informatique permettant d'établir une connexion directe entre deux parties, l'une ou les deux se trouvant derrière des pare-feu ou derrière des routeurs qui utilisent la traduction d'adresses réseau (NAT). Pour percer un trou, chaque client se connecte à un serveur tiers sans restriction qui stocke temporairement les informations d'adresse et de port externes et internes pour chaque client. Le serveur relaie ensuite les informations de chaque client à l'autre, et en utilisant ces informations, chaque client essaie d'établir une connexion directe; en raison des connexions utilisant des numéros de port valides, des pare-feu ou routeurs restrictifs acceptent et transfèrent les paquets entrants de chaque côté.

Le NAT sur votre routeur signifie que les clients en dehors de votre réseau ne peuvent pas se connecter aux ports ouverts des appareils à l' intérieur de votre réseau, mais il n'empêche pas les appareils de votre réseau de se connecter à un `` courtier ''. En utilisant un peu d'indirection , vous pouvez établir une connexion directe entre deux appareils sans ouvrir réellement de ports - c'est essentiellement ce que font des services comme Skype et Hamachi.

Bien sûr, cela nécessite un serveur externe pour coordonner la connexion, et vous voudrez probablement faire confiance au serveur qui effectuait la perforation.

Communication Peer-to-Peer à travers les traducteurs d'adresses réseau par Bryan Ford, Pyda Srisuresh et Dan Kegel est une lecture intéressante pour plus d'informations sur les mécanismes de perforation et sa fiabilité.

Aurora0001
la source
Formidable! Une question, cependant, est-ce que ce serveur ou "courtier" tiers peut également être à l'intérieur de ma maison? Et être par exemple une carte Linux embarquée? Parce que sinon, cette approche introduirait un problème encore plus important concernant la présence d'éléments tiers externes dans le déploiement de l'IoT. Si une carte Linux embarquée ne peut pas être celle-ci, quelle serait-elle?
m4l490n
3
@ m4l490n: Cela devrait être en dehors de votre réseau d'une manière ou d'une autre. J'imagine que ce pourrait être un serveur cloud quelque part, ou vous pouvez utiliser la carte Linux si ce port a été transféré. La perforation UDP ne fonctionne que lorsque vous avez un serveur / appareil accessible au public quelque part sur Internet. Ce n'est pas idéal, mais vous ne pouvez pas contourner le fait que quelque chose doit être publiquement sur Internet pour se connecter. Je soupçonne qu'une carte Linux intégrée dans votre réseau domestique n'offrirait aucun avantage; il suffit de le port avant que la place de votre appareil IdO.
Aurora0001
1
Excellent! Même si ce n'était pas l'intention directe de votre réponse et pas l'intention initiale de ma question, je comprends enfin le rôle d'un serveur cloud dans une infrastructure IoT!.
m4l490n
Si je comprends bien, le trou est un peu virtuel, contrairement à la redirection de port où l'état du routeur est modifié. Chaque extrémité du lien communique uniquement avec le serveur? Ce serait donc le modèle typique de l'IoT, je crois, car le réseau général est plusieurs à plusieurs?
Sean Houlihane
7

Dans le monde IoT, où les appareils ont de faibles ressources pour gérer le trafic indésirable des connexions externes et bien sûr la nécessité de gérer tous les problèmes de redirection de port et de pare-feu avec les routeurs a conduit à l'approche suivante que vous pouvez voir dans de nombreuses solutions d'arrière-plan IoT:

Les appareils n'accepteront aucune information réseau non sollicitée. Toutes les connexions et routes seront établies par l'appareil de manière sortante uniquement. Ainsi, l'appareil ouvrira une connexion sortante, donc aucun ajustement de pare-feu / routeur ne sera nécessaire et il gardera le canal ouvert aussi longtemps qu'il le faudra.

Un bel article sur les problèmes de communication et les solutions dans le monde IoT.

shachar
la source
Pour MQTT, l'appareil est un client (éditeur ou abonné ou les deux) et initie la connexion au courtier (serveur).
Prise en charge du Gambit du
"les appareils ont de faibles ressources pour gérer le trafic indésirable des connexions sortantes " ???? Cela n'a aucun sens. Les connexions sortantes ne peuvent être lancées qu'à l' intérieur du réseau.
Chris Stratton
@ChrisStratton, les connexions sortantes peuvent être dirigées directement vers les appareils à l'aide de la redirection de port si NAT est utilisé. Ils peuvent également avoir leur propre adresse IP et sont accessibles directement depuis Internet.
shachar
Vous semblez mal comprendre le sens du mot "sortant" et l'utiliser à tort lorsque ce que vous voulez dire par "entrant". Et la connexion sortante est un appareil IoT atteignant un serveur cloud. Une connexion entrante est quelque chose en dehors de votre réseau domestique (par exemple votre téléphone, pendant que vous marchez dans la rue) essayant d'atteindre un appareil à l'intérieur de votre réseau.
Chris Stratton
@ChrisStratton, Vous avez raison, lorsque j'ai écrit sortant, je parlais du trafic provenant de l'extérieur, qui est essentiellement la connexion "entrante" pour le capteur. J'ai édité ma réponse, merci
shachar
3

Essayez Port Knocking . Vous devez toujours rediriger le port, mais le port n'est ouvert qu'après l'envoi d'une combinaison secrète (vous choisissez) de pings. Ensuite, vous pouvez fermer le port avec un autre combo secret de pings. Il peut fonctionner sur Linux embarqué, tel qu'un routeur wifi avec OpenWrt.

GusGorman402
la source
3

Bien que je ne puisse pas recommander que vous autorisiez tout appareil IoT à être accessible à partir d'Internet public, vous pouvez y parvenir de manière native en utilisant IPv6.

Si votre FAI et votre réseau local sont configurés pour IPv6 et que vos appareils IoT le prennent en charge, ils peuvent automatiquement obtenir une adresse IPv6 qui est routable de n'importe où sur Internet (IPv6 supprime le besoin de NAT et de redirection de port). Il vous suffit de vous assurer que tous les pare-feu avec état (votre routeur) sont configurés pour autoriser le trafic vers chaque appareil. Certains peuvent autoriser cela (de manière non sécurisée) par défaut.

multithr3at3d
la source
2

Configurez un serveur VPN à la maison, puis connectez-vous depuis n'importe où. Je pense que ce serait beaucoup plus sûr que d'exposer n'importe quel type d'appareil IoT à Internet ouvert.

Maurice
la source
N'est-ce pas juste une sorte de passerelle?
Helmar
hm? un VPN est une connexion point à point (généralement cryptée) entre un appareil et un réseau. il fait agir le périphérique de connexion comme s'il faisait partie du réseau. Je suppose que vous pourriez y voir une passerelle ... mais c'est un service.
Maurice
Bien sûr, mais ce service doit toujours dépasser le routeur domestique, généralement via la redirection de port ou des connexions sortantes sans arrêt.
Helmar
oui, vous auriez toujours besoin de rediriger le port sur lequel le VPN fonctionne. mais c'est plus sûr que d'exposer des appareils individuels (tho potentiellement moins pratique, selon ce que vous essayez de réaliser)
Maurice