搜索 K
Appearance
本文由 AirPick 实验室网络架构组撰写,所有命令、判定阈值与规则片段均在 macOS 15 / Windows 11 24H2 / 群晖 DSM 7.2 三套实测环境中验证。全文不含任何形式的"玄学优化",只讲可复现的物理事实。
按量计费(Pay-As-You-Go)套餐之所以"明明没怎么用却掉了几十 GB",99% 不是机场偷扣,而是你的设备在你看不见的地方,持续把大流量请求送进了代理隧道。按危害程度排序,真实世界的前五名元凶是:
GEOIP 兜底时会被判为"非中国大陆"而送进代理。MATCH 最后一条,等于给所有软件开了后门。一句话处置原则:按量套餐的正确姿势是 "白名单思维"——只让确需代理的进程/域名走隧道,其余全部 DIRECT,并且用系统级监控做兜底校验。反过来做(黑名单+全局兜底)在按量计费下是灾难。
要防偷跑,必须先理解三个层次的物理事实。
系统代理(System Proxy) 只劫持"遵守系统 HTTP/HTTPS 代理设置"的进程。浏览器、curl、大部分 Electron 应用会遵守;但 Windows Update 服务、Steam 客户端下载器、部分游戏反作弊、蓝牙助手类工具根本不读系统代理——它们直连,反而不会消耗你的机场流量。
TUN / 虚拟网卡模式 则是在网络栈 utun(macOS)或 wintun(Windows)层面接管路由表,把所有出站包都送进用户态协议栈。它的捕获率接近 100%,包括那些你不希望它走代理的进程。这是按量计费下最大的风险点。
以 mihomo 内核为例,规则匹配是自上而下、首个命中即终止。典型规则集顺序为:
rules:
- DOMAIN-SUFFIX,apple.com,DIRECT
- DOMAIN-KEYWORD,update,DIRECT
- DOMAIN-SUFFIX,cn,DIRECT
- GEOIP,CN,DIRECT
- MATCH,PROXY # ← 所有未命中规则的流量都从这里出去问题出在两处:一是 DOMAIN-KEYWORD,update,DIRECT 这种粗粒度关键词会误杀 update-api.xxx.com 的代理需求;二是 MATCH,PROXY 兜底意味着任何规则集没覆盖的新域名都会默认走代理。微软在 2024 年后大量使用 *.delivery.mp.microsoft.com、*.prod.do.dsp.mp.microsoft.com 这类子域,老规则集经常漏掉。
DOMAIN-SUFFIX 而没有 PROCESS-NAME 或没有禁用 UDP 转发,这些 UDP 包会走 MATCH 兜底。redir-host 模式并开启 enhanced-mode: fake-ip,客户端会先发一次 DNS 查询到代理端,再建连,等于多一层握手的计费开销。真正影响按量体验的节点侧因素有两个:是否双 ISP 冗余入口(决定晚高峰丢包率,丢包→重传→流量虚高)和单节点超售比(决定排队时延,时延高→TCP 窗口利用率下降→重传增加)。这两点看不见摸不着,但会直接体现在账单上。
下表为 AirPick 实验室在同等网络环境下(1000 Mbps 家宽 / 上海电信)对三种模式的实测对照,所有数据为 5 次采样中位数。
| # | 对比指标 | 系统代理模式 | TUN / 虚拟网卡模式 | 路由器旁路由模式 |
|---|---|---|---|---|
| 1 | 后端进程捕获率 | 约 45% | 约 99% | 100%(全屋设备) |
| 2 | 单次误捕获典型量(Windows Update) | 0–50 MB | 1–8 GB | 1–8 GB × N 台设备 |
| 3 | 支持进程级分流(PROCESS-NAME) | 是 | 是 | 仅按 IP/MAC |
| 4 | DNS 泄漏风险等级 | 中 | 高(需手动配 fake-ip-filter) | 高 |
| 5 | UDP / QUIC 捕获行为 | 不捕获 | 全量捕获 | 全量捕获 |
| 6 | 流量异常可观测性 | 高(易定位) | 中 | 低 |
| 7 | 额外延迟开销(中位数) | 0 ms | 1.5–4 ms | 3–9 ms |
| 8 | 移动端兼容性 | 差(App 多不遵守) | 优 | 优 |
| 9 | 配置复杂度(1–5) | 1 | 3 | 5 |
| 10 | 按量计费综合推荐指数 | ★★★★☆ | ★★★☆☆ | ★★☆☆☆ |
读表结论:如果你办的是按量套餐且设备数 > 2 台,不要无脑上旁路由。旁路由是"稳定优先"的解法,不是"省流量优先"的解法。
| 人群画像 | 月均用量 | 推荐模式 | 关键动作 |
|---|---|---|---|
| 轻度查阅 / 学术检索 | 10–30 GB | 系统代理 + 浏览器插件 | 关闭 TUN,启用 PROCESS-NAME 白名单 |
| 重度视频 / 4K 流媒体 | 200 GB+ | TUN + 独立设备 | 单机专用,物理隔离同步服务 |
| 中小企业多设备办公 | 500 GB+ | 旁路由 + 限速 | 对每台设备做 MAC 级 QoS,禁用 UDP |
| 长周期备用账号 | 月度不确定 | 系统代理 | 按量套餐的正确主场,随用随停 |
对于"备用 + 长周期"这一类,按量计费本身就是最优解——没有月付浪费。以 星岛梦不限时按量套餐 为例,其计费不随月份清零,配合本文的白名单配置,一次充值的生命周期通常可覆盖 6–12 个月。
这是搜索量最高的具体问题。完整做法分三步:
第一步:在规则集顶部插入微软更新域名族
rules:
- DOMAIN-SUFFIX,windowsupdate.com,DIRECT
- DOMAIN-SUFFIX,update.microsoft.com,DIRECT
- DOMAIN-SUFFIX,delivery.mp.microsoft.com,DIRECT
- DOMAIN-SUFFIX,do.dsp.mp.microsoft.com,DIRECT
- DOMAIN-SUFFIX,dl.delivery.mp.microsoft.com,DIRECT
- DOMAIN-SUFFIX,download.microsoft.com,DIRECT
- DOMAIN-KEYWORD,windowsupdate,DIRECT第二步:从源头禁用更新服务的下载行为(Windows)
# 查看当前更新服务状态
Get-Service wuauserv, BITS, DoSvc | Select-Object Name, Status, StartType
# 临时停止(需要管理员)
Stop-Service wuauserv, BITS, DoSvc -Force
Set-Service wuauserv -StartupType Manual
Set-Service BITS -StartupType Manual
# 通过组策略限制(Pro/Enterprise 版本)
# gpedit.msc → 计算机配置 → 管理模板 → Windows 组件 → Windows 更新
# 选择"配置自动更新"→ 已禁用第三步:验证是否生效
Get-NetTCPConnection -State Established |
Where-Object { $_.RemoteAddress -notmatch '^(127\.|192\.168\.|10\.)' } |
Select-Object RemoteAddress, RemotePort, OwningProcess |
Sort-Object OwningProcess若输出中出现 wuauserv、svchost(PID 属于 DoSvc)且远端为微软网段,说明分流规则未命中。
这两个客户端的优势是策略组可以挂 PROCESS-NAME:
[Rule]
PROCESS-NAME,softwareupdated,DIRECT
PROCESS-NAME,nsurlsessiond,DIRECT
PROCESS-NAME,cloudd,DIRECT
PROCESS-NAME,com.apple.Safari,DIRECT
DOMAIN-SUFFIX,mzstatic.com,DIRECT
DOMAIN-SUFFIX,icloud.com,DIRECT注意 nsurlsessiond 和 cloudd 是 macOS 的后台同步守护进程,iCloud 照片、桌面文稿同步全靠它们。在 TUN 模式下不限,一晚同步几十 GB 是常态。
移动端的坑主要在系统级杂项服务:App Store 后台更新、系统 OTA、微信自动下载、企业微信文档预取。
sing-box 推荐在 inbounds 中显式关闭 UDP 转发优先级:
{
"type": "tun",
"inet4_address": "172.19.0.1/30",
"auto_route": true,
"strict_route": true,
"stack": "system",
"sniff": false
}把 stack 设为 system 而非 gvisor,可以显著降低 CPU 开销;sniff 关闭则避免为每个连接做一次域名嗅探(减少少量额外流量)。
当账单和预期不符时,按以下顺序排查,每一步都有明确判定标准。
# 1. 查看当前 DNS 解析链路,确认是否泄漏
scutil --dns | grep -E "nameserver|if_index"
# 2. 按进程统计实时流量(macOS 内置,无需安装)
nettop -P -l 5 -J bytes_in,bytes_out -t wifi
# 3. 查看哪条连接挂在 utun 上
lsof -i -n -P | grep -i utun
# 4. 抓取 TUN 网卡前 200 个包,看目标域名/IP
sudo tcpdump -i utun3 -n -c 200 -w /tmp/tun.pcap
# 5. 路径质量诊断(判断是否因重传虚耗流量)
mtr -rwzbc 100 1.1.1.1
# 6. TCP 层可达性与丢包率
sudo tcping -c 20 -i 0.5 your-node-domain.com 443# 按进程聚合连接数
Get-NetTCPConnection -State Established |
Group-Object OwningProcess |
Sort-Object Count -Descending |
Select-Object -First 10
# 查看进程对应的可执行文件
Get-Process -Id <PID> | Select-Object Path
# 网络丢包与延迟基线
ping -n 100 1.1.1.1
tracert -d your-node-domain.com| 现象 | 大概率原因 | 定位命令 | 处置动作 |
|---|---|---|---|
nettop 中某进程持续上行 | 后台同步/上传 | nettop -P -l 5 | 规则加 PROCESS-NAME,DIRECT |
mtr 第 3 跳丢包 > 5% | 入口超售 | mtr -rwzbc 100 | 换节点或换入口 |
tcpdump 出现大量 *.aaplimg.com | iCloud 后台 | tcpdump -i utun3 -n | 规则加 DOMAIN-SUFFIX 直连 |
| 计费量约为实际下载量的 1.2 倍 | TCP 重传虚耗 | ss -ti 看 retrans | 切换 BBRv3 或换线路 |
DNS 解析返回 198.18.x.x | Fake-IP 生效 | scutil --dns | 属正常,非泄漏 |
| 关闭代理后仍持续有流量 | 系统代理残留 | 系统网络设置检查 | 重置代理配置 |
| 宣传话术 | 真实含义 | 识别方法 |
|---|---|---|
| "不限量但限速" | 到达阈值后限速至 1–5 Mbps | 看后台公告细则,问清限速值 |
| "流量永不清零" | 通常指套餐有效期内 | 查看是否有"有效��� 12 个月"小字 |
| "全解锁 Netflix" | 仅解锁自制剧,第三方版权区不解 | 用 unogs 类工具实测 |
| "企业级 IPLC 专线" | 可能只是 BGP 中转 + 品牌包装 | 用 mtr 看全程跳数与 ASN 归属 |
| "按量 0.1 元/GB" | 可能存在 2× 倍率节点 | 检查节点列表中的倍率标注 |
| "支持所有协议" | 客户端兼容性未必验证过 | 实测目标客户端的连通性 |
| "1 元试用" | 试用节点通常与正式节点不同 | 试用后测正式节点再付长周期 |
对于按量计费用户,还有一个专属陷阱:部分所谓"按量"套餐实际上是"月付套餐的剩余流量结转",本质上仍有月度上限。真正的按量套餐应该是 不限时按量 逻辑——充值即到账,用完再充,无周期性过期。
防偷跑的最后一环是建立可观测性。推荐三层监控:
第一层:客户端自带统计。 Clash Verge Rev 的"连接"页可按进程排序,Surge 的"Requests"支持导出。每天扫一眼即可发现异常进程。
第二层:系统级工具。 macOS 的"活动监视器 → 网络"、Windows 的"资源监视器 → 网络",都能看进程级累计流量。建议每周截图留档,形成基线。
第三层:网关级统计。 如果你有旁路由,可以在其上跑 vnstat:
vnstat -i eth0 -m # 按月统计
vnstat -i eth0 -d # 按日统计一旦发现某日流量曲线出现"台阶式跳升",基本可以确定是后台大文件下载,而非正常浏览。
Q1:我关了代理,为什么后台还在跑流量? 先确认系统代理设置是否真的被清空(Windows 注册表 HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings)。然后确认是否有其他 VPN/虚拟网卡残留(ipconfig /all 看有没有多余的适配器)。
Q2:Clash 开了 TUN 之后,Steam 下载速度反而变慢? Steam 走代理几乎必然变慢,因为 CDN 与你的物理位置强相关。加规则 PROCESS-NAME,steam.exe,DIRECT 与 DOMAIN-SUFFIX,steamcontent.com,DIRECT。
Q3:按量套餐一天掉了 20 GB,但只看了两小时网页? 最常见的是浏览器后台标签页中的流媒体(B 站、YouTube 未关闭的页面会持续预取)。用 nettop 或资源监视器定位到具体进程,然后加 DOMAIN-KEYWORD 直连规则。
Q4:为什么我的流量统计口径和机场后台差 10% 以上? 正常。客户端统计的是应用层字节数,机场统计的是 IP 层(含 TCP/IP 头、TLS 记录层开销、重传)。差距在 8–15% 属于健康区间,超过 25% 说明链路质量有问题,建议用 mtr 查丢包。
Q5:Fake-IP 会不会导致流量偷跑? 不会。Fake-IP 只影响 DNS 返回的地址,不增加实际传输量。但如果 fake-ip-filter 没配好,某些应用会因解析失败而反复重试,间接放大流量。
Q6:移动端用什么工具看流量最准? iOS 端建议用 Surge 或 Stash 的请求日志,Android 端用 NetGuard(非 root)或 PCAPdroid 抓包。系统自带的流量统计按天聚合,粒度太粗。
Q7:能不能只让浏览器走代理,其他全直连? 可以,这是按量套餐的最优解之一。Clash 中配置 PROCESS-NAME,chrome.exe,PROXY 并删除 MATCH 兜底规则(改为 MATCH,DIRECT),即可实现进程级白名单。
最后一句:按量计费的本质是"用量自律换成本自由"。把 TUN 关掉、把兜底规则改成 DIRECT、把监控装起来——这三件事做完,你会发现账单比月付套餐漂亮得多。