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

OSCHINA-MIRROR/matrixy-java-port-forwarding

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

Перенос данных по TCP-порту через Java

Через сервер можно переслать пакеты данных по протоколу TCP с одного хоста внутри сети на другой, расположенный в любой точке мира. Сервер выступает посредником между клиентом и хостом.

Перенос данных через порт может быть полезен для предоставления услуг хостами с динамическими IP-адресами или без прав управления сетью. Шифрование данных при передаче позволяет обойти запрет маршрутизатора на определённые порты и протоколы.

Описание модулей

  • Хост — компьютер, который нуждается в услугах переадресации.
  • Сервер — предоставляет услуги переадресации данных.
  • Клиент — любое устройство.

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

Commander (сервер)

  • Встроенный SpringBOOT обеспечивает управление хостом и настройку переадресации портов. По умолчанию доступен по адресу http://serverip:8888.
  • Использует базу данных sqlite.
  • Слушает запросы на порту ${server.command.port} и отправляет тестовые пакеты и команды на хост.
  • На порту ${server.forward.port} слушает команды переадресации и после их получения соединяет хост с указанным портом, а затем соединяет этот порт с сервером, обеспечивая передачу данных между хостом и клиентом.

Messenger (хост)

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

Настройка

Принцип работы

Предположим, что нужно открыть 80-й порт хоста в интернете. Для этого используется 2222-й порт сервера. Процесс выглядит следующим образом:

Принцип работы

Быстрое начало работы

  1. Измените настройки в конфигурационных файлах обоих модулей, указав необходимые порты и адреса серверов.
  2. Соберите проект с помощью Maven, выполнив команду mvn package. В каталоге target появятся файлы original-commander-1.0-SNAPSHOT.jar (для сервера) и messenger-1.0-SNAPSHOT.jar (для хоста).
  3. Запустите сервер с помощью команды java -jar original-commander-1.0-SNAPSHOT.jar.
  4. Запустите хост, используя команду java -jar messenger-1.0-SNAPSHOT.jar, или запустите его в фоновом режиме с помощью javaw -jar messenger-1.0-SNAPSHOT.jar.
  5. Войдите на сервер по адресу http://serverip:8888 с учётными данными администратора (имя пользователя и пароль — admin и 123456) для управления переадресацией портов хоста.
  6. Не забудьте изменить пароль администратора после входа.

Частые проблемы

  1. Если сервер использует IPv6, порт может автоматически привязываться к IPv6-адресу, что затрудняет подключение хоста. Проверьте, правильно ли отображается адрес порта с помощью команды netstat -anop|grep LIST|grep java. Адрес должен выглядеть как 0.0.0.0:12121. Если нет, попробуйте отключить IPv6.

  2. На облачных серверах, таких как Alibaba Cloud ECS, могут быть ограничения на использование портов. Проверьте доступность порта с помощью команд telnet localhost 12121 на сервере и telnet ${server.addr} 12121 локально, чтобы убедиться в отсутствии ограничений.

  3. На Ubuntu Server можно разрешить доступ к определённому порту с помощью команды ufw allow 12121/tcp.

Структура пакета команд

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

  • Заголовок протокола FA FA FA.
  • Длина зашифрованных данных 00 00 00 00.
  • Идентификатор хоста 00 00 00 00.
  • Команда 00 00, где первые два бита указывают на тип шифрования (DES), а следующие 14 бит представляют саму команду.
  • Зашифрованные данные.

Структура пересылаемого пакета данных

Пересылаемый пакет данных включает:

  • Заголовок протокола FA FA FA.
  • Длину пакета 00 00 00 00.
  • Зашифрованные данные.

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

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

Введение

Переадресация портов внутренней сети. Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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