musubi
musubi 按名字定义由 mayami 自建 TUN/TAP、对端地址范围和拨入方式组成的网。
yaml
musubi:
office:
tun: mesh0
address: [10.7.0.1/24]
mtu: 1400
fwmark: 0x6d75
peers:
laptop:
allowed_ips: [10.7.0.2/32]
dns:
servers:
default: {type: udp, address: 127.0.0.1:53}
final: default字段
tun
- 类型:接口名。
- 必填:与
tap二选一。 - 行为:创建 L3 TUN,对端
allowed_ips的路由指向它。
tap
- 类型:接口名。
- 必填:与
tun二选一。 - 行为:创建 L2 TAP,并按学到的 MAC 在自建交换机中转发。
address
- 类型:CIDR 数组。
- 默认:空。
- 行为:TUN/TAP 本机地址。
mac
- 类型:Ethernet 地址。
- 必填:可选。
- 限制:只与
tap使用;不写时按 mesh 名、地址和本机身份稳定生成。
mtu
- 类型:32 位无符号整数。
- 默认:
1400。 - 范围:至少
576;承载 IPv6 时至少1280,不超过 muxl3 最大包长。
fwmark
- 类型:32 位无符号整数。
- 默认:
0x6d75。 - 行为:mayami 自己的连接使用该 mark,并且不落入 mesh 默认路由。
peers
- 类型:名字到对端的映射。
- 必填:是。
peers.<name>.allowed_ips
- 类型:CIDR 数组。
- 默认:空。
- 限制:TUN 对端至少一个;TAP 对端必须为空。
- 行为:声明该对端可发送和可达的前缀;不同对端不能重复,不能是 mesh 自身地址;每个地址族最多一个对端拥有默认路由。
peers.<name>.dial
- 类型:出站名或数组。
- 默认:空。
- 行为:每条出站为对端保持一条到
0.0.0.0:7的流,断开后退避重连。 - 限制:不能重复、不能与
endpoint同用。
peers.<name>.endpoint
- 类型:
host:port。 - 必填:可选。
- 行为:以普通 TCP 直接拨
0.0.0.0:8的对端;端口不能为 0。 - 限制:不能与
dial同用。
peers.<name>.ingress
- 类型:入站名或数组。
- 默认:空。
- 行为:从这些入站拨入的流识别为该对端。
- 限制:一个入站在所有 mesh 中最多属于一个对端;未写 ingress 的对端按用户名匹配。
说明
仅 Linux
Musubi 依赖 Linux TUN/TAP、netlink 路由和策略规则。
默认路由通过独立路由表与 fwmark 规则接入,mayami 自己的拨号流量不落入 mesh。L2 模式没有 allowed_ips;L3 模式每个对端拥有自己的前缀。一个对端可同时有多条 dial 通道,也可等待 ingress/用户名从外部拨入。