Доступ к устройству в моей локальной сети из Интернета

18

У меня есть встроенное устройство, которое я могу программировать через Ethernet IP, когда оно подключено к тому же маршрутизатору с ПК следующим образом:

введите описание изображения здесь

Можно ли отправить весь трафик через Интернет и при этом иметь возможность его программировать? Чтобы сделать это немного более понятным, что-то вроде:

введите описание изображения здесь

двигатель
источник
6
"Ethernet IP"? Разве это не просто ... обычная локальная сеть?
user1686
«Программирование через Ethernet IP» - что именно это означает? Было бы полезно, если бы вы могли указать, о каком устройстве и IDE вы говорите. Я предполагаю, что IDE подключается к устройству с заданным IP-адресом и портом TCP для получения команд?
Slhck
@ Grawity Да, это обычная сеть LAN. Как и в SLHK, я использую CodeSeE IDE и устройство с CodeSys Runtime на нем!
Двигатель
3
Очевидный ответ - IPv6, конечно.
Майкл Хэмптон
1
@grawity Ethernet / IP - это протокол промышленной автоматизации, который не следует путать с IP через Ethernet :(
richardb

Ответы:

50

Простой (и небезопасный) метод

То, что вы ищете, называется переадресацией портов [ 1 ] [ 2 ] .

Например, допустим следующее:

  • Ваше программируемое устройство работает через порт 22и имеет IP192.168.1.5

  • Ваш публичный IP 122.176.11.55

Затем вы можете перейти в настройки вашего маршрутизатора и переслать порт WAN (например, 8022) в 192.168.1.5:22.

Теперь вы можете получить удаленный доступ к устройству из любого места через Интернет, используя 122.176.11.55:8022вместо этого 192.168.1.5:22IDE.

Имейте в виду, что если у вас нет статического IP-адреса, ваш общедоступный IP-адрес может измениться в любое время, и в этом случае вам следует проверить динамические службы DNS .

ПРИМЕЧАНИЕ : если ваше устройство не имеет какой-либо метод аутентификации, кто-то со злым умыслом почти наверняка найдет доступ к нему в открытой сети. Смотрите ниже безопасную альтернативу.

Безопасный (и, честно говоря, не намного более сложный) метод

Оставьте компьютер (или малиновый пи, или аналогичный) , подключенный к сети, а также доступ , что удаленно вместо через что - то безопасно , как SSH, а затем запрограммировать устройство через него по локальной сети.
Это также имеет дополнительное преимущество работы, даже если ваше устройство не использует TCP или UDP :)

Да, немного утомительно. Но безопасно.

rahuldottech поддерживает Монику
источник
10
Также было бы полезно отметить, что если OP устанавливает для этого открытую переадресацию портов, все остальные во всем мире могут потенциально изменить код. Если не существует какой-либо формы аутентификации, рано или поздно, portniffers найдет порт, и хакер попытается взломать, это гарантия.
LPChip
@LPChip Действительно! Я должен был упомянуть это, мой плохой.
rahuldottech поддерживает Монику
Хорошее дополнение. :) Я бы дал вам +1 за это, но я уже дал это раньше, потому что даже без предупреждения это был уже хороший ответ. :)
LPChip
2
@FreeMan позже, как и раньше, может пройти несколько дней, прежде чем робот-сканер появится, в зависимости от того, какой порт вы используете, но скорее в том смысле, что, если вам не повезет, это может произойти в считанные минуты.
LPChip
1
@IsmaelMiguel Конечно, вы должны сделать все очевидные базовые меры безопасности. У меня просто нет возможности узнать, кто они в этом конкретном случае.
rahuldottech поддерживает Монику
11

Единственным правильным ответом может быть «VPN».

Простое использование IPv6 будет «работать» (при условии, что маршрутизатор не настроен на брандмауэр от устройства и все интернет-провайдеры, устройства и ноутбуки поддерживают IPv6), но это ужасная идея по той же причине, по которой переадресация портов.

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

Переадресация портов «работает» со старым добрым IPv4, но делает устройство доступным не только для вас, но и для всех. Никто не знает, так что это не проблема, верно?
Что ж, есть армия автоматических сканеров портов, работающих круглосуточно и сканирующих случайные адреса / порты, в надежде, что что-нибудь, где угодно, возможно, ответит, поэтому вообще наличие любого устройства, которое ответит на внешний запрос онлайн, не является оптимальным. Если устройство с радостью запрограммирует себя в соответствии с тем, что поступает через сеть, это рецепт для бедствия.
Вышесказанное, в принципе, верно и для VPN, но оно достаточно хорошо, если вы хотите получить доступ. Единственная действительно безопасная вещь - это вообще отсутствие подключения к интернету, что по понятным причинам не практично. Следующая безопасная вещь, когда нет интернета - это VPN. Ровно один порт на ровно одном устройстве (ну, это зависит, до трех портов), выставляя VPN и ничего больше , перенаправляемый в интернет.

VPN позволяет - но никто другой - получить доступ к устройству в вашей локальной сети через Интернет, как если бы вы были в той же локальной сети (хотя и немного медленнее). Это предотвращает несанкционированный доступ, обеспечивает конфиденциальность и целостность данных.

Практически каждый бездарный маршрутизатор поддерживает как минимум один вариант VPN из коробки. К сожалению, в зависимости от используемой модели маршрутизатора, это может быть плохой вид VPN или плохо документировано, как настроить удаленный компьютер. Тем не менее, несмотря на возможные трудности с выяснением, как его настроить - если у вас нет ничего лучше, это, безусловно, лучший вариант!
Наиболее распространенные NAS-блоки поддерживают два или три метода VPN без присосок, и каждый 3-ваттный компьютер размером с кредитную карту за 20 долларов может работать с сервером VPN, без проблем. Даже многие современные мобильные телефоны поддерживают VPN без необходимости установки дополнительного программного обеспечения, поэтому вы даже можете получить доступ к домашней сети, когда используете мобильный интернет вашего телефона (даже через частную точку доступа).

Например, L2TP / IPSec, возможно, не самый лучший выбор, но он на 99% хорош и занимает одну минуту для настройки на Disk Station и на моем телефоне Samsung. Еще одна минута, если мой ноутбук с Windows будет использовать его (независимо от телефона). Никакого дополнительного программного обеспечения не требуется.
OpenVPN занимает 3-5 минут, потому что вам нужно скачать установочное программное обеспечение клиента на ноутбуке. Но на более широкой картине 5-минутная установка считается «нулем», по сравнению с тем, что она абсолютно небезопасна.

Damon
источник
5
Покупка сторонних сервисов - не единственный ответ. Вы можете получить тот же эффект с SSH или RDP.
jpaugh
4
Двумя единственными правильными ответами являются туннели VPN или SSH ... Некоторые протоколы VPN тоже не очень хороши для предотвращения MITM ...
trognanders
5
SSH намного дешевле, удобнее и проще в настройке, и, вероятно, лучший вариант в этом сценарии
rahuldottech поддерживает Monica
@jpaugh: VPN не использует сторонние сервисы. Хотя я с готовностью согласен с тем, что SSH можно заставить работать, он никоим образом не похож на VPN, когда речь идет о простоте настройки, универсальной доступности без лишних инсталляций и без скачков и, наконец, о бесперебойном удобстве использования. , Теперь про RDP ... ты, конечно, шутишь, верно? Это не только первозданная реализация, вероятно, наиболее эксплуатируемое программное обеспечение в мире (или, по крайней мере, в топ-5), но и сам протокол по своей природе небезопасен, использует битые (работоспособные, не теоретические) шифры и версию TLS, которая был заменен десять лет назад.
Деймон
4
-1 просто для «один-единственный» в названии, SSH с переадресацией портов также полностью действителен и, вероятно, безопаснее, поскольку вам не обязательно предоставлять удаленный доступ ко всей сети, только один порт одного устройства, и, скорее всего, его легко настроить, и вы не полагаетесь на случайную программную реализацию маршрутизатора редко используемой функции.
Билл К
2

Разместите VPN, либо в устройстве маршрутизатора / шлюза безопасности, либо в другом блоке с переадресацией портов на этот блок. Всякий раз, когда вы хотите работать удаленно, подключитесь к VPN, и вы увидите встроенное устройство, как если бы оно было в локальной сети. Вероятно, было бы неплохо поместить встроенное устройство в изолированную подсеть, чтобы помочь предотвратить атаки на вашу основную сеть, если VPN или встроенное устройство скомпрометировано.

Майкл П
источник
1

Сделайте ПК с Windows без IDE на ПК с Linux в достаточно безопасной конфигурации с запущенным sshd. Перенаправьте порт с вашего маршрутизатора на порт SSH на компьютере с Linux. Используйте SSH-туннели для подключения к IP встроенного устройства. Затем при программировании на удаленной машине с IDE вы будете подключаться к localhost вместо IP-адреса локальной сети.

Прослушивание в Интернете с усиленной службой, такой как SSH, достаточно безопасно. Прослушивание непосредственно в Интернете с развитием ничего сказочно плохая идея. SSH является привратником. Если вы удостоверитесь, что подтвердили ключ хоста, он полностью защищает от MITM. Используется хорошая криптография. Настройка туннелирования не включает маршрутизацию или мостовое соединение, а выглядит так, как будто вы подключаетесь напрямую с машины SSHD. Это значительно проще для правильной настройки.

trognanders
источник
Вы можете ... Просто запустите SSH-сервер в Windows, здесь вам не нужен Linux.
rahuldottech поддерживает Монику
«Затем при программировании на удаленной машине с IDE вы будете подключаться к локальному хосту вместо IP-адреса локальной сети». Этот бит не имеет смысла для меня, подробно?
Rahuldottech поддерживает Монику
@rahuldottech Переадресация SSH-порта работает на уровне TCP. На сервере sshd открывает соединения с ресурсом в локальной сети и пересылает содержимое этого сокета по SSH. На удаленной машине клиент ssh прослушивает порт localhost. Когда вы подключаетесь к localhost через этот порт, это SSH-клиент, и он просто перехватывает соединения tcp. Что-то странное, но действительно универсальное, так как нет IP-маршрутизации!
trognanders
-1

Недавно я наткнулся на лучшее решение для персонального удаленного доступа. Сначала давайте обсудим масштабы проблемы. В игру вступают три проблемы: nat, ip-адрес и безопасность. Например, в распространенных случаях, когда вы хотите запустить ssh или веб-сервер в домашней сети, традиционный подход - это переадресация портов и динамический dns, а также лучшие отраслевые стандарты безопасности. Это имеет недостатки для вашего случая, так как ваше устройство не имеет стандартной безопасности. Этого можно избежать, используя переадресацию по ssh-порту, в отличие от открытия вашего устройства в Интернете,

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

hildred
источник
4
Использование луковых сервисов только усложнит этот путь без дополнительных преимуществ. Тор может быть полезен. Не будет в этом случае.
rahuldottech поддерживает Монику