V2 версия переписала ядро кода, что позволило значительно повысить скорость передачи данных.
Инструмент для внутреннего сетевого обхода защиты Transponder состоит из двух частей: внешнего сервера и внутреннего сервера.
С помощью этого инструмента внутренний сервер может предоставлять услуги в интернете без публичного IP-адреса, что подходит для разработки и отладки приложений с обратными вызовами, таких как публичные аккаунты WeChat или интерфейсы API платёжной системы Alipay.
Этот инструмент поддерживает операционные системы Windows и Linux.
В этом проекте используется режим P2P-ретрансляции без UDP-пробивки отверстий, который подходит для HTTP-туннелирования через внутреннюю сеть.
Ссылка на источник: https://blog.csdn.net/yunlianglinfeng/article/details/54018113
golang
Внешний сервер отслеживает порт 9090 (по умолчанию, необходимо добавить правила входящего доступа в брандмауэр) для предоставления услуг внутреннему серверу и временно сохраняет соединения для обратного подключения во внутреннем пуле соединений.
Внешний сервер использует сокеты Unix для предоставления внешних услуг (или отслеживает порт 8080, необходимо добавить правила входящего доступа в брандмауэр), чтобы принимать запросы, перенаправленные nginx (также можно напрямую отслеживать порт).
Путь соединения: внешний nginx → внешний сокет Unix → внешний 9090 → внутреннее соединение → внутренний 80. Таким образом, успешно устанавливается соединение между внешним портом 80 и внутренним портом 80 через внешний порт 9090 сервера.
Внутренний сервер будет проверять количество подключений к внешнему серверу каждую секунду. Если их меньше 10, он отправит пакет подключений и будет поддерживать соединение с внешним сервером с помощью пакетов ping.
Внутренний сервер устанавливает соединения с портом 9090 внешнего сервера партиями и авторизуется.
Внешний сервис сокета Unix (или порт 8080) принимает внешние сетевые запросы и выбирает соединение из пула соединений для пересылки, отправляя команду пересылки.
Внутренний сервер получает команду пересылки и отвечает командой ожидания пересылки.
Внешний сервер получает запрос ожидания пересылки и начинает передачу данных, открывая данные.
После завершения передачи данных внутренний сервер освобождает ресурсы и закрывает соединение, а внешний сервер также освобождает ресурсы и закрывает соединение.
Для пользователей golang: следуйте инструкциям здесь. Для тех, кто не знаком с golang, можете пропустить этот раздел.
git clone https://gitee.com/stlswm/ConfigAdapter.git
git clone https://gitee.com/stlswm/transponder.git
Скачайте этот проект или загрузите исполняемый файл (файл находится в каталоге bin).
Внешний сервер
Конфигурационный файл:
{
"InnerServerAddress": "tcp://0.0.0.0:9090",//Адрес внутреннего сервера, после получения уведомления от внешнего сервера внутренний сервер инициирует соединение для обработки клиентских запросов.
"OuterServerAddress": "tcp://0.0.0.0:8080",//адрес внешнего сервиса, используется для предоставления сервисов клиентам.
"AuthKey":"123456"//код авторизации соединения (внутренний и внешний должны быть одинаковыми, длина не должна превышать 32 символа).
}
Внутренний сервер
Конфигурационный файл:
{
"RegisterAddress": "tcp://ip внешнего сервера:9090",//IP-адрес внешнего сервера для внутреннего сервера (здесь заполните InnerServerAddress внешнего сервера).
"ProxyAddress": "tcp://127.0.0.1:80",//целевой локальный сервис.
"AuthKey":"123456",//код авторизации соединения (должен быть одинаковым для внутреннего и внешнего, не более 32 символов).
"MaxFreeConn": 50//максимальное количество свободных соединений, при большом количестве одновременных запросов это значение можно увеличить.
}
Запуск
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 для настройки переадресации, и также можно реализовать многосерверную конфигурацию.
Рекомендуется использовать сокеты 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;
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )