搜索 K
Appearance
本文由 AirPick 实验室网络组撰写。所有配置片段均在 Windows 11 24H2 + v2rayN 6.4x(Xray-core 1.8.x / sing-box 1.10.x 双内核)与 macOS 14 环境下实测验证。测试节点来自灵猫网络香港 IPLC 入口与普通 BGP 中转入口,用于对比分流策略在不同链路质量下的表现差异。
如果你只想要结果,先记住这五条:
geosite:cn + geoip:cn 做匹配,但国内软件访问境外 CDN、Spotify 的国内壳域名、游戏加速器的探测域名,都会落到漏网区间。geosite:category-ads-all 里的国内广告域名会被 geosite:cn 抢先命中,拦截直接失效。先说物理层。你手里的「机场」节点,本质上是你到出口服务器之间的一条链路,而这条链路的类型决定了分流策略的天花板:
0.1% 以下,抖动 ±2ms。这是 4K 串流和实时协作的及格线。local-pref 或 DNS 智能解析做用户就近接入。对跨运营商用户(比如联通宽带访问电信单线入口)的改善最明显。再说协议层。2026 年主流节点普遍上了 TLS Reality(借用真实站点的证书链做握手,无需自备域名)或 XTLS-Vision,服务端拥塞控制普遍启用 BBRv3。这些技术解决的是「握手特征被识别」和「TCP 在丢包链路上的吞吐塌陷」问题,跟客户端分流规则无关——但很多人把「晚高峰卡」归因于规则没写好,方向就错了。
结论:分流规则解决的是「走不走代理」,链路质量解决的是「走了之后快不快」。两者必须分开诊断。先用 mtr 确认链路,再谈规则。
v2rayN 只是 GUI,真正的匹配逻辑在内核里。当前 v2rayN 6.x 支持 Xray-core 和 sing-box 两套内核,两者的路由模型差别很大:
domainStrategy 的三个档位 Xray 的 domainStrategy 决定了「域名什么时候被解析成 IP」:
| 档位 | 行为 | 代价 |
|---|---|---|
AsIs | 只按域名匹配,不解析 IP | 纯 geoip: 规则全部失效 |
IPIfNonMatch | 域名规则全部不中时,才解析 IP 再匹配 | 每次未命中多一次 DNS 查询,冷启动有延迟 |
IPOnDemand | 只要规则里有 IP 类条目就立即解析 | DNS 查询量最大,但 IP 规则最准 |
实战建议:日常用 IPIfNonMatch。它让 geosite: 走快路径、geoip: 走兜底路径,是准确性和性能的最佳平衡点。
domainMatcher 的选择 Xray 提供 hybrid(默认)和 linear 两种域名匹配器。hybrid 用前缀树做子域匹配,规则量在 10 万条级别时,单连接匹配耗时通常在 0.1–0.3ms;linear 是逐条比对,规则上万条后耗时线性上涨,实测在 12 万条规则下 p99 会到 4ms 以上,属于典型的「配置看起来没问题但网页就是慢半拍」。
除了极老旧的低配设备(比如 512MB 内存的软路由),一律用 hybrid。
geosite: / geoip::读取 geosite.dat / geoip.dat 二进制库,按分类标签引用。优点是语法极简,缺点是每次更新要替换整个 dat 文件,且分类粒度由上游社区决定。rule_set:支持远程 .srs 规则集,可按 URL 增量拉取,能自定义编译。优点是灵活,缺点是需要手动维护更新源。这是「阻止国内软件访问外网」的技术分水岭。Xray-core 的路由规则不支持进程维度——v2rayN 路由表格里虽然有「进程」列,但在 Xray 内核下它不会参与匹配。切到 sing-box 内核后,process_name 与 process_path 才会真正生效。
需要注意的前提:
tasklist 核对真实进程名;以下数据来自 AirPick 实验室在 i5-1240P / 16GB 环境下的实测,规则库使用 2026 年 1 月版 geosite.dat(约 11.7 万条域名条目):
| 量化指标 | 方案 A:纯 GeoIP 分流 | 方案 B:GeoSite + GeoIP | 方案 C:GeoSite + 进程名(sing-box) | 方案 D:显式域名白名单 + rule_set |
|---|---|---|---|---|
| 匹配粒度 | IP 段级 | 域名 + IP 双维度 | 域名 + IP + 进程三维 | 完全自定义 |
| 单连接首匹配延迟(p50) | 0.04ms | 0.18ms | 0.26ms | 0.09ms |
| 内存占用(空闲态) | 约 38MB | 约 62MB | 约 105MB | 约 74MB |
| 国内域名误判率 | 约 9.4% | 1.2%(含 CDN 回源误伤) | 1.2% | 取决于人工维护 |
| 能否拦截进程级泄漏 | 否 | 否 | 是 | 否 |
| DNS 污染抵御能力 | 弱 | 中(需配合 DNS 分流) | 中 | 强 |
| UDP / QUIC 分流可用性 | 完整 | 完整 | 部分(进程匹配不覆盖) | 完整 |
| 规则维护成本 | 极低 | 低 | 中 | 高(每周人工) |
| CDN 回源误伤抵抗 | 差 | 中 | 中 | 优 |
| 推荐内核 | Xray | Xray / sing-box | sing-box | 两者皆可 |
读表要点:方案 B 是 90% 用户的甜点区;只有当你真的有「��内软件必须断网」的强需求时,才值得为方案 C 付出内存与配置复杂度的代价。
场景 1:普通办公 / 网页浏览 选方案 B。每日流量 5GB 以下,路由规则用「绕过大陆」预设 + 手动加 3–5 条例外域名即可。核心诉求是「打开公司 OA、钉钉、企业微信不卡」,而这三个都是国内域名,geosite:cn 已经覆盖。
场景 2:4K 流媒体 / 大文件下载 流量经常突破 200GB/月,此时真正决定体验的是节点带宽与专线类型,而不是路由规则。分流上建议把流媒体域名单独归到一个「高倍率但带宽充足」的分组,同时把下载类域名走直连或走「不限速低倍率」节点。
场景 3:开发者 / 需要 API 分流 GitHub 拉代码要走代理(github.com 直连经常握手超时),但 registry.npmmirror.com、pypi.tuna.tsinghua.edu.cn 这类国内镜像必须直连。建议把开发域名单独建一个策略组,规则里显式列出 github.com、objects.githubusercontent.com、ghcr.io、docker.io,避免被 geosite:cn 的错误分类带走。
场景 4:游戏 / 低延迟需求 游戏走代理的意义通常有限,除非是外服。规则上要做的是「把游戏进程识别出来直连,把游戏平台商店走代理」。这一步 Xray 做不到,需要 sing-box 进程匹配。
场景 5:家庭网络 / 软路由 规则量会显著放大(多设备并发),务必用 domainMatcher: hybrid,并把 DNS 缓存 TTL 调高,减少重复解析。
sing-box(需要进程级控制时)或 Xray(追求稳定性与低内存时)。geosite:cn、geoip:cn、geosite:category-ads-all、geosite:private。geosite:category-ads-all → 出站 blockgeosite:private → 出站 directgeosite:cn + geoip:cn → 出站 directproxy223.5.5.5、119.29.29.29),境外域名走代理侧的加密 DNS。切忌全局统一 DNS。对应的 Xray 路由片段长这样:
"routing": {
"domainStrategy": "IPIfNonMatch",
"domainMatcher": "hybrid",
"rules": [
{ "type": "field", "outboundTag": "block", "domain": ["geosite:category-ads-all"] },
{ "type": "field", "outboundTag": "direct", "domain": ["geosite:private"] },
{ "type": "field", "outboundTag": "direct", "domain": ["geosite:cn"] },
{ "type": "field", "outboundTag": "direct", "ip": ["geoip:cn", "geoip:private"] },
{ "type": "field", "outboundTag": "proxy", "network": "tcp,udp" }
]
}注意 geosite:private 必须排在 geosite:cn 之前。私有网段(192.168.x.x、10.x.x.x)如果被代理带走,你家里的 NAS、打印机、局域网管理页面会立刻全部失联——这是排障工单里最高频的一类问题。
v2rayN 的跨平台版本在这两个系统上功能对齐度不如 Windows,建议:
systemd 托管,进程匹配在 Linux 下支持最好。sing-box 的进程拦截片段示例:
{
"route": {
"rules": [
{ "process_name": ["Thunder.exe", "QQ.exe", "WeChat.exe"], "outbound": "block" },
{ "domain_suffix": [".cn", ".com.cn"], "outbound": "direct" },
{ "geoip": "cn", "outbound": "direct" }
]
}
}geoip:cn 的误伤:部分国内云厂商的海外机房 IP 被注册在中国 ASN 下,会导致访问海外服务时被错误直连。遇到「某个境外站点打不开但换成手机热点就好了」,先怀疑这条。network: "tcp,udp"。geosite.dat 更新频率约 1–2 周。半年不更新,新域名全部漏判。# macOS 需先 brew install mtr
mtr -rwzc 20 1.1.1.1
tp results: 20 packets, 0% loss, avg 38.2ms
2. 10.0.0.1 0.0% 20 0.4 0.5 0.3 1.1
5. 202.97.x.x 5.0% 20 12.3 15.8 11.9 42.7
11. 1.1.1.1 0.0% 20 38.2 41.6 37.9 88.3判定表:
| 现象 | 可能原因 | 处置 |
|---|---|---|
第 2 跳(网关)丢包 > 0% | 本地路由 / 网线 / 无线干扰 | 换有线,检查路由器 |
第 5 跳(省际出口)丢包 > 5% | 运营商骨干拥塞 | 换入口节点,非规则问题 |
中途某跳丢包但末跳 0% | ICMP 限速,正常现象 | 忽略 |
末跳 RTT 抖动 > 60ms | 跨境公网拥塞 | 改用 IPLC/IEPL 专线节点 |
# Windows(需下载 tcping.exe)
tcping -n 10 127.0.0.1 10808
# macOS / Linux
nc -vz 127.0.0.1 10808本地代理端口不通,一切路由规则都是空谈。先确认 v2rayN 的入站端口与系统代理端口一致。
# macOS:查看系统实际使用的 DNS
scutil --dns | head -30
# 查询某个域名的解析结果
dig +short github.com @223.5.5.5
dig +short github.com @1.1.1.1如果两个 DNS 返回的 IP 差异巨大(尤其是境内 DNS 返回 0.0.0.0 或明显的黑洞 IP),说明解析被污染,必须在客户端启用 DNS 分流。
Xray 与 sing-box 都支持日志等级调到 debug,会在日志里打印每条连接命中的规则与出站标签。这是最可靠的验证手段:打开一个网页,看日志里对应域名落在 direct 还是 proxy。
# Windows
tasklist | findstr /i "qq thunder"
# macOS / Linux
ps aux | grep -i thunder规则里写的进程名必须与系统实际进程名逐字节一致(含大小写与 .exe 后缀)。
关于「机场」宣传话术的识别,只讲能验证的部分:
| 宣传话术 | 真实验证方式 | 风险等级 |
|---|---|---|
| 「不限流量」 | 查看是否有「合理使用政策」隐性 |