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。