Skip to content

配置总览 ​

mayami 的配置是一份严格校验的 YAML。它有 17 个顶层键;下面是最小完整骨架。

yaml
log: info
mode: rule
unified_delay: false
gateway: {}
cache_file: {}
inbounds: {}
outbounds: {}
rule_sets: {}
http_clients: {}
providers: {}
route: {}
dns:
  servers:
    default: {type: udp, address: 127.0.0.1:53}
  final: default
musubi: {}
networks: {}
ntp: {enabled: false}

顶层键 ​

键类型默认页面
log字符串或映射info、带时间戳、标准输出log
mode字符串rulemode
unified_delay布尔值false本页
gateway映射空映射;总内存为系统内存的 1/4gateway
api映射或省略不启用api
cache_file映射启用,路径 cache.dbcache_file
inbounds名字到入站的映射空inbound
outbounds名字到出站的映射空出站总览
rule_sets名字到规则集的映射空route/rule-set
http_clients名字到下载客户端的映射空http_clients
providers名字到 provider 的映射空providers
route映射空;final 取第一个出站路由总览
dns映射DNS crate 的默认值DNS 总览
musubi名字到 mesh 的映射空musubi
networks名字到网段的映射空网段总览
docker空映射或省略不启用 IPAM socketdocker
ntp映射启用,trust host,三个公共服务器,30 分钟ntp

unified_delay 打开时,延迟测试只在已经建立的连接上再发一次 HEAD,把握手时间排除在结果之外;它不改变选择算法。

严格解析 ​

  • 每个结构都拒绝未知字段。
  • 同一映射里的重复键会报错。
  • 带 type 的对象必须把 type 写在第一项;放在后面会被拒绝。
  • 出错格式是 文件:行:列: 错误,随后打印出错行和 ^ 标记。
  • 不提供旧拼写兼容层。字段改名、协议被移除或值类型不对时,check 直接失败。

编辑器补全与校验 ​

发布站把生成的 JSON Schema 放在 /schema/mayami.json。VS Code 配合 YAML 扩展(yaml-language-server)时,在配置文件第一行写:

yaml
# yaml-language-server: $schema=https://你的文档站.example/schema/mayami.json

也可以把本地构建出的 site/content/public/schema/mayami.json 写成 file:// 路径,或在工作区设置里把 yaml.schemas 映射到 mayami.yaml。Schema 是 draft 2020-12,字段与 serde 结构一起更新;构建时 pnpm build:schema 会在有 MAYAMI_BIN 或默认 ../target/debug/mayami 时刷新它。

值语法 ​

时长 ​

时长是一个非负整数加一个单位:

单位含义
s秒
m分
h小时
d天

例如 30s、5m、1h、7d。裸数字、负数和 1h30m 这类复合写法都会被拒绝。

大小 ​

大小可写成字节整数,或使用 KiB、MiB、GiB:

text
4096
128KiB
64MiB
1GiB

KB、MB 等十进制单位不被接受。

端点 ​

出站和 NTP 的端点写作 host、host:port、裸 IPv6 地址或 [IPv6]:port。省略端口时,出站默认 443,NTP 默认 123。监听地址要求 SocketAddr 语义,端口必须写出。

路径 ​

相对路径以数据目录为基准:有 -D 时是 -D,否则是配置文件所在目录。绝对路径保持绝对。各页会说明默认路径。

名字 ​

入站、出站、规则集、provider、HTTP 客户端等以映射键命名。空名字、重复名字和缺失的映射键不会被自动补成 <type>-<index>。名字在同类对象中唯一;入站和出站可以同名。

规则顺序和 final ​

映射和数组保持 YAML 中的顺序。route.rules 先匹配先得;route.final 没写时取第一个出站,一个出站都没有时使用内建 DIRECT。

术语 ​

术语含义
直连规则决定不经过代理,把流交回内核或本机网络栈
代理流交给某个 outbound,由该协议连接目标
放手 / releasecapture 判为直连后,把首包交回内核,由 nftables/NAT 和内核转发继续
接管 / capturemayami 在网口或网桥上挂 tc/eBPF/TUN/TAP,读取并决定流
Segmentmayami 自建 TAP,一台虚拟机或一个隔离段把它当网卡
Routermayami 接管现有 LAN/WAN,典型是路由器或旁路由
Hostmayami 建 TUN 并在本机路由表中接管自己的流量
网段networks: 管理的网桥、地址、DHCP、RA、DNS 和成员集合
租户一组可重叠网段的隔离域;各有 VRF、路由表、conntrack zone 和标记
成员插进网段的整口、veth、tap 或 trunk 子口

相关 ​

页面历史

开发者设计、代码地图和验证记录保留在仓库 manual/。