---
url: /manual/networks.md
description: 用 mayami 管理的网桥连接容器、虚拟机和租户
---

# networks：容器和虚拟机网关

`networks` 把 Router 的 capture 路径和 mayami 自己的桥、DHCP、RA、DNS 组合起来。它适合让 Docker、Podman、LXC、Incus、libvirt/KVM 的客人共用一段可管理的网络。

```mermaid
flowchart LR
  C[容器/虚拟机] --> B[网桥 lab]
  B --> S[网段服务: DHCP RA DNS]
  B --> TC[capture]
  TC --> R[规则]
  R -->|直连 release| N[内核 NAT/flowtable]
  R -->|代理| P[outbound]
  N --> W[上联]
  P --> W
```

## 完整配置

```yaml check
networks:
  lab:
    id: 10
    address: [10.10.0.1/24]
    domain: lab.internal
    capture: true
    dhcp:
      range: 10.10.0.100-10.10.0.199
      lease: 12h

inbounds:
  router:
    type: capture
    wan: [eth0]

outbounds:
  direct:
    type: direct
  proxy:
    type: socks
    server: 127.0.0.1:1080

route:
  rules:
    - {source_network: [lab], ip_is_private: true, outbound: direct}
    - {source_network: [lab], outbound: proxy}
  final: direct

dns:
  servers:
    real: {type: udp, address: 1.1.1.1:53}
    fake: {type: fakeip, inet4_range: 198.18.0.0/15}
  rules:
    - {source_network: [lab], query_type: [A, AAAA], server: fake}
  final: real
```

字段和限制见 [networks 配置](/configuration/networks/)。

## 包怎么走

网桥自己的 DHCP/RA/DNS 先完成客人配置。数据流进入桥上的 capture，`source_network` 和 `source_tenant` 由配置名编译成持久网段/租户号，不依赖 YAML 顺序。直连放回内核后由 `mayami_net` 做 NAT 和 flowtable；代理流进入用户态出站。

`external: true` 的桥归别的运行时所有：mayami 只核对地址并在桥上提供服务，不建桥、不改成员、不替它 NAT。`isolate` 隔开同桥客人；租户用 VRF 和独立 conntrack zone 隔离可重叠的地址空间。

## 运维边界

::: warning 宿主机会被改什么
mayami 会创建/认领桥、写地址、MTU、成员/VLAN、隔离状态和自有 nftables/NAT/flowtable；会打开 IPv4/IPv6 转发，并可能调整现有接口的 `accept_ra`。external 网桥只读原 owner 的设备，但 `capture: true, fail: closed` 的就绪屏障会短暂停整桥转发。
:::

* 网桥比进程活得久；删网段时桥上还有成员就保留桥。
* 成员退出只解除 `nomaster`/自有 VLAN 子口，不恢复进桥前状态。
* Docker 的 DNS 要显式指向网桥地址，见 [runtimes](/manual/runtimes)。

## 相关

* [networks 总览](/configuration/networks/)
* [租户](/configuration/networks/tenant)
* [成员](/configuration/networks/members)
* [runtimes](/manual/runtimes)
