Назад | Перейти на главную страницу

Маршрутизация трафика к нескольким частным IP-системам

Мы - небольшой стартап, и одно из наших основных требований - предоставить облачный доступ к нашей основной системе (работающей на базовом дистрибутиве Linux) для наших клиентов, которые часто используют подключение к Интернету без общедоступного IP-адреса. Homekit запускает базовый дистрибутив Linux. Существуют ли пакеты с открытым исходным кодом, которые позволят устройству, находящемуся за частным IP-адресом, подключаться к облачному серверу, в то время как облачный сервер направляет запросы для каждого входящего запроса на конкретное устройство в зависимости от токена


Хорошо, позвольте мне перефразировать вопрос, что мне нужно для этого, чтобы мои клиенты могли получить доступ к небольшому веб-серверу, работающему на встроенном устройстве у них дома (самым простым способом). Они будут обращаться к этому веб-серверу (работающему либо на порту 80, либо на любом настраиваемом). порт, который я могу настроить)

Интернет-соединение, которое они будут иметь дома, может иметь или не иметь публичный IP-адрес. Более того, я не могу попросить их возиться с переадресацией портов и т. Д.

Если попросить их открыть VPN-соединение перед доступом к этому веб-серверу, вы потеряете все удобство для пользователя.

Возможное решение состоит в том, что, поскольку ожидается, что клиентская база будет небольшой, я могу настроить каждый веб-сервер на уникальный номер порта (например, 3400-3500), и я использую свой собственный выделенный сервер в качестве брокера (например, поступающие запросы, чтобы сказать myserver .com на порту 3400 направляется клиенту 1, 3401 - клиенту 2 и т. д.

Проблемы: не очень элегантно, также все равно нужно будет выяснить, чтобы их домашние серверы как-то подключились к моему выделенному серверу.

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

Поскольку вы можете общаться с клиентом, вы можете свободно использовать и вид маршрутизации запросов.

P.S. Не знаю, подойдет ли OpenVPN для ваших настроек и ограничений по оборудованию.

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

Вы можете поменять местами концы подключения и вместо этого получить эти «домашние комплекты» или «домашние серверы» по телефону (вашим серверам). Это называется обратным туннелированием и может использоваться для обхода межсетевых экранов и динамических IP-адресов; и может быть выполнено с помощью стандартного SSH с открытым исходным кодом для небольшого количества серверов.

Если вы хотите узнать, как работает SSH-туннелирование, я рекомендую https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work .

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

Я все еще пытаюсь понять вашу проблему, но это очень похоже на вариант использования IOT. В Azure есть центр Интернета вещей, который позволяет устройствам отправлять и получать команды из удаленных мест. Соединение инициируется на стороне клиента, поэтому брандмауэры и NAT не прерывают соединение. Это может решить вашу проблему, однако вам нужно будет изменить устройство на стороне клиента с веб-сервера на приложение, слушающее концентратор, а затем предоставить интерфейс на стороне облака.

https://azure.microsoft.com/en-us/services/iot-hub/

Я сотрудник MS, поэтому конкретный ответ Azure. Это то, что я знаю.