Come evitare il port forwarding quando espongo i dispositivi IoT a Internet esterno?


15

Ho ricevuto alcune buone risposte alla domanda Cosa mi serve per creare il mio cloud personale per i dispositivi IoT? e una delle cose che ho capito da lì è che ho bisogno di "esporre" il mio HUB o GATEWAY a Internet esterno. La soluzione proposta per questo è il port forwarding .

Ho creato questo come una domanda separata perché sarebbe difficile seguire correttamente solo i commenti su tutte le risposte, qualcuno potrebbe perdersi. Inoltre, queste informazioni possono essere utili per qualcuno con una domanda simile.

Non mi piace l'idea di dover andare alla configurazione del mio router e configurare il port forwarding perché ciò significa che devo configurare un dispositivo che nonostante faccia parte dell'infrastruttura IoT, non è uno dei "miei" dispositivi. Deve essere il meno distruttivo possibile della rete domestica già esistente. Inoltre, ho avuto casi in cui non conosco la password dell'amministratore di un particolare router ed è stato davvero difficile ottenerlo.

Sono sicuro che c'è un modo per aggirare il fatto che, anche se ciò significhi avere un IoT HUB più potente, magari con Linux, non so cosa potrebbe essere. È OK avere un HUB un po 'più complesso se quel modo "alternativo" consente di evitare quella configurazione del port forwarding.

Dico che sono sicuro che c'è un modo di pensare a come le applicazioni come il visualizzatore di team non debbano configurare il port forwarding.

Quindi la domanda è: qualcuno conosce un modo per "esporre" un dispositivo IoT incorporato a Internet esterno per accedervi da qualsiasi parte del mondo che non implichi il port forwarding?

Risposte:


10

Se non è possibile eseguire il port forwarding del router, potrebbe essere necessario ricorrere alla perforazione :

La perforazione è una tecnica di rete di computer per stabilire una connessione diretta tra due parti in cui uno o entrambi si trovano dietro i firewall o dietro i router che utilizzano la traduzione di indirizzi di rete (NAT). Per creare un buco, ogni client si connette a un server di terze parti senza restrizioni che memorizza temporaneamente l'indirizzo e le informazioni sulla porta esterna e interna per ciascun client. Il server quindi inoltra le informazioni di ciascun client all'altro e, utilizzando tali informazioni, ciascun client tenta di stabilire una connessione diretta; a causa delle connessioni che utilizzano numeri di porta validi, i firewall oi router restrittivi accettano e inoltrano i pacchetti in entrata su ciascun lato.

Il NAT sul router indica che i client al di fuori della rete non possono connettersi alle porte aperte dei dispositivi all'interno della rete, ma ciò non impedisce ai dispositivi nella rete di connettersi a un "broker". Usando un po 'di riferimento indiretto , puoi stabilire una connessione diretta tra due dispositivi senza effettivamente aprire alcuna porta: questo è essenzialmente ciò che fanno servizi come Skype e Hamachi.

Ovviamente, ciò richiede un server esterno per coordinare la connessione e probabilmente vorrai fidarti del server che stava eseguendo la perforazione.

Comunicazione peer-to-peer attraverso i traduttori di indirizzi di rete di Bryan Ford, Pyda Srisuresh e Dan Kegel è una lettura interessante per ulteriori informazioni sui meccanismi di perforazione e sulla sua affidabilità.


Meraviglioso! Una domanda, però, può anche quel server di terze parti o "broker" essere dentro casa mia? Ed essere ad esempio una scheda Linux integrata? Perché altrimenti, questo approccio introdurrebbe un problema ancora più grande parlando di elementi esterni di terze parti nella distribuzione dell'IoT. Se una scheda Linux integrata non può essere questa, quale sarebbe?
m4l490n,

3
@ m4l490n: in qualche modo dovrebbe essere al di fuori della tua rete . Immagino che potrebbe essere un server cloud da qualche parte, oppure potresti usare la scheda Linux se questo fosse il port forwarding. La perforazione UDP funziona solo quando si dispone di un server / dispositivo accessibile pubblicamente su Internet da qualche parte. Non è l'ideale, ma non è possibile aggirare il fatto che qualcosa deve essere pubblicamente pubblicato su Internet a cui connettersi. Sospetto che una scheda Linux integrata nella tua rete domestica non offrirebbe alcun vantaggio; devi solo porta avanti che al posto del tuo dispositivo degli oggetti.
Aurora0001

1
Eccellente! Anche se non era l'intenzione diretta della tua risposta e non l'intenzione originale della mia domanda, finalmente capisco il ruolo di un server cloud in un'infrastruttura IoT !.
m4l490n,

Se ho capito, il buco è un po 'virtuale, a differenza del port forwarding in cui viene modificato lo stato del router. Ogni estremità del collegamento comunica solo con il server? Quindi questo sarebbe il modello tipico per l'IoT, credo, dal momento che la rete generale è da molti a molti?
Sean Houlihane,

7

Nel mondo IoT in cui i dispositivi dispongono di risorse limitate per gestire il traffico indesiderato da connessioni esterne e, naturalmente, la necessità di gestire eventuali problemi di port forwarding e firewall con i router ha portato al seguente approccio che è possibile vedere in molte soluzioni di back-end IoT:

I dispositivi non accetteranno alcuna informazione di rete non richiesta. Tutte le connessioni e le rotte verranno stabilite dal dispositivo in modo esclusivamente in uscita. Quindi il dispositivo aprirà una connessione in uscita, quindi non saranno necessarie modifiche al firewall / router e manterrà il canale aperto per tutto il tempo necessario.

Un bell'articolo sui problemi e le soluzioni di comunicazione nel mondo dell'IoT.


Per MQTT, il dispositivo è un client (editore o abbonato o entrambi) e avvia la connessione al broker (server).
Gambit Support

"i dispositivi dispongono di risorse limitate per gestire il traffico indesiderato da connessioni in uscita " ???? non ha alcun senso. Le connessioni in uscita possono essere avviate solo all'interno della rete.
Chris Stratton il

@ChrisStratton, le connessioni in uscita possono essere dirette direttamente ai dispositivi utilizzando il port forwarding se si utilizza NAT. Possono anche avere il proprio IP e sono accessibili direttamente da Internet.
Shachar,

Sembra che tu abbia frainteso il significato della parola "in uscita" e lo usi erroneamente dove ciò che intendi effettivamente è "in entrata". E la connessione in uscita è un dispositivo IoT che raggiunge un server cloud. Una connessione in entrata è qualcosa al di fuori della tua rete domestica (ad esempio il tuo telefono mentre cammini per strada) nel tentativo di raggiungere un dispositivo all'interno della tua rete.
Chris Stratton,

@ChrisStratton, hai ragione, quando ho scritto in uscita intendevo il traffico dall'esterno, che è fondamentalmente la connessione "Inbound" per il sensore. Ho modificato la mia risposta, grazie
Shachar,

3

Prova Port Knocking . Devi ancora effettuare il port forwarding, ma la porta è aperta solo dopo aver inviato una combinazione segreta (scelta) di ping. Quindi puoi chiudere la porta con un'altra combinazione segreta di ping. Può funzionare su Linux incorporato, come router wifi con OpenWrt.


3

Anche se non posso raccomandare di consentire a qualsiasi dispositivo IoT di essere raggiungibile da Internet pubblico, è possibile raggiungere questo obiettivo in modo nativo utilizzando IPv6.

Se il tuo ISP e la rete locale sono configurati per IPv6 e i tuoi dispositivi IoT lo supportano, possono automaticamente ottenere un indirizzo IPv6 instradabile da qualsiasi parte di Internet (IPv6 elimina la necessità di NAT e port forwarding). Dovresti solo assicurarti che tutti i firewall con stato (il tuo router) siano configurati per consentire il traffico verso ciascun dispositivo. Alcuni potrebbero consentirlo (in modo non sicuro) per impostazione predefinita.


2

Installa un server VPN a casa, quindi connettiti ad esso da qualsiasi luogo. Penso che questo sarebbe molto più sicuro dell'esposizione di qualsiasi tipo di dispositivo IoT a Internet aperto.


Non è solo una sorta di gateway?
Helmar

hm? una VPN è una connessione punto-punto (solitamente crittografata) tra un dispositivo e una rete. fa agire il dispositivo di connessione come se fosse parte della rete. Immagino che potresti pensarlo come un gateway ... ma è un servizio.
Maurice,

Certo, ma quel servizio deve ancora superare il router di casa, di solito attraverso il port forwarding o le connessioni in uscita senza sosta.
Helmar

sì, dovrai comunque eseguire il port forwarding della porta su cui è in esecuzione la VPN. ma è più sicuro dell'esposizione dei singoli dispositivi (anche potenzialmente meno conveniente, a seconda di ciò che stai cercando di ottenere)
Maurice
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.