---
url: /manual/segment.md
description: 用 TAP 给一台虚拟机、容器或隔离段提供网关
---

# Segment：一段自己的网络

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

```mermaid
flowchart LR
  C[客人网卡] -->|Ethernet| T[TAP sbk0]
  T --> G[Segment 网关]
  G --> R[规则]
  R --> P[代理出站]
  R --> D[直连 socket]
```

## 完整配置

```yaml check
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](/manual/runtimes)。

## 包怎么走

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

## 边界

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

::: info 仅 Linux
TAP 和 Segment 网关依赖 Linux TUN/TAP。
:::

## 相关

* [tap 配置](/configuration/inbound/tap)
* [runtimes](/manual/runtimes)
* [DNS](/manual/dns)
