Skip to content

networks:容器和虚拟机网关 ​

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

完整配置 ​

yaml
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 配置。

包怎么走 ​

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

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

运维边界 ​

宿主机会被改什么

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

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

相关 ​

页面历史

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