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

5414
Engine

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

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

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

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

17
"Ethernet IP"? Разве это не просто ... обычная локальная сеть? grawity 6 лет назад 6
«Программирование через Ethernet IP» - что именно это означает? Было бы полезно, если бы вы могли указать, о каком устройстве и IDE вы говорите. Я предполагаю, что IDE подключается к устройству с заданным IP-адресом и портом TCP для получения команд? slhck 6 лет назад 0
@ Grawity Да, это обычная сеть LAN.Как и в SLHK, я использую IDE CodeSys и устройство с CodeSys Runtime на нем! Engine 6 лет назад 0
Очевидный ответ - IPv6, конечно. Michael Hampton 6 лет назад 3
@MichaelHampton Простое программируемое устройство вряд ли будет поддерживать ipv6 rahuldottech 6 лет назад 0
@MichaelHampton Кроме того, не каждый провайдер поддерживает IPv6. Dean MacGregor 6 лет назад 0
То есть ваш компьютер напрямую подключен к Интернету? Между ними нет маршрутизатора или другого подобного сетевого оборудования? Christopher Schultz 6 лет назад 0
@grawity [Ethernet / IP] (https://en.wikipedia.org/wiki/EtherNet/IP) - это протокол промышленной автоматизации, который не следует путать с IP через Ethernet :( richardb 5 лет назад 1
@richardb: Понятно. Тем не менее, он по-прежнему работает через TCP / IP и UDP / IP. grawity 5 лет назад 0

5 ответов на вопрос

50
rahuldottech

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

То, что вы ищете, называется переадресацией портов [ 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:22своей IDE.

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

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

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

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

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

Также было бы полезно отметить, что если OP устанавливает для этого открытую переадресацию портов, все остальные во всем мире могут потенциально изменить код. Если не существует какой-либо формы аутентификации, рано или поздно, portniffers найдет порт, и хакер попытается взломать, это гарантия. LPChip 6 лет назад 10
@LPChip Действительно! Я должен был упомянуть это, мой плохой. rahuldottech 6 лет назад 0
Хорошее дополнение. :) Я бы дал вам +1 за это, но я уже дал это раньше, потому что даже без предупреждения это был уже хороший ответ. :) LPChip 6 лет назад 0
@ LPchip ха, спасибо: D rahuldottech 6 лет назад 0
Существует также «безопасный, но более сложный метод» настройки VPN. djsmiley2k 6 лет назад 0
@LPChip "Рано", как через минуты, или "Позже", как через 10 секунд? FreeMan 6 лет назад 0
@ FreeMan Позже, как и раньше, может пройти несколько дней, прежде чем робот-сканер появится, в зависимости от того, какой порт вы используете, но скорее в том смысле, что, если вам не повезет, это может произойти в считанные минуты. LPChip 6 лет назад 2
Кроме того, не следует ли отключить вход с паролем и убедиться, что на устройстве нет известного пароля, чтобы SSH был безопасным? Я знаю, что некоторые предварительно настроенные ОС для этих устройств имеют очень известный пароль, доступный на их сайтах. Ismael Miguel 6 лет назад 0
@IsmaelMiguel Конечно, вы должны сделать все очевидные базовые меры безопасности. У меня просто нет возможности узнать, кто они в этом конкретном случае. rahuldottech 6 лет назад 1
@Engine Имейте в виду, это будет работать, только если вы можете указать шлюз по умолчанию на указанном устройстве. В противном случае пакеты поступят на устройство, но вы не получите ответа. Но на самом деле, пожалуйста, перейдите со вторым вариантом. Гораздо безопаснее, если учесть, что сервисы на устройстве, вероятно, не предназначены для того, чтобы быть «открытыми» для публичного Интернета. markusju 6 лет назад 0
Я мог бы упомянуть, что SSH СДЕЛАНО для такой операции. Он позволяет вам использовать ключи шифрования вместо паролей (полностью отключите вход в систему с паролем и рассмотрите возможность переноса порта!) И разрешает переадресацию портов. Из-за ключей шифрования соединение SSH может быть безопасно установлено из пакетного файла без запроса пароля, а с переадресацией портов вы можете настроить его так, чтобы (например) переход на порт 44444 на вашем «ПК» работал точно как если бы вы перешли на порт 45678 на своем удаленном устройстве, после создания сценария для запуска соединения вам больше не нужно об этом думать. Bill K 6 лет назад 0
10
Damon

Единственным правильным ответом может быть «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-минутная установка считается «нулем» по сравнению с совершенно небезопасной.

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

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

1
trognanders

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

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

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

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

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

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