Skip to content

Segment:一段自己的网络 ​

Segment 接法由 mayami 创建 TAP,把一台虚拟机或一个隔离网络接进来。它不碰宿主机现有网卡,适合实验、单台虚拟机和需要固定网关的网络。

完整配置 ​

yaml
inbounds:
  lab:
    type: tap
    interface: sbk0
    vnet_hdr: true

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

route:
  rules:
    - {ip_is_private: true, outbound: direct}
  final: proxy

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

客人把 TAP 当网卡使用。mayami 在 Segment 内扮演网关和 DNS;具体地址、虚拟网络接法见 runtimes。

包怎么走 ​

TAP 送来完整以太网帧。mayami 在用户态完成 ARP、IPv4/IPv6、DHCPv6、DNS 和流判定;直连也由 mayami 自己拨 socket,不交回宿主机内核转发,因此 Segment 不依赖宿主机 NAT。

边界 ​

  • QEMU/KVM 可把 TAP 与虚拟机网卡桥接;容器可把 TAP 移进自己的网络命名空间。
  • 一段网络通常只接一台客人;需要多台和 DHCP 时优先使用 networks。
  • vnet_hdr 与多队列用于吞吐,不改变协议语义。

仅 Linux

TAP 和 Segment 网关依赖 Linux TUN/TAP。

相关 ​

页面历史

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