Files
notes/resource/系统/网络/关于 Win+Scoop 环境下 Sing-box 防火墙路径问题及 VPN 都在并存的小发现.md
2026-03-01 01:43:46 +08:00

2.5 KiB
Raw Permalink Blame History

环境配置

Win + scoop + WinSW + sing-box 1.12.14 裸核

问题一:切换 mixed 模式断网与防火墙路径

之前一直用的 tun 的 gvisor 堆栈,最近看群里讨论 mixed 模式(也是默认模式),就想换过来试试,结果一改配置直接断网。

排查与解决:

在群友提醒下怀疑是防火墙问题。

  1. 尝试直接关闭防火墙,网络恢复,确认锅在防火墙。
  2. 检查防火墙规则,发现确实有一条 sing-tun 的放行规则,路径指向 E:\MyScoop\Scoop\apps\sing-box\current\sing-box.exe
  3. 关键点来了Scoop 的 current 是一个软连接。我尝试把防火墙规则改为实际的版本路径 E:\MyScoop\Scoop\apps\sing-box\1.12.14\sing-box.exe,启用防火墙后网络正常了。

求教: 看来 Windows 防火墙似乎不认 Scoop 的 current 软连接路径?有没有懂这块底层机制的佬友科普一下原理?

问题二:关于公司 VPN 并存与 local DNS 的源码发现

顺道分享一个近期折腾 VPN 并存时发现的坑。

场景是日常挂 sing-box 和公司 VPN。VPN 启动后会生成独立虚拟网卡。

目前的笨办法:

必须显式指定出站接口和 DNS 转发。

创建绑定 VPN 网卡的 outbound

{
  "tag": "company-network",
  "type": "direct",
  "bind_interface": "controller" // controller 为网卡名称
}

定义内网 DNS 并指定出口:

{
  "tag": "Company-DNS",
  "type": "udp",
  "server": "12.0.0.1", // 公司内网DNS
  "detour": "company-network"
}

路由规则指定域名走该 DNS

{
  "action": "route",
  "domain_suffix": ["company.net"],
  "server": "Company-DNS",
  "strategy": "prefer_ipv4"
}

尝试简化失败:

原本以为可以用官方文档里的 local 服务来简化配置,让 sing-box 自动读取系统 DNS

{
    "type": "local",
    "tag": "dns_local"
}

配置后发现无法解析公司内网域名。

原因分析:

大概翻了一下 sing-box 源码,local 确实是读取系统里的上游 DNS 列表,但它在发查询时会检查网关。

由于我们公司的 VPN 网卡(controller)没有配置 IPv4 默认网关,源码里有一句判断:

if address.FirstGatewayAddress == nil {
  continue
}

导致这张网卡直接被跳过了。给同样有 VPN 并存需求的兄弟排个雷。

求教: 佬友们有没有需要公司 VPN 和代理工具同时使用的场景呢?可以分享下使用技巧。