网段总览
networks 是按名字声明的 Linux 网桥。mayami 可建桥、配地址、接成员,并在桥上提供 DHCP、RA、DNS 和 capture 路由入口。
yaml
networks:
lab:
id: 10
address: [10.10.0.1/24]
domain: lab.internal
mtu: 1500
uplink: nat
capture: true
dhcp:
range: 10.10.0.100-10.10.0.199
lease: 12h
inbounds:
router:
type: capture
wan: [eth0]
outbounds:
direct:
type: direct
route:
final: direct
dns:
servers:
real: {type: udp, address: 127.0.0.1:53}
final: real字段
id
- 类型:
u16。 - 必填:可选。
- 范围:
1..=4094。 - 默认:首次分配并持久保存;改名不会改变已有记录。
- 行为:网段的稳定身份,用于接口编号、租约、邻居和服务名。
interface
- 类型:Linux 接口名。
- 默认:映射键。
- 范围:1 到 15 字节,不能为空、
.、..,不能含空白、/、:或 NUL。
address
- 类型:CIDR 数组。
- 必填:是。
- 范围:至少一个;每个地址族最多一个。
- 行为:网桥地址,也是客人网关和自动 DNS 地址。
- 限制:普通网段前缀不能重叠;不同且显式命名的租户可以重叠。
domain
- 类型:DNS 域名。
- 必填:可选。
- 行为:为该网段安装权威正向/反向名字范围,并向 DHCP/RA 通告搜索域。
- 限制:规范化后不能和其他网段重复。
tenant
- 类型:租户名。
- 必填:可选。
- 范围:合法 VRF 接口名,1 到 15 字节。
- 限制:不能与
external: true或uplink: routed同用。
mtu
- 类型:32 位无符号整数。
- 默认:
1500。 - 行为:桥、DHCP 和 RA 通告使用的 MTU。
uplink
- 类型:字符串枚举。
- 默认:
nat。 - 取值:
nat、routed、none。 - 行为:
nat做 masquerade,routed要求上游回程路由,none只允许本机/网段内。
capture
- 类型:布尔值。
- 默认:
true。 - 行为:网桥认领成功后自动进入 capture LAN 集合。
- 限制:
capture: true需要配置一个 capture 入站。
isolate
- 类型:布尔值。
- 默认:
false。 - 行为:成员二层隔离,并挡住经网关返回同一桥的三层绕行;访问网桥本机服务不受影响。
members
- 类型:接口名或
{trunk: 接口名}的数组。 - 默认:空。
- 行为:整口直接入桥,或按网段 ID 创建 VLAN 子口。
external
- 类型:布尔值。
- 默认:
false。 - 行为:桥归别人所有,mayami 只核对地址并提供 DHCP/RA/DNS。
- 限制:不能配置成员或隔离,也不能选择非默认 uplink。
dhcp
- 类型:映射。
- 必填:可选。
- 行为:启用 IPv4 DHCP。
ipv6
- 类型:字符串枚举。
- 必填:可选。
- 取值:
slaac、dhcp、none。 - 默认:有 IPv6 地址时为
slaac,否则none。
说明
仅 Linux
网段功能依赖 Linux bridge、netlink、nftables、DHCP/RA 与内核转发。
宿主机会被改什么
mayami 会创建或认领网桥,设置地址、MTU、成员/VLAN 和隔离口,提供 DHCP/RA/DNS,并在需要时打开 IPv4/IPv6 转发、调整 RA sysctl、写入 mayami_net 的 NAT/flowtable 规则。自动分配的转发开关和现有接口 accept_ra=2 不会被退出流程改回。
删网段时,桥上仍有成员则保留桥;没有成员时才删除。地址和网段自身服务随之撤掉。