Sniffer
增强模式接管一条 TCP 连接时,Core 可能只知道目标 IP。Sniffer 读取连接开头的数据——HTTP Host 头或 TLS SNI——得到域名,用于匹配域名规则。它不解密任何内容。
Sniffer 默认开启,只有需要修改时才写 [sniffer]。
toml
[sniffer]
enable = true
protocols = ["http", "tls"]
http-ports = [80, 8080]
tls-ports = [443, 8443]
override-destination = true
timeout-ms = 500
max-bytes = 16384字段
| 字段 | 默认值 | 说明 |
|---|---|---|
enable | true | |
protocols | ["http", "tls"] | http、tls(别名 https) |
http-ports | [80, 8080] | 读取 HTTP Host 的端口 |
tls-ports | [443, 8443] | 读取 TLS SNI 的端口 |
override-destination | true | 把嗅探到的域名而不是 IP 交给代理 |
timeout-ms | 500 | 等待首批数据的时间;10–5000 |
max-bytes | 16384 | 最多读取的字节数;512–65536 |
端口可以是数字、"起-止" 范围字符串(最多 100 个端口),或两者组成的列表: tls-ports = [443, "8440-8450"]。
限制
- 只有到达 Core 的连接才会被嗅探。使用 eBPF 后端且
FINAL,DIRECT时,没有命中任何规则的连接不会 被重定向到 Core,也就不会被嗅探。 - 不暴露域名的协议(纯 IP 协议、加密的 Client Hello)无法嗅探,请用 IP 或进程规则。
- 对于服务端先发数据的协议,嗅探最多会增加
timeout-ms的延迟,请不要把这类端口加入端口列表。