切换主题
🎯 UDP 规则
UDP 规则与 TCP 规则 共用同一张规则表(tcpRules),结构与匹配逻辑一致。管理后台「UDP 代理 → 规则」页面进行配置。
规则结构
yaml
tcpRules:
- id: 1
name: coap-get-mock
enabled: true
priority: 1
direction: request # request / response;空表示双向
listeners: # 限定 UDP 监听器
- coap-demo
match: # 基于 CoAP 解析字段匹配
- field: method
op: prefix
value: "0.01"
action:
type: mock
mock:
data: "" # mock 响应(CoAP 报文,见下)
record: true
close: false1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| 字段 | 说明 |
|---|---|
| 名称 | 规则名称 |
| 方向 | request(客户端→上游)/ response(上游→客户端);空表示双向 |
| 监听器 | 规则生效的 UDP 监听器集合;空 = 应用到所有监听器 |
| 匹配条件 | 基于 CoAP 解析字段(method / uriPath / uriQuery / type 等) |
| 动作 | proxy / mock / drop |
| 录制 | 是否录制该报文 |
| 优先级 | 数值越小越优先 |
匹配条件示例
CoAP 报文自动解析为字段(见 监听器与 CoAP),可直接用于匹配:
yaml
# 匹配 GET 方法
match:
- field: method
op: prefix
value: "0.01"
# 匹配特定资源路径
match:
- field: uriPath
op: eq
value: "sensors/temp"
# 匹配查询参数
match:
- field: uriQuery
op: contains
value: "unit=c"
# 匹配响应码(response 方向)
match:
- field: method
op: eq
value: "2.05 Content"1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
动作类型
| 动作 | 说明 |
|---|---|
proxy | 转发到上游(可录制) |
mock | 返回 mock 报文,不转发上游 |
drop | 丢弃该报文 |
mock 响应
action.mock.data 支持两种写法:
- 原始 CoAP 报文 hex 字符串(推荐):
yaml
action:
type: mock
mock:
data: "60012a0001ffffa2" # CoAP 报文 hex1
2
3
4
2
3
4
- 模板渲染(返回文本内容,由 Codec 自动封装):
yaml
action:
type: mock
mock:
data: "{{ .fields.uriPath }}"1
2
3
4
2
3
4
协议隔离
UDP 与 TCP 共用规则表和录制 / 抓包表,后端按监听器归属自动隔离:
- 规则列表:仅显示「全部监听器」规则 + 命中本协议监听器的规则
- 录制 / 抓包列表:未指定监听器时,默认只展示本协议监听器集合的数据;显式指定监听器时尊重选择
录制与抓包
录制
- 规则
action.record: true时,命中报文被录制 - 录制内容:会话 ID、监听器、方向、规则、原始报文(hex)、解析字段
- 上限:
udp.maxRecords(默认 10000),超出自动淘汰最旧记录
抓包
管理后台「UDP 代理 → 抓包」页面支持实时抓包(SSE)、临时抓取与持久化,报文自动按 CoAP 解析展示。
相关 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/udp/rules | 规则列表(按监听器归属过滤) |
| POST | /api/udp/rules | 新建规则 |
| PUT | /api/udp/rules/:id | 更新规则 |
| DELETE | /api/udp/rules/:id | 删除规则 |
| GET | /api/udp/records | 录制列表 |
| DELETE | /api/udp/records/:id | 删除单条录制 |
| DELETE | /api/udp/records | 清空录制 |
| GET | /api/udp/captures | 抓包列表 |
| GET | /api/udp/captures/stream | 抓包实时流 |
| GET | /api/udp/captures/temp/stream | 临时抓包实时流 |
| GET | /api/udp/sessions | 会话列表 |