2.5 KiB
2.5 KiB
环境配置
Win + scoop + WinSW + sing-box 1.12.14 裸核
问题一:切换 mixed 模式断网与防火墙路径
之前一直用的 tun 的 gvisor 堆栈,最近看群里讨论 mixed 模式(也是默认模式),就想换过来试试,结果一改配置直接断网。
排查与解决:
在群友提醒下怀疑是防火墙问题。
- 尝试直接关闭防火墙,网络恢复,确认锅在防火墙。
- 检查防火墙规则,发现确实有一条
sing-tun的放行规则,路径指向E:\MyScoop\Scoop\apps\sing-box\current\sing-box.exe。 - 关键点来了: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 和代理工具同时使用的场景呢?可以分享下使用技巧。