---
url: /configuration/musubi.md
description: 用 TUN 或 TAP 把多台 mayami 组成 L3/L2 网
---

# musubi

`musubi` 按名字定义由 mayami 自建 TUN/TAP、对端地址范围和拨入方式组成的网。

```yaml check
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 的对端按用户名匹配。

## 说明

::: info 仅 Linux
Musubi 依赖 Linux TUN/TAP、netlink 路由和策略规则。
:::

默认路由通过独立路由表与 fwmark 规则接入，mayami 自己的拨号流量不落入 mesh。L2 模式没有 `allowed_ips`；L3 模式每个对端拥有自己的前缀。一个对端可同时有多条 `dial` 通道，也可等待 `ingress`/用户名从外部拨入。

## 相关

* [网段总览](/configuration/networks/)
* [共享 dial](/configuration/shared/dial)
* [入站总览](/configuration/inbound/)
