Как избежать переадресации портов при подключении устройств IoT к внешнему Интернету?


15

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

Я создал это как отдельный вопрос, потому что было бы трудно правильно проследить за комментариями ко всем ответам, кто-то мог бы потеряться. Кроме того, эта информация может быть полезна для кого-то с похожим вопросом.

Мне не нравится идея перехода к конфигурации маршрутизатора и настройки переадресации портов, потому что это означает, что мне нужно настроить устройство, которое, несмотря на то, что является частью инфраструктуры IoT, не является одним из «моих» устройств. Это должно быть как можно менее разрушительным для уже существующей домашней сети. Кроме того, у меня были случаи, когда я не знал пароль администратора конкретного маршрутизатора, и было действительно трудно его получить.

Я уверен, что есть способ обойти это, даже если это означает наличие более мощного IoT HUB, возможно, под управлением Linux, я просто не знаю, что это может быть. Можно использовать немного более сложный HUB, если этот «альтернативный» способ позволяет избежать такой конфигурации переадресации портов.

Я говорю, что уверен, что есть способ подумать о том, что приложениям, таким как Team Viewer, не нужно настраивать переадресацию портов.

Таким образом, вопрос в том, знает ли кто-нибудь способ «выставления» встроенного 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 устройство является клиентом (издателем, подписчиком или обоими) и инициирует соединение с посредником (сервером).
Поддержка Гамбита

«устройства имеют мало ресурсов для обработки нежелательного трафика от исходящих соединений» ???? это не имеет никакого смысла вообще. Исходящие соединения могут быть инициированы только внутри сети.
Крис Страттон

@ChrisStratton, исходящие соединения могут быть направлены напрямую на устройства, использующие переадресацию портов, если используется NAT. Они также могут иметь свой собственный IP и доступ к ним напрямую из Интернета.
Шахар

Похоже, вы неправильно понимаете значение слова «исходящий» и ошибочно используете его там, где на самом деле подразумевается «входящий». А исходящее соединение - это устройство IoT, подключающееся к облачному серверу. Входящее соединение - это что-то, находящееся за пределами вашей домашней сети (например, вашего телефона, когда вы идете по улице), которое пытается подключиться к устройству в вашей сети.
Крис Страттон

@ChrisStratton, Вы правы, когда я писал исходящий, я имел в виду трафик извне, который по сути является «входящим» соединением для датчика. Я отредактировал свой ответ, спасибо
shachar

3

Попробуйте портить . Вам все еще нужно перенести порт вперед, но порт открыт только после того, как вы отправите секретную комбинацию (вы выбираете) пингов. Затем вы можете закрыть порт с помощью другой секретной комбинации пингов. Он может работать на встроенном 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.