Skip to content

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

字段

字段默认值说明
enabletrue
protocols["http", "tls"]httptls(别名 https
http-ports[80, 8080]读取 HTTP Host 的端口
tls-ports[443, 8443]读取 TLS SNI 的端口
override-destinationtrue把嗅探到的域名而不是 IP 交给代理
timeout-ms500等待首批数据的时间;105000
max-bytes16384最多读取的字节数;51265536

端口可以是数字、"起-止" 范围字符串(最多 100 个端口),或两者组成的列表: tls-ports = [443, "8440-8450"]

限制

  • 只有到达 Core 的连接才会被嗅探。使用 eBPF 后端且 FINAL,DIRECT 时,没有命中任何规则的连接不会 被重定向到 Core,也就不会被嗅探。
  • 不暴露域名的协议(纯 IP 协议、加密的 Client Hello)无法嗅探,请用 IP 或进程规则。
  • 对于服务端先发数据的协议,嗅探最多会增加 timeout-ms 的延迟,请不要把这类端口加入端口列表。