典型情况:在德国亚马逊开店需要使用德国IP,而美国的供应商后台则需要使用美国IP,YouTube、工作消息应用和系统更新可以直接访问。将代理设置为“全系统”既不方便也昂贵:通过代理支付每千兆流量时,所有后台流量都会消耗掉。手动开关代理会在最不合适的时刻忘记。解决方案是域名路由:本地客户端自行决定哪个网站通过哪个代理访问,哪个网站直接访问。以下是2026年最流行的两个引擎的工作配置,sing-box和mihomo(前身为Clash Meta),以及通常会导致方案失败的陷阱分析。
这比浏览器中的代理和PAC文件更好
浏览器设置或扩展中的代理仅对该浏览器有效。PAC文件可以根据域名选择代理,但它也只存在于浏览器和系统设置中——桌面市场客户端、Telegram、Python脚本或控制台工具会直接忽略它。
sing-box和mihomo的工作层次更低:它们提升了虚拟网络接口(TUN模式),并通过它们处理所有程序的流量。然后,每个连接根据规则列表进行处理:域名、IP子网、进程名称、端口。如果规则匹配,连接将被发送到指定的出口(所需国家的代理或直接连接)。
这在实践中带来了什么:
- 流量节省。 只有工作网站通过付费代理访问,而视频、更新和云备份则直接访问。
- 同时访问多个国家。
amazon.de通过德国出口,walmart.com通过美国出口,无需切换。 - 程序规则。 可以将特定进程整体发送到代理(例如,桌面客户端或脚本),而不影响其他进程。
- 减少人为错误。 不需要记住代理是否开启——网站始终以“正确”的IP打开。
需要什么
- 支持SOCKS5或HTTP的代理,并且需要使用用户名和密码进行身份验证。两个引擎都可以自行传递用户名和密码,无需本地网关。
- 客户端:对于sing-box——官方的Android、iOS和macOS应用程序或Windows/Linux的核心;对于mihomo——图形界面如Clash Verge Rev或FlClash。
- 需要通过代理访问的域名列表。最好提前收集——下面会详细说明。
选项1:sing-box(版本1.12及以上)
关于版本的重要说明。许多网上的配置是为旧版sing-box编写的,在当前版本上无法启动。根据官方的过时功能列表:geosite和geoip在1.12.0中被删除(取而代之的是rule-set),在1.11中,规则内的outbound字段被替换为动作("action": "route"),旧的DNS服务器格式在1.14.0中被删除,而特殊出口block和dns则在1.13.0中被删除。撰写时的最新稳定版本是1.14。
最小工作配置:德国居民代理用于几个域名,其余直接访问。
{
"log": { "level": "info" },
"dns": {
"servers": [ { "type": "local", "tag": "local" } ]
},
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"address": [ "172.18.0.1/30" ],
"auto_route": true,
"strict_route": true
}
],
"outbounds": [
{
"type": "socks",
"tag": "resi-de",
"server": "ХОСТ_ИЗ_КАБИНЕТА",
"server_port": 1080,
"username": "ЛОГИН",
"password": "ПАРОЛЬ"
},
{ "type": "direct", "tag": "direct" }
],
"route": {
"auto_detect_interface": true,
"default_domain_resolver": "local",
"rules": [
{ "action": "sniff" },
{ "protocol": "dns", "action": "hijack-dns" },
{
"network": "udp",
"port": 443,
"domain_suffix": [ "amazon.de", "otto.de" ],
"action": "reject"
},
{
"domain_suffix": [ "amazon.de", "otto.de", "ipinfo.io" ],
"action": "route",
"outbound": "resi-de"
}
],
"final": "direct"
}
}
请从提供商的后台中替换主机、端口、用户名和密码。这里的端口1080仅为示例。
每个部分的作用
- TUN入口(
auto_route)将整个系统的流量封装到sing-box中。strict_route在Windows上额外添加了防火墙规则以防止DNS泄漏(文档警告这可能会破坏某些程序,例如VirtualBox)。 "action": "sniff"是关键行。通过TUN的连接是针对IP地址而不是域名的。嗅探会从TLS握手(SNI)或HTTP头中提取网站名称,只有在此之后,domain_suffix规则才会生效。没有这一行,域名规则将静默无效——这是“配置未应用”的常见原因。hijack-dns拦截系统的DNS请求并将其交给sing-box的DNS模块。- 对于UDP 443的
reject规则禁用QUIC(HTTP/3)用于代理域名。浏览器将回退到普通的HTTPS通过TCP,并且将通过代理发送。原因将在陷阱部分中说明。 domain_suffix捕获域名及其所有子域:amazon.de覆盖www.amazon.de和sellercentral.amazon.de。auto_detect_interface将sing-box的出站连接绑定到物理网络适配器。如果没有它,流量将再次进入TUN,从而形成路由循环。final: direct——所有未与任何规则匹配的流量将直接发送。
多个国家和程序规则
第二个出口作为另一个socks对象添加,具有其自己的标签(例如,resi-us)和单独的规则。可以通过带有process_name字段的规则将程序整体发送到代理(适用于Windows、macOS和Linux):
{
"process_name": [ "python.exe" ],
"action": "route",
"outbound": "resi-us"
}
规则是从上到下检查,直到第一个匹配,因此请将特定规则放在一般规则之上。
选项2:mihomo(Clash Meta)
mihomo的便利之处在于它有成熟的图形界面,配置使用YAML编写,更易于阅读。同样的场景:
tun:
enable: true
stack: gvisor
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- https://1.1.1.1/dns-query
proxies:
- name: resi-de
type: socks5
server: ХОСТ_ИЗ_КАБИНЕТА
port: 1080
username: ЛОГИН
password: ПАРОЛЬ
rule-providers:
work-de:
type: inline
behavior: classical
payload:
- DOMAIN-SUFFIX,amazon.de
- DOMAIN-SUFFIX,otto.de
- DOMAIN-SUFFIX,ipinfo.io
rules:
- RULE-SET,work-de,resi-de
- MATCH,DIRECT
与sing-box的主要区别:
- fake-ip模式以不同的方式解决“连接到IP而不是域名”的问题:mihomo自己对DNS请求做出虚假地址的响应,记住它对应的域名,并根据此应用规则。实际网站地址由代理服务器在其端获取。
- 规则集(
rule-providers)方便单独保持一个列表。inline类型将域名直接存储在配置中,http类型则通过链接获取列表并按间隔更新,例如团队的公共列表在代码库中。 MATCH是final的类似物:其余流量直接发送。- 对于程序规则,有
PROCESS-NAME,在Android上它接受应用程序包的名称。
如何收集域名列表而不遗漏必要的
网站并不是一个域名。市场平台从CDN加载图片,脚本来自不同的域名,授权可能在第三个域名上。如果主域名通过德国IP访问,而入口域名则来自您的真实地址,反欺诈系统会在同一会话中看到两个不同的地址。
- 打开开发者工具的网站(F12 → 网络选项卡),执行典型场景:登录、搜索、商品卡、后台。
- 记录所有域名在Domain列中。可以不添加第三方计数器和广告,但服务本身的域名(包括CDN和授权服务器)必须添加。
- 将它们添加到规则中并重复场景。在sing-box的日志中(
info级别)或mihomo的连接选项卡中,可以看到每个连接触发了哪个规则。 - 在列表中保持一个“控制”域名,比如
ipinfo.io:它显示代理的IP,而未包含在列表中的相邻IP检查服务则显示您的真实IP。这样可以快速查看路由是否正常工作。
导致方案失败的陷阱
1. QUIC绕过代理
Chrome和其他浏览器乐于通过HTTP/3,即UDP访问大型网站。许多代理提供商不支持通过SOCKS5的UDP或支持有限。在最坏的情况下,连接会走错地方,在最好的情况下,网站会卡顿,直到浏览器回退到TCP。因此,在上面的sing-box配置中,明确拒绝了工作域名的UDP 443。在mihomo中,通过在浏览器中禁用QUIC(标志chrome://flags/#enable-quic)可以更简单地实现类似效果。
2. DNS泄漏到提供商
如果工作域名通过您的互联网服务提供商的DNS进行本地解析,网站本身不会看到这一点:连接仍然会来自代理的IP。但提供商和任何看到您DNS的人将知道您正在打开哪些网站。mihomo中的fake-ip模式和sing-box中嗅探后将域名传递给代理服务器可以减少这个问题。有关检查和保护方法的更多信息,请参见DNS泄漏保护方法的分析。
3. 与其他VPN或反检测冲突
同时存在两个TUN接口将导致路由混乱。如果反检测浏览器的配置文件已经有自己的代理,最好将其流量从TUN中排除:通过进程名称的规则将浏览器发送到direct,这样每个配置文件都通过自己的代理访问,如预期的那样。
4. 系统路由无法替代反检测
计算机上的所有程序将以一个IP访问域名。对于一个商店来说这很正常。对于同一平台上的10个账户则不然:平台会看到相同的浏览器指纹和一个地址。对于多账户操作,域名路由是辅助工具,而不是“单独配置文件+单独代理”的替代方案。
5. 会话中间的IP轮换
如果代理设置为在每个请求时更改IP,授权网站将在每次加载图片时看到新的地址。对于后台、商店和社交媒体,请使用具有粘性会话的登录(在工作期间固定IP)或以十分钟为间隔的定时轮换。
6. 代理不支持所需协议
如果提供商仅提供HTTP代理,在sing-box中使用http类型的出口,在mihomo中使用type: http。两个引擎都支持HTTP的用户名和密码。如果程序本身无法与带有身份验证的代理一起工作,而又不想提升TUN,可以使用gost、3proxy或Squid的本地网关。
在规则中使用哪个代理
- 市场平台、社交媒体、卖家后台、广告后台——需要国家的居民代理,并且具有粘性会话。家庭提供商的地址在反欺诈中引起的疑问最少。
- 检查最严格的平台(移动应用、TikTok、Instagram)——移动代理:同一IP的运营商同时连接多个真实用户。
- API、文档、包存储库、没有反机器人保护的服务——数据中心代理:它们更便宜、更快,对于这些任务不需要“家庭”IP。
方便在配置中设置多个不同类型的出口,并将域名分配给它们,而不是通过最昂贵的代理。
总结
域名路由将代理从“开关”转变为精确工具:所需网站始终以所需IP打开,其余流量不会消耗已支付的千兆流量。启动时只需30行配置。最重要的是——不要忘记嗅探(或fake-ip),禁用代理域名的QUIC,收集服务的完整域名列表,并使用最新的语法:1.12之前的sing-box配置在新版本上无法启动。
