NetProxy 用户手册
目录
下载地址
产品简介
NetProxy 是一款 Windows 桌面 TCP 中继代理工具,主要用于模拟网络故障场景。它可以在客户端与服务器之间建立 TCP 连接中继,并支持灵活的数据包过滤和丢弃规则,帮助测试人员验证系统在异常情况下的健壮性。

适用场景
- 证券、银行等金融系统的故障演练
- 网络不稳定场景下的系统测试
- 分布式系统异常处理验证
- 接口容错能力测试
核心能力
- TCP 中继转发:在监听端口与目标地址之间建立双向数据转发
- 多线路管理:支持同时配置多条代理线路
- 灵活过滤:支持按方向(请求/应答)丢弃数据包
- 流量统计:实时显示各线路的流量数据
- 详细日志 :提供运行日志和数据包 Hex 日志

功能特性
1. 多线路代理
支持配置多条独立的代理线路,每条线路可以:
- 监听不同的端口
- 转发到不同的目标地址
- 配置独立的过滤规则
- 单独启用/禁用
2. 双向数据转发
每条代理线路提供完整的双向转发能力:
- C2S 方向:客户端 → 代理 → 服务端
- S2C 方向:服务端 → 代理 → 客户端
3. 数据包过滤
支持灵活的数据包丢弃规则:
- 丢弃请求:丢弃 C2S 方向的数据包
- 丢弃应答:丢弃 S2C 方向的数据包
- 最小业务包大小:小于指定大小的数据包自动跳过(用于过滤心跳等小包)
4. 实时流量统计
- 实时显示每秒传输速率(B/s, KB/s, MB/s)
- 显示累计传输总量
- 每秒自动更新
5. 详细日志记录
- 运行日志:记录连接建立、数据转发、丢弃事件
- 数据日志:记录每个数据包内容的 Hexdump
- 分级日志:支持 Trace、Debug、Info、Warn、Error 等级别
6. 连接管理
- 空闲超时断开:连接空闲 3 分钟自动关闭
- 异常处理:对端正常关闭时不再报错
- 首包数据记录:连接目标端失败时记录首包数据内容
系统要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 7 或更高版本 |
| .NET Framework | 4.6.2 或更高版本 |
| 内存 | 最低 512MB |
| 磁盘空间 | 最少 50MB |
安装与启动
1. 检查运行环境
确保已安装 .NET Framework 4.6.2 或更高版本:
- 打开「控制面板」→「程序和功能」→「查看已安装更新」
- 确认存在 .NET Framework 4.6.2 或更高版本
2. 启动程序
双击运行 NetProxy.exe 即可启动主程序。
3. 启动配置工具
双击运行 NetProxyConfig.exe 启动配置管理工具,或通过主程序的「文件」→「代理配置」菜单启动。
主程序使用说明
主界面布局
┌─────────────────────────────────────────────────────────────┐
│ NetProxy - 网络代理转发工具 │
├─────────────────────────────────────────────────────────────┤
│ [启动所有] [停止所有] │
│ │
│ ┌───┬──────────┬────────┬────────────┬────────────┬───────┐│
│ │序号│代理名称 │监听端口│目标地址 │流量统计 │处理规则││
│ ├───┼──────────┼────────┼────────────┼────────────┼───────┤│
│ │ 1 │证券 │60502 │127.0.0.1:20502│0B/s | 0B│ ││
│ │ 2 │银行 │60501 │127.0.0.1:20501│0B/s | 0B│ ││
│ └───┴──────────┴────────┴────────────┴────────────┴───────┘│
│ │
│ 选项:☑ 丢弃请求 ☑ 丢弃应答 │
│ │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ [20260813 10:00:00.000] [Info] 程序启动... ││
│ │ [20260813 10:00:00.001] [Info] 加载 2 条代理线路 ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ 文件 (F) 帮助 (H) │
└─────────────────────────────────────────────────────────────┘
控件说明
工具栏按钮
| 按钮 | 功能 | 说明 |
|---|---|---|
| 启动所有 | 启动所有启用的代理线路 | 启动后无法修改线路启用状态 |
| 停止所有 | 停止所有运行的代理线路 | 停止后可修改线路启用状态 |
代理列表
列表显示所有配置的代理线路,各列含义:
| 列名 | 说明 |
|---|---|
| 序号 | 线路顺序号 |
| 代理名称 | 线路的唯一标识名称 |
| 监听端口 | 代理监听的 TCP 端口号 |
| 目标地址 | 转发目标(格式:IP:端口) |
| 流量统计 | 实时显示「速率/累计总量」 |
| 处理规则 | 当前启用的过滤规则 |
线路状态颜色
| 颜色 | 状态 | 说明 |
|---|---|---|
| 绿色 | 运行中 | 线路正在监听和转发 |
| 灰色 | 禁用 | 线路已配置但未启用 |
| 黑色 | 已配置 | 线路已启用但未运行 |
选项面板
选中某条线路后,选项面板显示该线路的实时控制选项:
- 丢弃请求:勾选后丢弃 C2S 方向(客户端→服务端)的数据包
- 丢弃应答:勾选后丢弃 S2C 方向(服务端→客户端)的数据包
菜单说明
文件菜单
| 菜单项 | 功能 |
|---|---|
| 代理配置 | 打开配置管理工具 |
| 退出 | 关闭程序 |
帮助菜单
| 菜单项 | 功能 |
|---|---|
| 关于 | 显示软件及作者信息 |
基本操作流程
- 配置线路:启动配置工具,添加/编辑代理线路
- 启用线路:在主程序中勾选需要启用的线路
- 启动代理:点击「启动所有」按钮
- 调整规则:选中线路,勾选/取消勾选「丢弃请求」或「丢弃应答」
- 停止代理:点击「停止所有」按钮
配置工具使用说明
配置界面布局
┌──────────────────────────────────────────────────────────────────┐
│ 代理配置管理 │
├──────────────────────────────────────────────────────────────────┤
│ [添加] [编辑] [删除] [上移] [下移] [保存] [取消] │
│ │
│ ┌──┬──────┬────────┬────────────┬──────────┬──────────┬───────┐│
│ │№ │名称 │端口 │目标地址 │发送名称 │接收名称 │规则 ││
│ ├──┼──────┼────────┼────────────┼──────────┼──────────┼───────┤│
│ │ 1│证券 │60502 │127.0.0.1:20502│银行请求│证券应答 │ ││
│ │ 2│银行 │60501 │127.0.0.1:20501│证券请求│银行应答 │ ││
│ └──┴──────┴────────┴────────────┴──────────┴──────────┴───────┘│
│ │
│ 最小业务包大小:75 │
│ ☑ 启用 │
└──────────────────────────────────────────────────────────────────┘
按钮功能
| 按钮 | 功能 | 快捷键 |
|---|---|---|
| 添加 | 添加新的代理线路 | - |
| 编辑 | 编辑选中的线路配置 | - |
| 删除 | 删除选中的线路配置 | - |
| 上移 | 将选中线路向上移动一位 | - |
| 下移 | 将选中线路向下移动一位 | - |
| 保存 | 保存所有配置到文件 | Ctrl+S |
| 取消 | 放弃修改并关闭 | - |
线路编辑对话框
点击「添加」或「编辑」按钮后弹出:
| 字段 | 说明 | 示例 |
|---|---|---|
| 名称 | 线路唯一标识(必填) | 证券、银行 |
| 监听端口 | 代理监听端口(1-65535) | 60502 |
| 目标地址 | 转发目标(格式:IP:端口) | 127.0.0.1:20502 |
| 发送名称 | C2S 方向的数据包标识 | 银行请求 |
| 接收名称 | S2C 方向的数据包标识 | 证券应答 |
| 规则 | 过滤规则(逗号分隔) | 丢弃请求,丢弃应答 |
| 最小业务包大小 | 小于此值的数据包不参与过滤 | 75 |
| 启用 | 是否启用该线路 | ☑ |
配置保存
配置工具会将配置保存到 NetProxy.exe.config 文件中,格式如下:
xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="proxy" type="NetProxyKit.Config.ProxyConfigSection, NetProxyKit"/>
</configSections>
<proxy timeout="10">
<proxies>
<add name="证券"
proxyPort="60502"
target="127.0.0.1:20502"
sendName="银行请求"
recvName="证券应答"
rules=""
enabled="true"
minBizPackSize="75"/>
<add name="银行"
proxyPort="60501"
target="127.0.0.1:20501"
sendName="证券请求"
recvName="银行应答"
rules=""
enabled="true"
minBizPackSize="75"/>
</proxies>
</proxy>
</configuration>
配置项详解
基础配置项
名称 (name)
- 类型:字符串
- 必填:是
- 说明:线路的唯一标识符,用于区分不同的代理线路
- 示例 :
证券、银行、订单线路
监听端口 (proxyPort)
- 类型:整数
- 范围:1 - 65535
- 说明:代理程序监听的 TCP 端口号
- 注意:不同线路不能使用相同的端口号
- 示例 :
60502
目标地址 (target)
- 类型:字符串
- 格式 :
IP 地址:端口或主机名:端口 - 说明:代理转发数据的实际目标地址
- 示例 :
127.0.0.1:20502、server.cmschina.com.cn:8080
高级配置项
发送名称 (sendName)
- 类型:字符串
- 必填:否
- 说明:C2S 方向(客户端→服务端)数据包在日志中的显示名称
- 示例 :
银行请求、订单
接收名称 (recvName)
- 类型:字符串
- 必填:否
- 说明:S2C 方向(服务端→客户端)数据包在日志中的显示名称
- 示例 :
证券应答、响应
规则 (rules)
- 类型:字符串
- 格式:逗号分隔的规则列表
- 可选值 :
丢弃请求:丢弃 C2S 方向的数据包丢弃应答:丢弃 S2C 方向的数据包
- 示例 :
- 空:不丢弃任何数据
丢弃请求:只丢弃请求丢弃应答:只丢弃应答丢弃请求,丢弃应答:双向都丢弃
启用 (enabled)
- 类型:布尔值
- 可选值 :
true或false - 说明:是否启用该线路,未启用的线路启动代理时不会运行
最小业务包大小 (minBizPackSize)
- 类型:整数
- 范围:≥ 0
- 说明 :
- 值为 0 时不启用此功能
- 值大于 0 时,小于此字节数的数据包被视为「小包」
- 小包不会被记录日志,也不会被丢弃规则处理
- 用途:过滤心跳包、Keep-Alive 等小包,避免干扰测试
- 示例 :
75
故障模拟场景
场景 1:模拟证券请求丢失
目标:模拟客户端发送的证券请求在传输过程中丢失
配置:
线路名称:证券
监听端口:60502
目标地址:127.0.0.1:20502
发送名称:银行请求
接收名称:证券应答
规则:丢弃请求
最小业务包大小:75
操作步骤:
- 启动配置工具,配置上述线路
- 在主程序中启用「证券」线路
- 点击「启动所有」
- 选中「证券」线路,勾选「丢弃请求」
- 此时客户端发送的请求将被丢弃,服务端收不到请求
场景 2:模拟银行应答丢失
目标:模拟服务端返回的银行应答在传输过程中丢失
配置:
线路名称:银行
监听端口:60501
目标地址:127.0.0.1:20501
发送名称:证券请求
接收名称:银行应答
规则:丢弃应答
最小业务包大小:75
操作步骤:
- 启动配置工具,配置上述线路
- 在主程序中启用「银行」线路
- 点击「启动所有」
- 选中「银行」线路,勾选「丢弃应答」
- 此时服务端返回的应答将被丢弃,客户端收不到响应
场景 3:双向丢包
目标:模拟双向网络故障
配置:
规则:丢弃请求,丢弃应答
操作步骤:
- 同时勾选「丢弃请求」和「丢弃应答」
- 双向数据都将被丢弃,连接完全中断
场景 4:过滤小包
目标:忽略心跳包,只处理业务数据
配置:
最小业务包大小:75
说明:
- 小于 75 字节的数据包(如心跳包)不会被记录日志
- 小包也不会被丢弃规则处理,正常转发
- 业务数据包(通常大于 75 字节)正常参与过滤
日志说明
日志文件位置
| 日志类型 | 文件路径 |
|---|---|
| 主程序运行日志 | log/NetProxy_yyyyMMdd.log |
| 配置工具日志 | log/NetProxyConfig_yyyyMMdd.log |
| 数据包内容日志 | log/data_yyyyMMdd.log |
日志级别
| 级别 | 颜色 | 说明 |
|---|---|---|
| Trace | 灰色 | 追踪级别,最详细的调试信息 |
| Debug | 蓝色 | 调试信息 |
| Info | 黑色 | 一般信息 |
| Data | 紫色 | 数据相关 |
| Warn | 橙色 | 警告信息 |
| Error | 红色 | 错误信息 |
日志格式
[yyyyMMdd HH:mm:ss.fff] [级别] [进程 ID,线程 ID] 消息内容
典型日志示例
启动日志
[20260813 10:00:00.000] [Info] [12345,10] ========================================
[20260813 10:00:00.001] [Info] [12345,10] NetProxy - 网络代理转发工具
[20260813 10:00:00.002] [Info] [12345,10] 作者:林武
[20260813 10:00:00.003] [Info] [12345,10] ========================================
[20260813 10:00:00.010] [Info] [12345,10] 加载 2 条代理线路
连接日志
[20260813 10:00:01.000] [Info] [12345,11] [证券] 代理启动:监听端口 60502, 目标 127.0.0.1:20502
[20260813 10:00:05.100] [Trace] [12345,12] [证券,1] 建立新连接:127.0.0.1:54321
[20260813 10:00:05.150] [Trace] [12345,12] [证券,1] 连接建立:客户端 -> 127.0.0.1:20502
数据转发日志
[20260813 10:00:06.000] [Info] [12345,12] [证券,1] [C2S] [128B] 接收到银行请求
[20260813 10:00:06.001] [Info] [12345,12] [证券,1] [C2S] [128B] 转发银行请求
[20260813 10:00:06.050] [Info] [12345,12] [证券,1] [S2C] [256B] 接收到证券应答
[20260813 10:00:06.051] [Info] [12345,12] [证券,1] [S2C] [256B] 转发证券应答
丢弃日志
[20260813 10:00:07.000] [Info] [12345,12] [证券,1] [C2S] [128B] DROP 丢弃银行请求
关闭日志
[20260813 10:03:07.000] [Warn] [12345,12] [证券,1] [C2S] 空闲超时(3 分钟),关闭连接
[20260813 10:03:07.001] [Trace] [12345,12] [证券,1] 连接关闭
数据包内容日志
数据包内容日志以 Hexdump 格式记录每个数据包的内容:
[2026-08-13 10:00:06.000] [证券,1] [C2S] [128B] === 银行请求 ===
00000000 48 54 54 50 2F 31 2E 31 20 32 30 30 20 4F 4B 0D |HTTP/1.1 200 OK.|
00000010 0A 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 74 |.Content-Type: t|
00000020 65 78 74 2F 70 6C 61 69 6E 0D 0A 0D 0A |ext/plain....|
=== 数据结束 ===
常见问题
Q1: 启动代理时报「端口已被占用」
原因:指定的监听端口已被其他程序占用
解决方法:
- 使用
netstat -ano | findstr :端口号查看占用端口的进程 - 关闭占用程序或修改代理配置的端口号
Q2: 连接无法建立
可能原因:
- 目标地址不可达
- 目标服务未启动
- 防火墙阻止连接
排查步骤:
- 检查目标服务是否正常运行
- 使用
telnet 目标 IP 端口测试连通性 - 检查防火墙设置
Q3: 数据包没有被丢弃
可能原因:
- 最小业务包大小设置过大,数据包被视为小包
- 规则配置未保存
解决方法:
- 检查
minBizPackSize设置,确保小于数据包大小 - 在配置工具中修改规则后点击「保存」
Q4: 如何查看完整的数据包内容
方法:
- 查看
log/data_yyyyMMdd.log文件 - 该文件记录所有数据包的 Hexdump 内容
Q5: 代理启动后没有流量统计
可能原因:
- 没有客户端连接
- 客户端没有发送数据
解决方法:
- 确认客户端已连接到代理端口
- 确认客户端正在发送数据
Q6: 配置工具打不开
可能原因:
- 配置文件损坏
- .NET Framework 版本不匹配
解决方法:
- 检查
NetProxy.exe.config文件格式是否正确 - 确认已安装 .NET Framework 4.6.2 或更高版本
附录
A. 配置文件完整示例
xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="proxy" type="NetProxyKit.Config.ProxyConfigSection, NetProxyKit"/>
</configSections>
<proxy timeout="10">
<proxies>
<!-- 证券线路 -->
<add name="证券"
proxyPort="60502"
target="127.0.0.1:20502"
sendName="银行请求"
recvName="证券应答"
rules=""
enabled="true"
minBizPackSize="75"/>
<!-- 银行线路 -->
<add name="银行"
proxyPort="60501"
target="127.0.0.1:20501"
sendName="证券请求"
recvName="银行应答"
rules=""
enabled="true"
minBizPackSize="75"/>
</proxies>
</proxy>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>
</configuration>
B. 快捷操作指南
| 操作 | 步骤 |
|---|---|
| 快速启用线路 | 主程序勾选线路 → 点击「启动所有」 |
| 快速禁用线路 | 点击「停止所有」→ 取消勾选线路 |
| 实时调整规则 | 选中线路 → 勾选/取消「丢弃请求」或「丢弃应答」 |
| 查看数据内容 | 打开 log/data_yyyyMMdd.log 文件 |
| 清空日志 | 主程序菜单「文件」→「清空日志」 |
文档版本:1.0.0
最后更新:2026 年 8 月 13 日