·

SniViewer:SniShaper的规则创建伴侣,也是通用连通性和阻断检测工具

 SniViewer是一个快速测试目标网站可连通性,DNS污染情况和域前置/ECH支持情况的软件。它能为SniShaper的规则填写提供便捷参考。

核心功能

1. DNS 污染检测

通过对比 系统 DNS 与 可信 DOH 服务器 的解析结果,识别 ASN 不匹配等污染特征:

系统 DNS: 31.13.73.9 (ASN: 32934 - Facebook)
DOH:     66.254.114.41 (ASN: 29789 - Reflected Networks)
结果:     检测到污染

当两个 DNS 源返回的 IP 属于不同的自治系统(ASN),即可判定存在 DNS 污染。

2. 域前置检测

测试直连与域前置的可用性:

  • 直连测试 :使用正确的域名作为 SNI,检测是否可以正常连接

  • 域前置测试 :使用空 SNI 或自定义 SNI,检测服务器是否支持

直连可用 → 建议修改 hosts 文件直接访问/SniShaper添加透传
域前置可用 → 可通过域前置绕过 SNI 过滤,可在SniShaper配置MitM规则
连接失败 → 网络完全阻断,寻找其它方案

3. ECH 支持识别

自动识别 Cloudflare 和 Meta 域名,提示 ECH(Encrypted Client Hello)支持:

ECH 是一种 TLS 扩展,可以加密握手过程中的 SNI 信息。

检测到后,可直接填写如SniShaper的ECH页面完成开启ECH。

4. IP 归属分析

基于 MaxMind GeoLite2-ASN 数据库,查询 IP 的:

  • ASN(自治系统号)

  • 所属组织

  • CDN 服务商(Cloudflare、Akamai、Google 等)

5. 连通性测试

  • Ping 测试 :检测 IP 是否可达

  • TCPing 测试 :检测 443 端口是否开放

诊断流程

┌─────────────────────────────────────────┐
│ 1. DNS 解析                           │
│     ├── 系统 DNS 查询                   │
│     └── DOH 查询                       │
├─────────────────────────────────────────┤
│ 2. 污染检测                           │
│     └── 对比 ASN 是否一致               │
├─────────────────────────────────────────┤
│ 3. IP 归属分析                         │
│     └── MMDB 数据库查询                 │
├─────────────────────────────────────────┤
│ 4. 连通性测试                         │
│     ├── Ping 测试                       │
│     └── TCPing 测试                     │
├─────────────────────────────────────────┤
│ 5. 连接测试                           │
│     ├── ECH 支持检测                   │
│     ├── 直连测试                       │
│     └── 域前置测试                     │
└─────────────────────────────────────────┘

使用方法

添加 DOH 服务器

首先需要配置一个 可信的 DOH 服务器 ,推荐使用自建的国外DoH服务反代或者Cloudflare Zero Trust DNS。

开始诊断

  1. 输入目标域名

  2. 选择 DOH 服务器

  3. (可选)填写自定义 SNI,不填写则发送空SNI

  4. 点击"开始诊断" 诊断过程会实时显示各阶段状态,完成后展示详细结果。

技术实现

  • GUI 框架 :Wails v2(Go + WebView2)

  • ASN 数据库 :MaxMind GeoLite2-ASN.mmdb(嵌入文件)

  • DNS 解析 :支持 DNS wire format(RFC 8484)

  • 前端 :原生 HTML/CSS/JavaScript

注意事项

  1. DOH 服务器选择 :必须使用无污染的可信 DOH 服务,否则测试结果不可靠

  2. 污染检测准确性 :对于多 CDN 网站,可能存在误判,但参考价值足够

  3. 域前置 :并非所有 CDN 都支持域前置,测试结果仅供参考

  4. ECH 支持 :目前仅 Cloudflare 和 Meta 支持 ECH;未作具体ECH支持检测逻辑,仅通过ASN判断,目前有效,未来可能失效或覆盖面不足

  5. ASN数据库文件未来可能过时,推荐可自行更新从MaxMind下载的最新数据库文件替换并自行编译

开源地址

项目已开源在 GitHub:

https://github.com/coolapijust/SniViewer