> For the complete documentation index, see [llms.txt](https://docs.console.zenlayer.com/welcome/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.console.zenlayer.com/welcome/cn/elastic-compute/networking/standard-vs-bypass-eip.md).

# 弹性 IP：普通模式 EIP 与 Bypass EIP

当您将弹性 IP（EIP）绑定到 Zenlayer 弹性计算（ZEC）实例上的虚拟网卡或高可用虚拟 IP 时，平台为该 EIP 提供两种转发模式：

* **普通模式 EIP** — 默认模式，适用于绝大多数工作负载。
* **Bypass EIP** — 可选模式，适用于对延迟和吞吐量敏感的工作负载。

两种模式均由**同一公网转发平面**提供服务。 两种模式的入站和出站流量都流经同一网关，受相同的带宽限制约束，并使用相同的 EIP 地址。唯一的区别在于**数据包在网关内部到达或离开您的虚拟机时的处理方式**。

本文档涵盖绑定到 vNIC 或高可用虚拟 IP 的 EIP。要管理您的 EIP，请在 Console 中导航至 [弹性 IPv4](https://console.zenlayer.com/zec/elastic-ip) 页面。

***

## 概览

![概览：两种模式共享同一转发平面](/files/yfPUuhn7x79pI4xYEK9o)

两台虚拟机都通过同一转发平面访问互联网。区别在于**平台是否为您进行地址转换**（普通模式），还是**将公网 IP 直接分配给客户机**（Bypass 模式）。

***

## 两种模式的共同点

* **相同的转发平面。** EIP 的入站和出站流量均由同一共享公网网关承载。
* **相同的 EIP 语义。** 一个 EIP 对应 vNIC 上的一个私有 IP。如需公开多个私有 IP，请为每个私有 IP 分配一个 EIP。
* **入站流量保留原始客户端源 IP。** 您的工作负载可以看到入站连接的真实客户端地址。
* **一个 vNIC 可绑定多个 EIP**，每个 EIP 绑定到同一网卡上不同的（辅助）私有 IP。
* **相同的带宽限制。** 您购买的每个 EIP 的带宽配额在两种模式下完全相同。
* EIP 必须先解绑才能释放。

***

## 普通模式 EIP

普通模式是默认选择，适合绝大多数工作负载。

### 工作原理

![普通模式 EIP：网关在 EIP 与私有 IP 之间进行转换](/files/ub4nYT2IE5uAhlDOWv9o)

* 网关在 EIP 与私有 IP 之间执行**地址转换**。您的虚拟机始终只能看到自己的**私有 IP**。
* 转发平面为每条连接维护**按流状态**。

### 客户机配置

**客户机内部无需特殊配置。** 虚拟机只需要其私有 IP（通常通过 DHCP 获取）。EIP 对客户机操作系统不可见。

### 何时使用普通模式

* 虚拟机的通用公网连通场景。
* 对延迟、吞吐量或过滤没有特殊需求的工作负载。
* **您需要安全组保护业务。** 安全组仅对普通模式 EIP 生效。
* 您希望配置尽可能简单 — 一个网卡上一个私有 IP，虚拟机内部无需额外配置。

***

## Bypass EIP

Bypass 模式指示转发平面走**无状态快速路径**，并**将公网 IP 直接分配给虚拟机**，不进行地址转换。平台不会为Bypass EIP 在任何方向执行 NAT。

{% hint style="danger" %}
**Bypass EIP 不支持安全组。** 平台不会对 Bypass EIP 上的任何流量（入站和出站）做过滤，无论实例关联的安全组配置了哪些放行或拒绝规则，都对其无效。

将 EIP 切换为 Bypass 模式前，请确保客户机操作系统已启用自有防火墙（`iptables`/`nftables`、`firewalld`、Windows 防火墙等）。否则客户机上所有监听端口都将直接暴露在公网。
{% endhint %}

### 工作原理

![Bypass EIP：两个方向均不进行转换](/files/kkHTeB9rTnMwNvGs0d1t)

* 入站数据包**原样**传递给虚拟机。虚拟机看到的数据包目标地址是公网 EIP。
* 出站数据包必须以 **EIP 作为源地址**从虚拟机发出。网关将其原样转发到互联网。
* 转发平面不为连接维护按流状态。

由于平台不再执行 EIP ↔ 私有 IP 的转换，**客户机操作系统必须将 EIP 配置为其网卡上的本地地址**，与私有 IP 并存。

### 您将获得的优势

* 网关每个数据包的**处理开销更低**。
* **更低的延迟**，对于短连接和新流的首批数据包效果尤为明显。
* 对于受按流处理限制的工作负载，可获得**更高的持续数据包速率**。

### 何时使用Bypass 模式

* **延迟敏感型工作负载**：实时媒体、游戏服务器、低延迟 RPC 端点、金融类工作负载。
* **高数据包速率工作负载**，需要最大转发吞吐量。
* **在客户机中运行自有防火墙**的工作负载，可以接受安全组不生效。

### 需要注意的权衡

* **客户机必须手动配置**以持有 EIP。当同一 vNIC 上有多个 EIP 和/或多个私有 IP 时，这一配置会变得复杂 — 请参见下方示例。
* 依赖网关按流状态的连接级功能和可见性，对 Bypass 流量不可用。
* **无安全组保护。** 安全组对 Bypass EIP 不生效，所有过滤必须在客户机内完成。这是 Bypass 模式最主要的风险 — 请勿将无防护的实例切换为 Bypass 模式。

***

## 对比：两种模式在转发平面内的行为

![转发平面分支：共享查找和计量，然后按模式分别处理](/files/zKkjZaqRFQ7rXsnUtp1L)

两条路径共享同一网关、相同的计量方式和相同的带宽管控。区别在于图右侧的每数据包分支处理逻辑。

***

## 在客户机内配置Bypass EIP（Ubuntu / netplan）

由于Bypass 模式不做 NAT，客户机操作系统必须持有公网 IP 本身，与私有 IP 并存。以下示例适用于使用 netplan 的 Ubuntu；在任何 Linux 发行版上均可使用 `ip addr` 进行等效配置。

### 示例 1 — 单个私有 IP，单个Bypass EIP

私有 IP：`10.0.0.10`（子网 `10.0.0.0/24`，网关 `10.0.0.1`）。 Bypass EIP：`203.0.113.10`。

```yaml
# /etc/netplan/01-bypass-eip.yaml
network:
    version: 2
    ethernets:
        eth0:
            dhcp4: false
            addresses:
                - 10.0.0.10/24
                - 203.0.113.10/32
            nameservers:
                addresses:
                    - 8.8.8.8
                    - 1.1.1.1
            routes:
                - to: default
                  via: 10.0.0.1
                  from: 203.0.113.10
```

私有 IP 和默认路由均以静态方式配置。Bypass EIP 以 `/32` 掩码作为额外地址添加，使内核将其视为主机地址，而不会尝试通过私有网卡路由公网子网；默认路由的 `from` 指定该 EIP 为出站流量的源地址。

### 示例 2 — 多个私有 IP 和多个Bypass EIP

私有 IP：`10.0.0.10`（主 IP）和 `10.0.0.11`（辅助 IP）。 Bypass EIP：`203.0.113.10`（绑定到 `10.0.0.10`）和 `203.0.113.11`（绑定到 `10.0.0.11`）。

```yaml
# /etc/netplan/01-bypass-eip.yaml
network:
    version: 2
    ethernets:
        eth0:
            dhcp4: false
            addresses:
                - 10.0.0.10/24
                - 10.0.0.11/24
                - 203.0.113.10/32
                - 203.0.113.11/32
            nameservers:
                addresses:
                    - 8.8.8.8
                    - 1.1.1.1
            routes:
                - to: default
                  via: 10.0.0.1
                  from: 203.0.113.10
```

这足以使**入站**流量到任一Bypass EIP 都能正常工作：内核在请求到达的地址上回复，因此回复数据包会自动以正确的 EIP 为源。

对于需要从特定Bypass EIP 发起的**出站**新连接，应用程序应将其套接字绑定到所需的 EIP。如果您需要内核为来自某个私有 IP 的流量选择特定 EIP 作为默认源，而不是逐应用程序绑定，则需要配置策略路由规则 — 例如，每个（私有 IP，Bypass EIP）对使用一个路由表，通过 `ip rule add from <私有 IP> table <N>` 进行选择。该配置的实施是运营者的责任，而非平台的责任。

> 客户机内配置的复杂性随公网/私有 IP 组合数量的增加而增长。如果工作负载确实简单（一个私有 IP，一个公网 IP），Bypass 模式配置很直接；如果工作负载涉及大量公私 IP 组合，请在决策时将客户机内的配置负担纳入考量。

***

## 一个 vNIC 上的多个 EIP

您可以通过将每个 EIP 与该网卡上不同的辅助私有 IP 关联，将多个 EIP 绑定到同一个 vNIC 上。两种模式均支持此功能。

![多个 EIP 绑定到单个 vNIC，每个 EIP 与一个私有 IP 一一对应](/files/UmKZ0zUDYpC4kmCwf2cg)

每个 EIP 与单个私有 IP 一一绑定。如需公开三个私有 IP，请分配三个 EIP。

**重要 — 不要在同一 vNIC 上混用模式。** 绑定到同一 vNIC 的所有 EIP 应使用**相同**的模式。如果您需要同一虚拟机上同时拥有普通模式 EIP 和Bypass EIP，请将它们附加到不同的 vNIC 上。

![同一 vNIC 上的所有 EIP 必须共享同一模式](/files/ZllmmSyK23Ndt0cjiFMq)

如果单台虚拟机同时需要普通模式 EIP 和Bypass EIP，请为其添加第二个 vNIC，并将Bypass EIP 放在那里。

***

## IPv6

本平台上的公网 IPv6 地址**不是 ULA 也不经过 NAT**。 每台虚拟机都会获得一个可路由的公网 IPv6 地址，该地址直接分配给客户机，与Bypass EIP 的 IPv4 分配方式完全相同。

![公网 IPv6：可路由地址直接分配给虚拟机，无 NAT](/files/W3k0A2SShzDeIbdyhnfV)

实际含义：

* **IPv6 没有 NAT。** 网关在虚拟机和互联网之间转发 IPv6 数据包时，不会改写源地址或目标地址。
* **客户机内部看到的 IPv6 地址就是互联网看到的地址。** 外部服务看到的出站 IPv6 流量的源地址就是该地址。
* **入站 IPv6 数据包到达客户机时，目标地址是公网 IPv6 地址。** 客户机以正常方式配置其 IPv6 地址（通过 SLAAC/DHCPv6 或静态配置）；无需额外别名，因为没有第二个需要转换的"私有" IPv6 地址。
* **IPv6 没有"普通模式与 Bypass"的选择。** 普通模式 / Bypass 的区别是 IPv4 独有的概念，因为它描述的是平台是否在 EIP 与私有 IP 之间执行 IPv4 NAT。IPv6 始终是直通的。

如果您已经熟悉在 Bypass IPv4 下运行虚拟机，IPv6 的思维模型是相同的：平台将公网地址路由到您的客户机，客户机拥有该地址。

***

## 选择模式（IPv4 EIP）

| 问题                | 普通模式 EIP | Bypass EIP  |
| ----------------- | -------- | ----------- |
| 默认模式？             | 是        | 否 — 需主动选择   |
| 相同的转发平面和带宽限制？     | 是        | 是           |
| 入站保留客户端源 IP？      | 是        | 是           |
| 每个 vNIC 支持多个 EIP？ | 是        | 是           |
| 每数据包处理开销          | 基准       | 更低          |
| 延迟 / 数据包速率        | 基准       | 更优          |
| 网关的按流状态           | 有        | 无           |
| 平台为 EIP 执行 NAT    | 是        | 否           |
| 客户机必须持有 EIP 本身    | 否        | 是           |
| 安全组是否生效           | 是（默认生效）  | **否 — 不支持** |
| 推荐默认选择            | 是        | 仅在有明确原因时选择  |

**快速判断原则**

* 默认使用**普通模式**，除非您有经过实测的理由切换。
* 仅当需要 vNIC EIP 上最低可能的延迟或最高可能的数据包速率，**且**您愿意在客户机内配置 EIP、并在客户机内自行运行防火墙时，才选择 **Bypass 模式** — 安全组对 Bypass EIP 不生效。

***

## 限制与注意事项汇总

* **一个 EIP，一个私有 IP。** 任何 EIP 都不能同时绑定多个私有 IP。
* **先解绑再释放。** 仍处于关联状态的 EIP 无法删除。
* **同一网卡同一模式。** 单个 vNIC 上的所有 EIP 必须使用相同的模式。
* **Bypass 模式需要客户机内部配置。** 客户机操作系统必须将 EIP 作为本地地址持有；随着网卡上公网/私有 IP 数量的增加，配置复杂度也会增加。
* **Bypass 模式转发在网关处是无状态的**：依赖网关按流状态的功能不适用于Bypass EIP。
* **Bypass EIP 不支持安全组。** 平台完全不会过滤 Bypass EIP 上的流量，必须由客户机自行运行防火墙。
* **公网 IPv6 不经过 NAT。** 客户机内部的 IPv6 地址就是互联网看到的地址；普通模式/Bypass 的区别不适用于 IPv6。
* **两种 IPv4 模式均保留入站客户端源 IP。**
