Як уникнути переадресації портів під час експонування пристроїв IoT у зовнішній Інтернет?


15

Я отримав кілька хороших відповідей на запитання Що мені потрібно для створення власної особистої хмари для пристроїв IoT? і одна з речей, яку я зрозумів звідти, - це те, що мені потрібно «виставити» свій HUB або GATEWAY до зовнішнього Інтернету. Пропонованим рішенням для цього є переадресація портів .

Я створив це як окреме запитання, тому що було б важко правильно слідкувати лише за коментарями до всіх відповідей, хтось може втратити щось. Також ця інформація може бути корисною для когось із подібним питанням.

Мені не подобається ідея переходити до конфігурації маршрутизатора та налаштовувати переадресацію портів, оскільки це означає, що я маю налаштувати пристрій, який, незважаючи на те, що є частиною інфраструктури IoT, не є одним із "моїх" пристроїв. Він повинен бути якнайменше руйнівним для вже існуючої домашньої мережі. Крім того, у мене були випадки, коли я не знаю пароль адміністратора певного маршрутизатора, і отримати його було дуже важко.

Я впевнений, що є спосіб, що навіть якщо це означає, що більш потужна IoT HUB, можливо, працює Linux, я просто не знаю, що це може бути. Добре мати трохи складніший HUB, якщо цей "альтернативний" спосіб дозволяє уникнути конфігурації переадресації портів.

Я кажу, що впевнений, що існує спосіб подумати про те, як додаткам, таким як команда перегляду, не потрібно налаштовувати переадресацію портів.

Тож питання полягає в тому, чи хтось знає спосіб "відкрити" вбудований пристрій IoT у зовнішній Інтернет, щоб отримати доступ до нього з будь-якої точки світу, яка не передбачає переадресацію портів?

Відповіді:


10

Якщо ви не можете переправити маршрутизатор, можливо, доведеться вдатися до пробивання отворів :

Пробивання отворів - це техніка в комп'ютерних мережах для встановлення прямого зв'язку між двома сторонами, в яких одна або обидві стоять за брандмауерами або за маршрутизаторами, які використовують трансляцію мережевих адрес (NAT). Щоб пробити дірку, кожен клієнт підключається до необмеженого стороннього сервера, який тимчасово зберігає зовнішню та внутрішню адресу та інформацію про порт для кожного клієнта. Потім сервер ретранслює інформацію кожного клієнта іншому, і використовуючи цю інформацію, кожен клієнт намагається встановити прямий зв'язок; в результаті з'єднань з використанням дійсних номерів портів, обмежувальні брандмауери або маршрутизатори приймають та передають вхідні пакети з кожної сторони.

NAT на маршрутизаторі ваших коштів , що клієнти за межами вашої мережі не можуть підключатися до відкритих портів пристроїв всередині мережі, але не обмежують пристроями в мережі з підключенням до «брокера». Використовуючи трохи опосередкованості , ви можете встановити прямий зв'язок між двома пристроями, не відкриваючи жодного порту - це, по суті, те, що роблять такі сервіси, як Skype і Hamachi.

Звичайно, для цього потрібен зовнішній сервер для координації з'єднання, і ви, ймовірно, хочете довіритися серверу, який здійснював пробивання отворів.

Браун Форд, Піда Срісуреш та Ден Кегель - це однозначне спілкування через мережеві перекладачі адресних мереж .


Чудово! Хоча одне питання, чи може цей сторонній сервер чи "брокер" також знаходитися всередині мого будинку? І бути, наприклад, вбудованою платою Linux? Тому що в іншому випадку цей підхід створить ще більшу проблему, коли йдеться про наявність зовнішніх сторонніх елементів у розгортанні IoT. Якщо вбудована плата Linux не може бути такою, то що б це було?
m4l490n

3
@ m4l490n: Якось це повинно бути поза вашою мережею . Я думаю, що це може бути хмарний сервер десь або ви можете використовувати плату Linux, якби це було переадресовано через порт. Пробивання отворів UDP працює лише тоді, коли десь у вас є сервер / пристрій, який є загальнодоступним в Інтернеті. Це не ідеально, але ви не можете обійти той факт, що щось має бути в Інтернеті, щоб публічно підключитися. Я підозрюю, що вбудована плата Linux у вашій домашній мережі не дала б переваги; Вам потрібно лише перенести вперед , а не ваш пристрій IoT.
Aurora0001

1
Відмінно! Незважаючи на те, що це був не прямий намір вашої відповіді, а не первісний намір мого питання, я нарешті розумію роль хмарного сервера в інфраструктурі IoT !.
m4l490n

Якщо я розумію, отвір є начебто віртуальним, на відміну від переадресації портів, де змінено стан маршрутизатора. Кожен кінець посилання лише спілкується з сервером? Отже, це була б типова модель для IoT, я вважаю, оскільки загальна мережа багато-багато?
Шон Хуліхане

7

У світі IoT, де пристрої мають мало ресурсів для обробки небажаного трафіку із зовнішніх з'єднань, і, звичайно, необхідність обробляти будь-які проблеми з переадресацією порту та брандмауером з маршрутизаторами призвела до такого підходу, який ви можете побачити у багатьох рішеннях заднього кінця IoT:

Пристрої не прийматимуть жодної небажаної мережевої інформації. Усі з'єднання та маршрути встановлюватимуться пристроєм виїзним способом. Таким чином, пристрій відкриє вихідні з'єднання, тому жодних налаштувань брандмауера / маршрутизатора не знадобиться, і він буде тримати канал відкритим стільки, скільки потрібно.

Гарна стаття про проблеми зв'язку і рішеннях в світі IoT.


Для MQTT пристрій є клієнтом (видавець або підписник або обидва) та ініціює з'єднання з брокером (сервером).
Підтримка Gambit

"пристрої мають мало ресурсів для обробки небажаного трафіку від вихідних з'єднань" ???? це зовсім не має сенсу. Вихідні з'єднання можна ініціювати лише всередині мережі.
Кріс Страттон

@ChrisStratton, вихідні з'єднання можуть бути спрямовані безпосередньо на пристрої, що використовують переадресацію портів, якщо використовується NAT. Вони також можуть мати власний IP-адресу, і до них можна отримати доступ безпосередньо з Інтернету.
шачар

Ви, здається, нерозумієте значення слова "вихідний" і помилково використовуєте його там, де ви маєте на увазі "вхідне". І вихідне з'єднання - це пристрій IoT, який охоплює хмарний сервер. Вхідне з'єднання - це те, що знаходиться поза вашою домашньою мережею (скажімо, ваш телефон, коли ви йдете вулицею), намагаючись зв’язатися з пристроєм всередині вашої мережі.
Кріс Страттон

@ChrisStratton, ти прав, коли я писав вихідний, я мав на увазі трафік ззовні, що в основному є "вхідним" з'єднанням датчика. Я відредагував свою відповідь, спасибі
shachar

3

Спробуйте Port Knocking . Вам все одно потрібно перенести порт вперед, але порт відкриється лише після того, як ви надішлите секретну комбінацію (вибираєте) пінгів. Потім ви можете закрити порт іншим секретним комбо з пінгів. Він може працювати на вбудованому Linux, наприклад, Wi-Fi маршрутизаторі з OpenWrt.


3

Хоча я не можу рекомендувати, щоб ви дозволяли будь-якому пристрою IoT бути доступним із загальнодоступного Інтернету, ви можете це досягти за допомогою IPv6.

Якщо ваш Інтернет-провайдер та локальна мережа налаштовані на IPv6, а ваші пристрої IoT підтримують його, вони можуть автоматично отримати IPv6-адресу, яка може бути маршрутизована з будь-якої точки Інтернету (IPv6 усуває потребу в NAT та переадресації портів). Вам просто потрібно переконатися, що будь-які потужні брандмауери (ваш маршрутизатор) налаштовані так, щоб дозволити трафік на кожен пристрій. Деякі можуть дозволити це (невпевнено) за замовчуванням.


2

Встановіть VPN-сервер вдома, а потім підключіться до нього з будь-якого місця. Я думаю, це було б набагато безпечніше, ніж відкривати будь-який тип пристроїв IoT у відкритому Інтернеті.


Це не просто якийсь шлюз?
Гельмар

гм? VPN - це точковий (зазвичай зашифрований) зв’язок між пристроєм та мережею. це змушує з'єднувальний пристрій діяти так, ніби він був частиною мережі. Я думаю, ви могли б подумати про це як про шлюз ... але це послуга.
Моріс

Зрозуміло, але ця послуга все ж має пройти домашній маршрутизатор - як правило, через переадресацію порту або безперервне вихідне з'єднання.
Гельмар

так, вам все одно доведеться переадресувати порт, на якому працює VPN. але це безпечніше, ніж виставляти окремі пристрої (що може бути менш зручним, залежно від того, що ви намагаєтесь досягти)
Моріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.