Skip to content

完整配置

Specola 配置就是一个 TOML 文件。只有 [general] 是必需的,其余部分都可选。本页先给出一份包含所有 部分的完整配置,再列出全部受支持的字段。

刚开始使用时,请先按快速开始操作,把本页当作参考手册。

带注释的完整配置

toml
# ── 基础 ────────────────────────────────────────────────────────────────
[general]
route-mode = "rule"            # direct | global | rule
global-proxy = "work"          # route-mode = "global" 时使用
log-level = "info"             # trace | debug | info | warn | error | critical | off
port = 7890                    # 本地 HTTP/SOCKS5 端口;0 表示不开
protocols = "mixed"            # mixed | http | socks5 | none,或列表
allow-lan = false              # true 时监听 0.0.0.0
api-listen = ""                # 可选的 TCP 控制接口,例如 "127.0.0.1:9090"
api-secret = ""

# ── 代理:你自己运营或有权使用的服务器 ──────────────────────────────────
[[proxy]]
name = "office"
type = "http"
server = "proxy.example.com"
port = 8443
username = "me"
password = "change-me"

[proxy.tls]
server-name = "proxy.example.com"

[[proxy]]
name = "home"
type = "ss"
server = "home.example.com"
port = 8388
cipher = "2022-blake3-aes-128-gcm"
password = "base64-key-from-your-server"

# ── 代理组:成员是代理、DIRECT 或 REJECT(不能嵌套)─────────────────────
[[proxy-group]]
name = "work"
type = "fallback"              # select | url-test | fallback | load-balance
proxies = ["office", "home", "DIRECT"]
url = "https://www.gstatic.com/generate_204"
interval = 300                 # 秒;不写就不做健康检查

# ── 规则:首条命中生效,FINAL 在最后 ────────────────────────────────────
[rule]
list = [
  "PROCESS-NAME,git-remote-http,work",
  "PROCESS-NAME,cargo,work",
  "DOMAIN-SUFFIX,corp.example.com,office",
  "DOMAIN,registry.npmjs.org,work",
  "RULE-SET,blocked,REJECT",
  "IP-CIDR,10.0.0.0/8,DIRECT,no-resolve",
  "IP-CIDR,192.168.0.0/16,DIRECT,no-resolve",
  "FINAL,DIRECT",
]

# GEOIP / GEOSITE / IP-ASN 规则使用的数据文件(绝对路径)。
# [rule.cache]
# geoip = "/home/me/.local/share/specola/geoip.dat"
# geosite = "/home/me/.local/share/specola/geosite.dat"

# 上面 RULE-SET,blocked,... 使用的规则集。
[[rule.cache.rule-set]]
name = "blocked"
behavior = "domain"            # classical | domain | ipcidr
path = "/home/me/.config/specola/blocked-domains.txt"

# ── DNS:全部可选 ───────────────────────────────────────────────────────
[dns]
ipv6 = false

[dns.upstream]
default = ["https://1.1.1.1/dns-query"]
# direct = []                  # 为空时使用系统解析器

[dns.nameserver-policy]
"+.corp.example.com" = "udp://10.0.0.53"

[dns.tun]
mode = "fake-ip"
fake-ip-filter = ["+.lan", "+.local"]

# ── Sniffer:默认开启 ───────────────────────────────────────────────────
[sniffer]
enable = true

# ── 增强模式:Linux 用 ebpf,macOS 和 Windows 用 tun ────────────────────
[enhanced-mode]
enable = false
type = "ebpf"
ip-version = "ipv4"

[enhanced-mode.ebpf]
process-routing = true

规则集文件 blocked-domains.txt 在 Core 启动时必须存在;specola-core -t 只检查是否设置了路径。

字段索引

部分字段页面
[general]route-modeglobal-proxylog-levelportprotocolsallow-lanipv6api-listenapi-secret基础配置
[[proxy]]nametypeserverportdialer-proxy、各类型专属字段、[proxy.tls][proxy.transport]代理
[[proxy-provider]]nameurlpathproxyProvider
[[proxy-group]]nametypeproxiesurlintervaltolerancestrategydialer-proxyicon代理组
[rule]listresolve-unknown-domains分流规则
[rule.cache]geoipgeositeasn[[rule.cache.rule-set]]分流规则
[dns]ipv6respect-rules、缓存字段、use-hostsuse-system-hostsDNS
[dns.upstream]defaultdirectbootstrapproxy-serverfallbackdirect-follow-policyDNS
[dns.tun]mode、Fake-IP 字段、route-resolutionprobe-resolverprobe-timeout-msDNS
[dns.system-proxy]route-resolutionprobe-resolverprobe-timeout-msDNS
[dns.listener]enableaddressDNS
[dns.nameserver-policy][dns.fallback-filter]DNS
[sniffer]enableprotocolshttp-portstls-portsoverride-destinationtimeout-msmax-bytesSniffer
[enhanced-mode]enabletypeip-version增强模式
[enhanced-mode.ebpf]process-routingLinux eBPF
[enhanced-mode.tun]stackauto-routeauto-detect-interfaceroutesextra-routesdns-hijackTUN

当前版本不可用

以下旧配置中的部分会被忽略并给出警告,旧文件仍能加载,但设置不会生效:[metadata][[rule-set]] (请改用 [[rule.cache.rule-set]])、[[module]][[subscription]][hosts][gateway][tunnel][ntp]

以下写法会被拒绝:顶层 [inbound]mixed-portexternal-controllertun-rulesprotocolshttps 取值、代理类型 sshmierusudoku[dns.hosts] enable = true、代理组字段 use,以及 Linux 上的 enhanced-mode.type = "tun"