sing-box 客户端 + 服务端配置参考¶
sing-box 内存占用很低,所以来折腾一下。
警告
以下配置可能无法满足您的需求
服务端配置(移除注释):
{
"log": {
"level": "warn",
"output": "/var/log/sing-box/box.log", // 日志位置,不需要可删除
// 注意: 自定义日志位置需要确保 sing-box 可访问
// sing-box 默认工作路径是 /var/lib/sing-box
"timestamp": true
},
"dns": {
"servers": [
{
"type": "local",
"tag": "local-dns"
}
]
},
"inbounds": [
{
"tag": "proxy-in",
"multiplex": { // 多路复用,仅限部分代理
"enabled": true,
"padding": false // 填充一些空数据混淆多路复用特征,开启的话客户端也需要配置
// 其他字段
}
// 其他入站
],
"outbounds": [
{
"type": "direct",
"tag": "direct-out",
"domain_resolver": { // 配置出站域名解析策略,优先 ipv6
"server": "local-dns",
"strategy": "prefer_ipv6"
}
}
// 其他出站配置,比如 warp...
],
"route": {
"rules": [
{
"inbound": "proxy-in",
"action": "sniff" // 对 proxy-in 开启嗅探,sing-box 1.13 写法
},
{
"protocol": ["bittorrent", "quic"], // 屏蔽 quic,不需要可删除
"action": "reject"
},
// ...其他路由规则
],
"rule_set": [
// 一些规则集,屏蔽还是走其他出站自己配置
{
"type": "remote",
"tag": "cn-site",
"format": "binary",
"url": "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/cn.srs",
"update_interval": "7d"
},
{
"type": "remote",
"tag": "cn-ip",
"format": "binary",
"url": "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geoip/cn.srs",
"update_interval": "7d"
}
]
}
}
所以如果你真的很在乎 TCP 的握手延迟你应该开启多路复用,对应 sing-box 的 multiplex 字段,不过凡事皆有代价,如果你的线路质量一般,则不要开启多路复用,会严重影响你的上网体验,如果线路本身还可以,则可以使用下面的多路复用配置。
客户端配置:
{
"log": {
"level": "warn"
},
"certificate": { "store": "mozilla" }, // 使用 mozilla 证书集合
"dns": {
"servers": [
{
"tag": "dns-remote",
"type": "udp",
"server": "1.1.1.1",
"detour": "proxy"
},
{
"domain_resolver": "dns-local",
"path": "dns-query",
"server": "dns.alidns.com",
"tag": "dns-direct",
"type": "https"
},
{
"tag": "dns-local",
"type": "local"
}
],
"rules": [ // dns 分流规则
{
"type": "logical",
"mode": "or",
"rules": [
{
"domain": ["example.com"] // 额外添加域名走 dns-direct
},
{
"rule_set": ["cn-site", "cn-location"]
}
],
"server": "dns-direct"
}
],
"independent_cache": true
},
"inbounds": [
{
"tag": "mixed-in",
"type": "mixed",
"listen": "127.0.0.1",
"listen_port": 2080
}
],
"outbounds": [
{
"tag": "proxy",
// ...其他字段
"multiplex": {
"enabled": true,
"protocol": "smux", // 或者 h2mux
"max_connections": 4,
"min_streams": 4,
"padding": false // 默认值,与服务端对应
}
},
{
"tag": "direct",
"type": "direct"
}
],
"route": {
"rules": [
{ "action": "sniff", "inbound": ["mixed-in"] },
{ "action": "hijack-dns", "protocol": "dns" },
{
"rule_set": ["cn-site", "cn-location"],
"outbound": "direct"
}
],
"rule_set": [
{
"type": "remote",
"tag": "cn-site",
"format": "binary",
"url": "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo-lite/geosite/cn.srs",
"update_interval": "2d"
},
{
"format": "binary",
"tag": "cn-location",
"type": "remote",
"url": "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/geolocation-cn.srs",
"update_interval": "7d"
}
],
"final": "proxy",
"default_domain_resolver": {
"server": "dns-direct"
},
"auto_detect_interface": true
},
"experimental": {
"cache_file": {
"enabled": true
}
}
}
-
性能更好,避免了内核态和用户态的频繁切换。
-
浏览器自动禁用 quic,再也不用担心 quic 变成 udp over tcp 了。
-
本地客户端基本不需要配置 ip 类规则,配置代理时都会配置 no_proxy 等变量,防止私有 ip 走代理,不需要代理的软件代理设置为空即可。
-
访问网页的 DNS 处理逻辑更简单,浏览器会直接给 socks 代理发送域名,而 shadowsocks, vless 等协议直接将走代理的域名发送给服务端处理,再也不用担心本地处理代理域名的 dns。
-
Chrome 142 更新了 Local Network Access(局域网访问)权限,使用 fakeip 的话难免会弹出权限申请,不同意的话就没法上网了。
缺点和局限就不提了,不过我偶尔也有需要 tun 的时候,这时候我会选择直接用各种 gui 开 tun,避免手搓配置导致各种各样的问题。
Loading Comments...