Могут ли веб-сокеты получать доступ к устройствам за брандмауэром / маршрутизатором после настройки соединения? - PullRequest
0 голосов
/ 23 ноября 2018

Мне интересно, может ли мой сервер получить доступ к устройствам за брандмауэром с помощью веб-сокетов, как только соединение будет установлено этим устройством (поскольку сервер доступен для этих устройств)?

Я прочитал этот ответ , который упомянул тот же сценарий, но из ответа неясно, может ли сервер получить доступ к устройствам за маршрутизатором или нет.

Если это возможно, я хочу использовать socket.io, чтобы сначала инициировать соединение клиента с сервером, а затем сделать клиентов доступными с сервера для дальнейшей связи.

Я бы попробовал этоЯ сам, но у меня нет такой настройки, доступной прямо сейчас.Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Когда клиент устанавливает соединение webSocket с сервером, это обеспечивает двустороннюю связь между клиентом и сервером.Клиент может отправлять пакеты на сервер или сервер может отправлять пакеты клиенту в любое время.

Это НЕ позволяет серверу подключаться к любым другим устройствам в сети клиента.Так, например, если пользователь, использующий веб-браузер, загрузил веб-страницу, которая установила соединение webSocket с вашим сервером, то у вашего сервера больше нет возможности подключаться к любым другим устройствам в частной сети этого клиента (например, к принтеру или компьютеру).или какое-либо другое выделенное устройство), чем до подключения к webSocket.И слава Богу, потому что это было бы огромной дырой в безопасности.

Конечно, вы можете использовать умный клиент, который "прокси" предоставляет доступ к другим устройствам.Скорее всего, это может быть что-то иное, чем веб-приложение, но за брандмауэром может быть установлено клиентское приложение, которое подключается к серверу, а затем этот сервер отправляет клиентским сообщениям, которые он хочет, чтобы клиент затем доставлял на различные устройства забрандмауэр.По сути, он будет просить клиента установить соединение с клиентом с другим устройством за брандмауэром, а затем сделать что-то от имени сервера (отправить ему данные, выполнить какую-либо команду и т. Д.).При этом существуют очевидные последствия / риски для безопасности, поэтому для обеспечения безопасности это должно быть сделано очень, очень осторожно.Эта схема прокси не является специфичной для webSocket.Это может быть сделано с любым протоколом между клиентом и сервером.

0 голосов
/ 23 ноября 2018

Пока клиент устанавливает соединение, сервер может отправлять сообщения (в конце концов, веб-сокет является TCP-соединением).

Единственная проблема, с которой вы можете столкнуться, - это если клиент не может подключитьсяиспользование веб-сокетов из-за некоторого прокси / брандмауэра, в этом случае вы можете попробовать защищенные веб-сокеты (wss).Они обычно пропускаются, потому что слой websockets маскируется TLS, который обычно не блокируется брандмауэрами / прокси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...