日常上网环境还是很复杂的,不同场景可能会使用不同的出站协议,毕竟如果线路是 CN2 GIA 的用来上网还是挺好的,用来下载就有点奢侈了。
目前使用场景,日常有备份苹果精品应用和 GitHub 某些仓库的习惯。正常情况下会直接通过域名规则集分流选择某个出站,不过使用起来不够精准,用来上网的浏览也会走该出站方式。当然还可以通过该下载软件的链接直接定位,不过可能需要大量的收集,所以还是结合 sing-box logical 方式精准定位,实现下载只使用某个出站的协议,并且不需要更多的维护。
当然不同人的使用场景会有不同,sing-box 提供了非常的路由规则写法,可以组合使用,来精准实现你复杂的需求,下面也给大家贴出各种写法的注释。
实现方式的逻辑
logical and 精准定位;
基于下载链接或者该下载链接的规则集加上程序名精确分流;
如果使用 V2rayN 和 sing-box 搭配,那么应用程序名会不一样;
个人案例自定义路由规则写法
V2rayN 和 sing-box 搭配
{ //逻辑和代理,苹果应用备份
"type": "logical",
"mode": "and",
"rules": [
{
"process_name": "xray.exe"
},
{
"domain": "iosapps.itunes.apple.com"
}
],
"outbound": "vless-sb"
},
{ //逻辑和代理,IDM下载
"type": "logical",
"mode": "and",
"rules": [
{
"process_name": "xray.exe"
},
{
"rule_set": "cnsite-!cn"
}
],
"outbound": "vless-sb"
}
sing-box 单独内核自定义
{ //逻辑和代理,苹果应用备份
"type": "logical",
"mode": "and",
"rules": [
{
"process_name": "iTunes.exe"
},
{
"domain": "iosapps.itunes.apple.com"
}
],
"outbound": "vless-sb"
},
{ //逻辑和代理,IDM下载
"type": "logical",
"mode": "and",
"rules": [
{
"process_name": "IDMan.exe"
},
{
"rule_set": "cnsite-!cn"
}
],
"outbound": "vless-sb"
}
补充点路由规则写法
{
"route": {
"rules": [
{
"protocol": "dns", // 使用DNS协议的流量
"outbound": "dns-out" // 将通过'dns-out'出口转发
},
{
"clash_mode": "direct", // Clash模式为直连
"outbound": "direct" // 将通过'direct'出口直接连接
},
{
"clash_mode": "global", // Clash模式为全局
"outbound": "select" // 将通过'select'出口选择转发
},
{
"domain_suffix": [ // 特定后缀的域名
"icloudnative.io",
"fuckcloudnative.io",
"sealos.io",
"cdn.jsdelivr.net"
],
"outbound": "direct" // 将通过'direct'出口直接连接
},
{
"process_name": [ // 特定进程名称
"TencentMeeting",
"NemoDesktop",
...
],
"outbound": "direct" // 将通过'direct'出口直接连接
},
{
"rule_set": [ // 特定的规则集
"WeChat",
"Bilibili"
],
"outbound": "direct" // 将通过'direct'出口直接连接
},
{
"protocol": "quic", // 使用QUIC协议的流量
"outbound": "block" // 将被阻止
},
{
"inbound": "socks-in", // 来自'socks-in'入口的流量
"outbound": "select" // 将通过'select'出口选择转发
},
{
"rule_set": "OpenAI", // OpenAI规则集
"outbound": "openai" // 将通过'openai'出口转发
},
{
"domain_suffix": [ // OpenAI相关的域名后缀
"openai.com",
"oaistatic.com",
"oaiusercontent.com"
],
"outbound": "openai" // 将通过'openai'出口转发
},
{
"package_name": "com.openai.chatgpt", // OpenAI ChatGPT应用包名
"outbound": "openai" // 将通过'openai'出口转发
},
{
"rule_set": "TikTok", // TikTok规则集
"outbound": "tiktok" // 将通过'tiktok'出口转发
},
{
"package_name": "com.zhiliaoapp.musically", // TikTok应用包名
"outbound": "tiktok" // 将通过'tiktok'出口转发
},
{
"domain_suffix": [ // 特定的域名后缀
"depay.one",
"orbstack.dev"
],
"outbound": "select" // 将通过'select'出口选择转发
},
{
"process_name": [ // 特定的进程名称
"DropboxMacUpdate",
"Dropbox"
],
"outbound": "select" // 将通过'select'出口选择转发
},
{
"package_name": [ // 特定应用包名
"com.google.android.youtube",
...
],
"outbound": "select" // 将通过'select'出口选择转发
},
{
"domain": "accounts.google.com", // 特定的域名
"domain_suffix": [ // 特定的域名后缀
"sourceforge.net",
"fhjasokiwq.com"
],
"outbound": "select" // 将通过'select'出口选择转发
},
{
"domain_suffix": "cloud.sealos.io", // 特定的域名后缀
"outbound": "direct" // 将通过'direct'出口直接连接
},
{
"type": "logical", // 逻辑类型规则
"mode": "and", // 使用'and'模式
"rules": [ // 组合规则
{
"rule_set": "geosite-geolocation-!cn"
},
{
"rule_set": "geoip-cn",
"invert": true
}
],
"outbound": "select" // 将通过'select'出口选择转发
},
{
"rule_set": "Global", // Global规则集
"outbound": "select" // 将通过'select'出口选择转发
},
{
"rule_set": "geoip-cn", // 中国地理位置IP规则集
"outbound": "direct" // 将通过'direct'出口直接连接
},
{
"ip_is_private": true, // 私有IP地址
"outbound": "direct" // 将通过'direct'出口直接连接
},
{
"rule_set": [ // 特定的规则集
"YouTube",
"Telegram",
"Netflix",
"geoip-google",
"geoip-telegram",
"geoip-twitter",
"geoip-netflix"
],
"outbound": "select" // 将通过'select'出口选择转发
}
]
}
}