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

OSCHINA-MIRROR/stlswm-transponder

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

Golang внутренний сетевой инструмент для обхода защиты V2.0 (поддерживает Windows и Linux)

Проект

V2 версия переписала ядро кода, что позволило значительно повысить скорость передачи данных.

Инструмент для внутреннего сетевого обхода защиты Transponder состоит из двух частей: внешнего сервера и внутреннего сервера.

С помощью этого инструмента внутренний сервер может предоставлять услуги в интернете без публичного IP-адреса, что подходит для разработки и отладки приложений с обратными вызовами, таких как публичные аккаунты WeChat или интерфейсы API платёжной системы Alipay.

Этот инструмент поддерживает операционные системы Windows и Linux.

В этом проекте используется режим P2P-ретрансляции без UDP-пробивки отверстий, который подходит для HTTP-туннелирования через внутреннюю сеть.

Ссылка на источник: https://blog.csdn.net/yunlianglinfeng/article/details/54018113

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

golang

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

  1. Внешний сервер отслеживает порт 9090 (по умолчанию, необходимо добавить правила входящего доступа в брандмауэр) для предоставления услуг внутреннему серверу и временно сохраняет соединения для обратного подключения во внутреннем пуле соединений.

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

  3. Путь соединения: внешний nginx → внешний сокет Unix → внешний 9090 → внутреннее соединение → внутренний 80. Таким образом, успешно устанавливается соединение между внешним портом 80 и внутренним портом 80 через внешний порт 9090 сервера.

Внутренний сервер будет проверять количество подключений к внешнему серверу каждую секунду. Если их меньше 10, он отправит пакет подключений и будет поддерживать соединение с внешним сервером с помощью пакетов ping.

Рабочий процесс

Рабочий процесс

  1. Внутренний сервер устанавливает соединения с портом 9090 внешнего сервера партиями и авторизуется.

  2. Внешний сервис сокета Unix (или порт 8080) принимает внешние сетевые запросы и выбирает соединение из пула соединений для пересылки, отправляя команду пересылки.

  3. Внутренний сервер получает команду пересылки и отвечает командой ожидания пересылки.

  4. Внешний сервер получает запрос ожидания пересылки и начинает передачу данных, открывая данные.

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

Инструкция по установке

Для пользователей golang: следуйте инструкциям здесь. Для тех, кто не знаком с golang, можете пропустить этот раздел.

  1. Сначала скачайте анализатор конфигурации (установите его в каталог GOPATH/src).

git clone https://gitee.com/stlswm/ConfigAdapter.git

  1. Затем скачайте этот проект (установите в каталог GOPATH/src).

git clone https://gitee.com/stlswm/transponder.git

  1. Ола!

Конфигурация

  1. Скачайте этот проект или загрузите исполняемый файл (файл находится в каталоге bin).

  2. Внешний сервер

    Конфигурационный файл:

     {
         "InnerServerAddress": "tcp://0.0.0.0:9090",//Адрес внутреннего сервера, после получения уведомления от внешнего сервера внутренний сервер инициирует соединение для обработки клиентских запросов.
         "OuterServerAddress": "tcp://0.0.0.0:8080",//адрес внешнего сервиса, используется для предоставления сервисов клиентам.
         "AuthKey":"123456"//код авторизации соединения (внутренний и внешний должны быть одинаковыми, длина не должна превышать 32 символа).
     }
  3. Внутренний сервер

    Конфигурационный файл:

     {
         "RegisterAddress": "tcp://ip внешнего сервера:9090",//IP-адрес внешнего сервера для внутреннего сервера (здесь заполните InnerServerAddress внешнего сервера).
         "ProxyAddress": "tcp://127.0.0.1:80",//целевой локальный сервис.
         "AuthKey":"123456",//код авторизации соединения (должен быть одинаковым для внутреннего и внешнего, не более 32 символов).
         "MaxFreeConn": 50//максимальное количество свободных соединений, при большом количестве одновременных запросов это значение можно увеличить.
     }
  4. Запуск

    4.1 Сначала запустите внешний сервер.

    Перед запуском убедитесь, что конфигурационный файл outer.config.json и исполняемый файл находятся в одном каталоге.

    Linux: ./outer_server (запустить в фоновом режиме:nohup ./outer_server >> /tmp/transponder_outer.log 2>&1 &)

    Windows: запустить ./outer_server.exe через командную строку.

    4.2 Затем запустите внутренний сервер.

    Перед запуском убедитесь, что конфигурационный файл inner.config.json и исполняемый файл находятся в одном каталоге.

    Linux: ./inner_server (запустить в фоновом режиме:nohup ./inner_server >> /tmp/transponder_inner.log 2>&1 &)

    Windows: запустить ./inner_server.exe через командную строку.

Настройка nginx

Можно использовать nginx для настройки переадресации, и также можно реализовать многосерверную конфигурацию.

Рекомендуется использовать сокеты Unix в сетевых настройках Linux для ускорения переадресации и экономии одного порта.

Windows может использовать только переадресацию портов.

server {
	listen 80;
	server_name  www.abc.com;
 
	access_log  /var/log/www.abc.com.access.log;
	error_log  /var/log/www.abc.com.error.log;
	#root   html;
	#index  index.html index.htm index.php;
 
	#send request to transponderouter.socket
	location / {
		proxy_pass http://unix:/var/run/transponderouter.sock:/;
		
		#proxy settings
		proxy_redirect     off;
		proxy_set_header   Host             $host;
		proxy_set_header   X-Real-IP        $remote_addr;
		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
		proxy_max_temp_file_size 0;
		proxy_connect_timeout      90;
		proxy_send_timeout         90;
		proxy_read_timeout         90;
		proxy_buffer_size          4k;
		proxy_buffers              4 32k;
		proxy_busy_buffers_size    64k;
		proxy_temp_file_write_size 64k;
   }
}

Вклад

  1. Fork этого проекта.
  2. Создайте ветку Feat_xxx.
  3. Отправьте код.
  4. Создайте Pull Request.

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

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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