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

OSCHINA-MIRROR/lwch-natpass

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

Реализация

Поддержка TLS-соединений, использование протокола Protobuf для передачи данных. В качестве примера рассматривается удалённое подключение к серверу в кластере серверов.

Конфигурация сервера (10.0.1.1):

* listen: 6154       # порт прослушивания
* secret: 0123456789 # предварительно общий ключ
* log:
    dir: /opt/natpass/logs # путь
    size: 50M   # размер одного файла
    rotate: 7   # количество сохраняемых файлов
* tls:
    key: /dir/to/tls/key/file # ключ TLS
    crt: /dir/to/tls/crt/file # сертификат TLS

Клиентская конфигурация сервера (192.168.1.100):

* id: server            # идентификатор клиента
* server: 10.0.1.1:6154 # адрес сервера
* secret: 0123456789    # предварительно общий ключ, должен совпадать с ключом на сервере, иначе рукопожатие не удастся
* log:
    dir: /opt/natpass/logs # путь
    size: 50M   # размер одного файла
    rotate: 7   # количество сохраняемых файлов

Рабочая клиентская конфигурация (172.16.1.100):

* id: work              # идентификатор клиента
* server: 10.0.1.1:6154 # адрес сервера
* secret: 0123456789    # предварительно общий ключ, должен совпадать с ключом на сервере, иначе рукопожатие не удастся
* log:
    dir: /opt/natpass/logs # путь
    size: 50M   # размер одного файла
    rotate: 7   # количество сохраняемых файлов
* rules:                          # список правил для удалённых подключений может быть пустым
  - name: rdp                   # имя соединения
    target: server              # целевой идентификатор клиента
    type: shell                 # тип соединения (TCP или UDP)
    local_addr: 0.0.0.0         # локальный адрес прослушивания
    local_port: 3389            # локальный порт прослушивания

Рабочий процесс выглядит следующим образом:

  1. Клиенты в рабочей сети и домашней сети создают TLS-соединение с сервером np-svr через np-cli.
  2. Сервис np-cli отправляет пакет рукопожатия и выполняет MD5-хеширование поля secret из конфигурационного файла.
  3. Сервер np-svr ожидает пакет рукопожатия. Если ожидание превышает установленный срок, соединение считается незаконным и прерывается.
  4. Пользователь открывает терминал на рабочем компьютере с IP-адресом 172.16.1.100 и подключается к серверу кластера.
  5. На рабочем компьютере пользователь отправляет сообщение connect_request через np-cli, устанавливая тип подключения как shell.
  6. Сервер np-svr пересылает сообщение connect_request на клиентский компьютер с IP-адресом 192.168.1.100 через np-cli.
  7. Клиентский компьютер с IP-адресом 192.168.1.100 получает сообщение connect_request и создаёт процесс /bin/bash.
  8. Клиентский компьютер с IP-адресом 192.168.1.100 возвращает сообщение connect_response в результате создания соединения.
  9. Сервер np-svr перенаправляет сообщение connect_response на рабочий компьютер.
  10. Рабочий компьютер получает сообщение connect_response.
  11. Начинается передача ввода и вывода с веб-страницы.

Архитектура программного обеспечения

Архитектура

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

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

1
https://api.gitlife.ru/oschina-mirror/lwch-natpass.git
git@api.gitlife.ru:oschina-mirror/lwch-natpass.git
oschina-mirror
lwch-natpass
lwch-natpass
master