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

OSCHINA-MIRROR/tompeppa-fastnat

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

FAST NAT: протокол для проникновения в локальную сеть

FAST NAT — это расширенная версия WeNAT, которая поддерживает такие протоколы, как HTTP, TCP, UDP и WebSocket.

Проще говоря, FAST NAT позволяет назначить компьютеру из локальной сети публичный IP-адрес и порт. Например: 123.1.1.1:8888 -> 192.168.1.123:3306.

Когда сервер получает данные на порт 8888, он перенаправляет их на порт 3306 компьютера из локальной сети. Это и есть проникновение через сервер. В отличие от прямого соединения P2P, сервер выступает в роли посредника.

На заметку

Также можно разработать индивидуальное решение на основе P2P. Оно подойдёт для умного дома или сетевого хранилища (NAS) и позволит передавать файлы и управлять устройствами без участия сервера.

Контакты: QQ: 599194993; e-mail: newpanjing@icloud.com.

Онлайн-демоверсия 2.0

На основе этого решения мы разработали новую версию клиента для проникновения в локальную сеть. Весь исходный код доступен для покупки. Связаться с нами можно по QQ: 599194993.

Скачать клиент: https://nat.72wo.com

Поддерживаются операционные системы Windows, Linux, macOS, Raspberry Pi и командная строка.

Поддерживаемые протоколы

TCP, UDP, HTTP, HTTPS, WebSocket.

Сценарии использования

  • Публикация локального веб-сайта.
  • Удалённый доступ к рабочему столу.
  • Доступ к SSH на локальном сервере.
  • Подключение к MySQL на локальном компьютере.
  • Соединение с Redis на локальном устройстве.
  • Взаимодействие с MongoDB на локальном хосте.

Контакты: Группа QQ: 524948153; E-mail: newpanjing@icloud.com.

Язык разработки

Сервер и веб-сайт написаны на node.js, а клиент — на nw.js и node.js.

Протокол TCP и его процесс

Схема процесса

Процесс работы прокси для внутренней и внешней сети

  1. Внутренняя и внешняя сеть устанавливают канал протокола для активного подключения.
  2. Клиент из внешней сети подключается к серверу и получает идентификатор. Сервер сохраняет этот идентификатор.
  3. Сервер уведомляет клиента из внутренней сети о полученном идентификаторе. Клиент инициирует подключение.
  4. Клиент из внутренней сети подключается к прокси-серверу.
  5. Клиент из внутренней сети соединяется с сервером и передаёт идентификатор. Сервер связывает идентификатор с клиентом из внешней сети.
  6. Прокси-сервер сопоставляет сокеты внутренней и внешней сетей.

Обработка ошибок и разрывов соединения

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

Интерфейс TCP

Типы протоколов

Протокол представлен в виде строки JSON.

Безопасность

При первом подключении к серверу требуется предоставить токен пользователя. После проверки подлинности сервер открывает два порта для последующего использования. В дальнейшем проверка не проводится. Хотя это создаёт риски безопасности, распространённые приложения TCP, такие как MySQL, MongoDB и Redis, имеют механизмы защиты на уровне пользователей.

Типы протоколов

Тип
TCP
UDP
HTTP
WebSocket

Подключение к коммуникационному серверу

После успешного подключения к порту 8888 на коммуникационном сервере будет отправлен ответ со следующей информацией:

Поле Тип Описание
id string(8) Идентификатор текущего сеанса
outId string(8) Идентификатор сеанса внешней сети
intPort int(5) Порт для подключения к внутренней сети (от 30000 до 65535)
outPort int(5) Порт внешней сети
command string Команда операции
protocol string [Тип протокола](#Типы протоколов)

Пример ответа:

{
  id: 'CucfFpk7',
  intPort: 61289,
  outPort: 59918,
  command: 'start_proxy',
  outId: 'GpNYO5KW'
}

Инициация подключения к серверу

Получив ответ от сервера, необходимо установить TCP-соединение на внутреннем порту и отправить идентификатор внешней сети. Первый пакет данных представляет собой пакет протокола, а последующие пакеты являются обычными пересылаемыми данными.

Поле Тип Описание
outId string(8) Идентификатор внешней сети

Пример запроса:

{
  outId: 'GpNYO5KW'
}

Комментарии ( 0 )

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

Введение

Всепроникающий инструмент для проникновения во внутреннюю сеть протокола, умный дом, поддерживает TCP, UDP, HTTP. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/tompeppa-fastnat.git
git@api.gitlife.ru:oschina-mirror/tompeppa-fastnat.git
oschina-mirror
tompeppa-fastnat
tompeppa-fastnat
master