Dmtp内网穿透
简介
Dmtp内网穿透(Relay) 是TouchSocket Pro提供的一项强大功能,基于Dmtp协议实现安全、高效的内网穿透服务。它允许外部网络通过中继服务器访问位于内网的服务,无需复杂的路由配置或公网IP。
主要特性
- 端口映射:将内网服务端口映射到中继服务器的公网端口
- 双向通信:支持完整的TCP双向数据传输
- 连接管理:自动管理多个并发连接,支持连接状态监控
- 权限控制:支持在端口注册时进行权限验证和配置自定义
- 高性能:基于Dmtp协议,采用引用计数和内存池优化,减少内存分配
- 易于集成:插件化设计,可轻松集成到现有Dmtp应用中
应用场景
- 远程访问内网Web服务
- 物联网设备远程管理
- 开发环境临时分享
- 跨网络的服务调用
- 企业内外网服务互通
快速开始
安装
提示
Dmtp内网穿透功能需要 TouchSocketPro 商业版授权。
Install-Package TouchSocketPro.Dmtp
基本架构
Dmtp内网穿透系统由三个主要组件组成:
- 中继服务器(Relay Server):部署在有公网IP的服务器上,负责接收外部连接并转发到内网客户端
- 内网客户端(Relay Client):运行在内网环境,连接到中继服务器并注册端口映射
- 外部客户端(External Client):通过中继服务器的公网端口访问内网服务
[外部客户端] ---> [中继服务器:8889] ---> [内网客户端] ---> [内网服务:8848]
使用示例
1. 启动中继服务器
首先需要在有公网IP的服务器上启动中继服务器:
🔄 正在加载代码...
关键配置说明:
AddDmtpRelayService():注册中继服务所需的依赖服务UseDmtpRelay():启用Dmtp内网穿透功能AddDmtpRelayRegisteringPlugin:添加端口注册插件,可在此进行权限验证和配置自定义
2. 启动内网客户端
在内网环境中启动客户端,并注册端口映射:
🔄 正在加载代码...
端口映射说明:
LocalIPHost:内网服务的实际地址和端口(如127.0.0.1:8848)RemoteIPHost:中继服务器上要监听的公网地址和端口(如0.0.0.0:8889)
3. 启动内网测试服务
为了测试,我们需要在内网启动一个简单的TCP服务:
🔄 正在加载代码...
4. 测试连接
外部客户端通过中继服务器的公网端口连接到内网服务:
🔄 正在加载代码...
完整示例
🔄 正在加载代码...
性能优化
内存优化
Dmtp内网穿透采用了多项内存优化技术:
- 引用计数:使用
SharedPayload类实现Payload共享,避免重复复制 - ArrayPool:使用
ArrayPool<byte>管理临时缓冲区,减少GC压力 - 零拷贝:使用
ReadOnlySequence<byte>支持零拷贝场景
连接复用
中继服务器会自动管理连接池,复用TCP连接以减少连接建立开销。
注意事项
- 端口冲突:确保中继服务器上的端口未被占用
- 防火墙配置:确保中继服务器的公网端口对外开放
- 安全性:建议使用
VerifyToken进行身份验证,避免未授权访问 - 网络延迟:内网穿透会增加一定的网络延迟,不适合对延迟敏感的应用
- 带宽消耗:所有流量都需要经过中继服务器,注意服务器带宽限制
- 资源管理:及时关闭不再使用的中继客户端,释放服务器资源
总结
Dmtp内网穿透是一个功能强大、易于使用的内网穿透解决方案。通过简单的配置,即可实现安全、高效的内网服务暴露。结合Dmtp协议的其他功能,可以构建完整的分布式通信系统。