5

.NET + SignalR 的反向代理 websocket/http 数据隧道

 11 months ago
source link: https://www.cnblogs.com/shanyou/p/17407937.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

.NET + SignalR 的反向代理 websocket/http 数据隧道

开源项目TuToDataTunnel: https://github.com/viordash/TuToDataTunnel,这个项目可以满足以下几个需求:

  1. 使用一个公网 IP 地址和一个 tcp 端口,默认端口为 80 http。

  1. Websocket 或 http 隧道传输、性能或可访问性。理想情况下,将自动选择最佳可用交换协议。

  1. 同时通过隧道传输多个 TCP 和 udp 套接字。

  1. 可通过启动参数配置的跨平台控制台应用程序

image

整个解决方案是 两个应用程序TutoProxy.Server和TutoProxy.Client:

TutoProxy.Server应用程序是用于隧道客户端和tcp/udp终端客户端的入站服务器,部署在公网上。它的启动参数是:

  • <host>,服务器的地址,例如 http://200.100.10.1:8088

  • --tcp <tcp>,侦听的 TCP 端口列表,例如 --tcp=80,81,443,8000-8100。(可选)前提是存在 --udp 选项。

  • --udp <udp>,侦听的 UDP 端口列表,例如 --udp=700-900,65500。(可选)前提是存在 --tcp 选项。

  • --客户端<客户端>允许客户端的可选列表,例如 --client=Client1,Client2 如果省略此参数,则不会对连接的客户端进行访问检查

例如,用于启动大约 50 个 TCP/UDP 端口到三个客户端的输入隧道的行如下所示:

TutoProxy.Server http://200.100.10.1:8088 --tcp=3389,8071-8073,10000-10010,20000-20010 --udp=5000-5010,7000-7010 --clients=Client0Linux,ClientSecLinux,Client3Win

TutoProxy.Client应用程序是一个出口隧道客户端。

它的启动参数是:

  • <server>,TutoProxy.Server服务器的地址,例如 http://200.100.10.1:8088

  • <sendto>,数据目标的 IP,例如 127.0.0.1

  • --id <id>, 客户端 ID,例如 --id=Client1

  • --tcp <tcp>,TCP 端口列表,例如 --tcp=80,81,443,8000-8100。(可选)前提是存在 --udp 选项。

  • --udp <udp>,UDP 端口列表,例如 --udp=700-900.65500。(可选)前提是存在 --tcp 选项。

例如,启动 5 个 tcp 和 3 个 udp 端口的输出隧道的行将如下所示:

TutoProxy.Client http://200.100.10.1:8088 127.0.0.1 --tcp=8071,10000,20004-20006 --udp=7000-7002 --id= Client0Linux.

重要的是要考虑到不同TutoProxy.Client的端口不应该重叠,即每个客户端提供一组唯一的套接字/端口。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK