策略
policy 块设置按等级的连接超时、缓冲区大小,以及统计子系统应当填充 哪些计数器。
顶层选项
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
levels | map[uint32]*Policy | {} | { "<level>": Policy } | 按用户等级(uint32)键入的映射。每个值是一个 Policy 对象,其旋钮作用于该等级用户的流量。 |
system | *SystemPolicy | (unset) | SystemPolicy | 系统级策略。目前只承载入站 / 出站四个流量计数器开关。 |
源码: infra/conf/policy.go:73-76 · 锚定版本 v26.6.1 (94ffd50)
单等级 Policy
levels 下的每个条目都是一个 Policy 对象。等级 0 是未显式设置 等级的用户的默认值。
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
handshake | *uint32 | 4 | <seconds> | 入站完成握手的最长时间;超过则关闭连接。 |
connIdle | *uint32 | 300 | <seconds> | 空闲超时。无流量持续达此秒数则关闭连接。 |
uplinkOnly | *uint32 | 2 | <seconds> | 下行关闭后的宽限窗口;过该秒数再关闭上行。 |
downlinkOnly | *uint32 | 5 | <seconds> | 上行关闭后的宽限窗口;过该秒数再关闭下行。 |
statsUserUplink | bool | false | true | false | 按用户统计上行字节数(需要存在 stats 块)。 |
statsUserDownlink | bool | false | true | false | 按用户统计下行字节数。 |
statsUserOnline | bool | false | true | false | 跟踪单用户的在线状态。 |
bufferSize | *int32 | (internal) | <KB> | -1 | 单连接的内部缓冲区大小(KB)。-1(或任意负值)表示不限。 |
源码: infra/conf/policy.go:7-16 · 锚定版本 v26.6.1 (94ffd50)
SystemPolicy
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
statsInboundUplink | bool | false | true | false | 按入站 tag 的上行字节计数器。 |
statsInboundDownlink | bool | false | true | false | 按入站 tag 的下行字节计数器。 |
statsOutboundUplink | bool | false | true | false | 按出站 tag 的上行字节计数器。 |
statsOutboundDownlink | bool | false | true | false | 按出站 tag 的下行字节计数器。 |
源码: infra/conf/policy.go:55-60 · 锚定版本 v26.6.1 (94ffd50)
示例
json
{
"stats": {},
"policy": {
"levels": {
"0": {
"handshake": 4,
"connIdle": 300,
"uplinkOnly": 2,
"downlinkOnly": 5,
"statsUserUplink": true,
"statsUserDownlink": true,
"bufferSize": 0
}
},
"system": {
"statsInboundUplink": true,
"statsInboundDownlink": true,
"statsOutboundUplink": true,
"statsOutboundDownlink": true
}
}
}说明
- 超时在 Go 结构体中是指针。省略字段会保留内部默认值;显式置
0则代表该字段「无超时」。 bufferSize在Policy.Build(infra/conf/policy.go:42-46)中 会乘以 1024 —— JSON 值的单位是 KB。负值禁用上限。- 单用户计数器要求对应入站上的用户对象具有非空的等级,且其数值与
policy.levels下的某个键匹配。
源码: infra/conf/policy.go:7-76 · v26.6.1 (94ffd50)
