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

90 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**环境配置**
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
```json
{
"tag": "company-network",
"type": "direct",
"bind_interface": "controller" // controller 为网卡名称
}
```
定义内网 DNS 并指定出口:
```json
{
"tag": "Company-DNS",
"type": "udp",
"server": "12.0.0.1", // 公司内网DNS
"detour": "company-network"
}
```
路由规则指定域名走该 DNS
```json
{
"action": "route",
"domain_suffix": ["company.net"],
"server": "Company-DNS",
"strategy": "prefer_ipv4"
}
```
**尝试简化失败:**
原本以为可以用官方文档里的 `local` 服务来简化配置,让 sing-box 自动读取系统 DNS
```json
{
"type": "local",
"tag": "dns_local"
}
```
配置后发现无法解析公司内网域名。
**原因分析:**
大概翻了一下 sing-box 源码,`local` 确实是读取系统里的上游 DNS 列表,但它在发查询时会检查网关。
由于我们公司的 VPN 网卡(controller)没有配置 IPv4 默认网关,源码里有一句判断:
```go
if address.FirstGatewayAddress == nil {
continue
}
```
导致这张网卡直接被跳过了。给同样有 VPN 并存需求的兄弟排个雷。
**求教:** 佬友们有没有需要公司 VPN 和代理工具同时使用的场景呢?可以分享下使用技巧。