切换主题
🎯 TCP 规则
TCP 规则定义「什么报文命中、命中后如何处理」。管理后台「TCP 代理 → 规则」页面进行配置。
规则结构
| 字段 | 说明 |
|---|---|
| 名称 | 规则名称 |
| 方向 | request(客户端→上游)/ response(上游→客户端);空表示双向 |
| 监听器 | 规则生效的监听器集合;空 = 应用到所有监听器 |
| 匹配条件 | 基于解析字段的条件列表 |
| 动作 | proxy / mock / drop |
| 延迟 | 模拟延迟(毫秒) |
| 录制 | 是否录制该消息 |
| 关闭 | drop 时是否直接关闭连接 |
| 优先级 | 数值越小越优先 |
匹配流程
- 按优先级(越小越优先)依次匹配,命中即执行动作
- 未命中任何规则时默认透传到上游
匹配条件
匹配基于 Codec 解析出的字段(见 协议 Codec):
| op | 说明 | 示例 |
|---|---|---|
eq | 等于 | field: cmd, op: eq, value: "SET" |
ne | 不等于 | field: cmd, op: ne, value: "QUIT" |
contains | 包含 | field: body, op: contains, value: "error" |
prefix | 前缀匹配 | field: orderNo, op: prefix, value: "order-" |
suffix | 后缀匹配 | field: type, op: suffix, value: ".json" |
regex | 正则匹配 | field: body, op: regex, value: "^\\d{6}$" |
exists | 字段是否存在 | field: userId, op: exists |
多个匹配条件同时满足才命中(AND 语义)。
动作类型
| 动作 | 说明 |
|---|---|
proxy | 透传到上游(可同时录制报文) |
mock | 返回 mock 数据(支持模板),不转发到上游 |
drop | 丢弃该报文(close: true 时直接关闭连接) |
mock 响应
action.mock.data 支持模板渲染:
yaml
action:
type: mock
mock:
data: "+OK\r\n"1
2
3
4
2
3
4
可用模板变量:
{{ .fields.xxx }}:引用解析字段{{ .session.id }}:引用会话 ID- 内置函数同 HTTP 模板函数(
{{ uuid }}、{{ now }}等)
配置示例
示例 1:Redis SET 命令 Mock
yaml
name: redis-set-mock
enabled: true
priority: 1
direction: request
listeners:
- redis-demo
match:
- field: cmd
op: eq
value: "SET"
action:
type: mock
mock:
data: "+OK\r\n"
record: false
close: false1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
示例 2:文本协议录制
yaml
name: 文本协议录制
enabled: true
priority: 0
direction: request
listeners:
- text-demo
match: []
action:
type: proxy
record: true
close: false1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
录制与抓包
录制
规则 action.record: true 时,命中消息被录制到录制库。管理后台「TCP 代理 → 录制」页面可查询、删除。
- 录制内容:会话 ID、监听器、方向、规则、原始报文(hex)、解析字段
- 上限:
tcp.maxRecords(默认 10000),超出自动淘汰最旧记录
抓包
管理后台「TCP 代理 → 抓包」页面支持:
- 实时抓包:开启后实时推送报文(SSE),不阻断转发
- 临时抓取:页面内实时查看,关闭即停止
- 持久化:将抓取内容保存到抓包库
- 抓包记录保留上限:
tcp.maxCaptures(见 配置详解)
相关 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/tcp/rules | 规则列表(按监听器归属过滤) |
| POST | /api/tcp/rules | 新建规则 |
| PUT | /api/tcp/rules/:id | 更新规则 |
| DELETE | /api/tcp/rules/:id | 删除规则 |
| GET | /api/tcp/records | 录制列表 |
| DELETE | /api/tcp/records/:id | 删除单条录制 |
| DELETE | /api/tcp/records | 清空录制 |
| GET | /api/tcp/captures | 抓包列表 |
| GET | /api/tcp/captures/stream | 抓包实时流 |
| GET | /api/tcp/captures/temp/stream | 临时抓包实时流 |
| GET | /api/tcp/sessions | 会话列表 |