1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xautlx-entdiy-nat

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_MORE.md 9.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 19:44 89179bd

Проект: введение

Программное обеспечение для доступа к внутренним сетям NAT, созданное на основе Netty, подобно Ngrok и FRP.

Рисунок 1. Доступ к развёртыванию в NAT внутренней сети.

Основная идея проекта была заимствована у Ngrok. С принципами работы и процессом можно ознакомиться в официальных материалах и публикациях в интернете.

Проект состоит из следующих компонентов:

  • entdiy-nat-common — общий код для компонентов;
  • entdiy-nat-server — серверный код;
  • entdiy-nat-client — клиентский код;
  • entdiy-nat-tester — опциональный модуль, который используется как цель тестирования для клиента при доступе через NAT. Может быть полезен при разработке и отладке;
  • devops — набор простых скриптов и конфигураций для быстрого развёртывания и запуска программного обеспечения.

Управление проектом и синхронизация обновлений с репозиториями Git

Ресурсы проекта размещены в следующих репозиториях Git:

Начало работы

Обратите внимание, что следующие команды предназначены для работы в среде Mac или Linux. Для Windows необходимо обратиться к соответствующему сценарию и адаптировать команды под свою систему. Подробные инструкции доступны в файле README.md в разделе devops.

Список функций

В настоящее время реализованы следующие функции:

  • Прозрачность TCP-протокола — доступ к сетевым службам, таким как SSH и MySQL, через протокол TCP. Это не ограничивается только этими службами, и теоретически любой сервис, использующий TCP, может быть доступен через этот механизм.
  • Прозрачность HTTP-протокола — поддержка прозрачного доступа к стандартным веб-сервисам через HTTP.
  • Управление пулом соединений — использование упрощённого пула соединений для улучшения скорости установления соединения между сервером и клиентом.
  • Механизм повторного подключения клиента — автоматическое восстановление соединения после сбоев в сети или перезапуска сервера.
  • Система аутентификации на основе клиента, секрета и токена — базовая система аутентификации для контроля доступа.
  • Поддержка SSL-сертификатов — улучшенная безопасность данных за счёт использования SSL-сертификатов (в настоящее время отключена из-за проблем с производительностью, планируется оптимизация).

План развития

Планируется реализовать следующие функции:

  • Прозрачность HTTPS-протокола — в настоящее время не рассматривается. Рекомендуется использовать обратный прокси-сервер Nginx на уровне сервиса для обеспечения прозрачности HTTPS поверх NAT.
  • Доступ к субдоменам HTTP — в настоящее время не рассматривается. Предлагается использовать обратный прокси-сервер на уровне Nginx для предоставления доступа к различным портам на основе субдоменов HTTP.
  • Контроль определения туннелей на стороне сервера — в отличие от традиционных подходов, где туннели определяются на стороне клиента, предлагается предоставить возможность централизованного управления туннелями на стороне сервера для более гибкого контроля.

История проекта

О прозрачности внутренних сетей

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

Об интеграции с устройствами IoT

Рассмотрим типичную ситуацию с подключением устройств IoT, таких как системы распознавания лиц. Различные производители предоставляют различные SDK для взаимодействия со своими устройствами. Обычно существует два основных режима доступа:

  1. В конфигурации устройства указываются IP-адрес и порт сервера, что позволяет устройству искать сервер.
  2. В конфигурации сервера указываются IP-адреса и порты устройств, что позволяет серверу находить устройства.

Оба подхода имеют свои преимущества и недостатки, и каждый производитель обычно предлагает один из этих двух режимов. Например, устройства Hikvision обычно используют второй подход.

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

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

После консультации с технической поддержкой Hikvision были предложены следующие варианты:

  • Использование портов и IP-адресов для прямого доступа к устройствам.
  • Применение платформы Hikvision для переадресации запросов.
  • Использование специализированного программного обеспечения для создания шлюза.

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

Независимо от того, какой подход выбран, возникает потребность в создании простого и эффективного решения для удалённого доступа к устройствам IoT. Это решение должно быть лёгким в управлении и обновлении, чтобы избежать проблем, связанных с толстыми клиентами.

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

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xautlx-entdiy-nat.git
git@api.gitlife.ru:oschina-mirror/xautlx-entdiy-nat.git
oschina-mirror
xautlx-entdiy-nat
xautlx-entdiy-nat
master