域名嗅探
透明代理(TUN/Redir/TProxy)场景下,内核有时只能看到目标 IP,看不到域名,导致 DOMAIN 类规则失效。Sniffer 通过读取连接早期的 TLS SNI / HTTP Host 字段,把域名还原回来。
配置示例
config.yaml YAML
sniffer: enable: true force-dns-mapping: true parse-pure-ip: true override-destination: false sniff: HTTP: ports: [80, 8080-8880] override-destination: true TLS: ports: [443, 8443] QUIC: ports: [443, 8443] force-domain: - +.v2ex.com skip-domain: - Mijia Cloud skip-src-address: - 192.168.0.3/32 skip-dst-address: - 192.168.0.3/32
字段说明
enable必须是否启用 sniffer 总开关。
sniff必须按协议配置要嗅探的端口,支持 HTTP/TLS/QUIC 三种。每个协议对象里的 ports 表示端口范围,override-destination 可选,用来覆盖全局设置。
override-destination默认 true是否使用嗅探结果作为实际访问目标。开启后 DOMAIN/DOMAIN-SUFFIX 等域名规则才能对嗅探出的域名生效,否则规则仍然只看得到原始 IP。
force-dns-mapping可选对 redir-host 类型识别的流量进行强制嗅探。
parse-pure-ip可选对所有未获取到域名的流量(比如客户端已经自己解析过、直接拿着 IP 连接的情况)强制进行嗅探。
force-domain可选需要强制嗅探的域名列表,支持通配符;默认情况下只对纯 IP 连接进行嗅探,配置这个可以对已知域名也强制重新嗅探。
skip-domain可选跳过嗅探的域名列表,支持通配符。主要解决部分站点 SNI 字段不是标准域名导致嗅探结果异常的问题,例如米家设备的 Mijia Cloud、苹果推送服务 +.push.apple.com,建议加入名单。
skip-src-address / skip-dst-address可选跳过嗅探的来源 / 目标 IP 段列表。