域名嗅探
嗅探从 HTTP、TLS 或 QUIC 的可见信息中尝试识别域名,帮助域名规则处理原本只有 IP 的连接。下面开启识别,并保留原连接目标。
yaml
sniffer:
enable: true
parse-pure-ip: true
override-destination: false
sniff:
HTTP:
ports: [80, 8080]
TLS:
ports: [443, 8443]
QUIC:
ports: [443]
skip-domain:
- '+.lan'
- '+.local'| 字段 | 如何使用 |
|---|---|
enable | 开启嗅探 |
sniff | 按 HTTP、TLS、QUIC 分别配置 ports;列表可包含端口或 8000-9000 形式的范围 |
parse-pure-ip | 对缺少域名的流量尝试嗅探 |
force-dns-mapping | 对 DNS 映射得到的 redir-host 流量强制尝试嗅探 |
override-destination | 为 true 时允许用识别到的域名替换实际连接目标;单协议同名项可覆盖全局值 |
force-domain | 对指定域名强制尝试嗅探 |
skip-domain | 跳过指定域名 |
skip-src-address / skip-dst-address | 跳过指定来源或目标 IP 网段 |
如果开启后某个服务连接异常,可先把它加入跳过列表或关闭目标覆盖。加密握手中的域名不可见时,嗅探不保证获得域名。
平台说明与字段状态
新配置使用 sniffer.sniff。旧 sniffing 和 port-whitelist 只在 sniff 为空时使用,不会与新写法叠加。
11 个字段
| 字段 | 类型 | iOS | macOS | tvOS | 平台说明 |
|---|---|---|---|---|---|
sniffer.enable | 布尔值 | 支持 | 支持 | 支持 | 控制嗅探开关及适用/跳过条件;实际嗅探取决于协议、端口和域名条件,不会解密所有加密流量。 |
sniffer.force-dns-mapping | 布尔值 | 支持 | 支持 | 支持 | 控制嗅探开关及适用/跳过条件;实际嗅探取决于协议、端口和域名条件,不会解密所有加密流量。 |
sniffer.force-domain | 列表 | 支持 | 支持 | 支持 | 控制嗅探开关及适用/跳过条件;实际嗅探取决于协议、端口和域名条件,不会解密所有加密流量。 |
sniffer.override-destination | 布尔值 | 支持 | 支持 | 支持 | 设置默认目标覆盖行为;sniff 中单个协议的显式设置可覆盖它。 |
sniffer.parse-pure-ip | 布尔值 | 支持 | 支持 | 支持 | 控制嗅探开关及适用/跳过条件;实际嗅探取决于协议、端口和域名条件,不会解密所有加密流量。 |
sniffer.port-whitelist | 列表 | 受管理 / 有限制 | 受管理 / 有限制 | 受管理 / 有限制 | 兼容旧写法,仅在 sniff 为空时使用;新配置优先用 sniff。 |
sniffer.skip-domain | 列表 | 支持 | 支持 | 支持 | 控制嗅探开关及适用/跳过条件;实际嗅探取决于协议、端口和域名条件,不会解密所有加密流量。 |
sniffer.skip-dst-address | 列表 | 支持 | 支持 | 支持 | 控制嗅探开关及适用/跳过条件;实际嗅探取决于协议、端口和域名条件,不会解密所有加密流量。 |
sniffer.skip-src-address | 列表 | 支持 | 支持 | 支持 | 控制嗅探开关及适用/跳过条件;实际嗅探取决于协议、端口和域名条件,不会解密所有加密流量。 |
sniffer.sniff | 映射 | 支持 | 支持 | 支持 | 按协议配置端口和目标覆盖行为;填写后优先于旧 sniffing/port-whitelist。 |
sniffer.sniffing | 列表 | 受管理 / 有限制 | 受管理 / 有限制 | 受管理 / 有限制 | 兼容旧写法,仅在 sniff 为空时使用;新配置优先用 sniff。 |
参考:mihomo.