> For the complete documentation index, see [llms.txt](https://docs.verge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verge.io/knowledge-base/zh/networking/how-to-use-external-ips-in-tenants.md).

# 如何在租户中使用外部 IP

在利用 Tenant 的 VergeOS 虚拟数据中心中，Tenant 可能需要来自根外部网络的公网 IP 地址（External IP），供 Tenant 空间内的 VM 使用。

## 使用网络块

网络块可用于将一组 IP 作为一个整体进行分配，且通常是让 VM NIC 在 Tenant 空间内使用 External IP 的最直接方式。它们创建于根 External 网络，或你计划使用的这些 IP 可被路由的外部接口上。

{% hint style="info" %}
**优点/缺点**

优点 - 允许将公网 IP 直接分配给 Tenant VM 的网络接口。\
优点 - 利用内置的三层功能，保持配置完全可见，便于诊断和排障。\
缺点 - 至少需要 4 个总 IP 地址才能为 1 台设备提供 1 个可用 IP；即一个 /30 网络块。<br>
{% endhint %}

### 创建网络块

在 VergeOS 系统根目录中：

1. 导航到代表你的 VergeOS 系统“边缘”的网络；这通常就是根 External 网络。
2. 点击 *网络块* ，位于左侧菜单中。
3. 点击 *新建* 以创建一个新块。
4. 以 CIDR 格式输入你的网络块 IP 地址。（a.b.c.d/n）
5. *可选* ：为你的块添加一个有帮助的描述。
6. 由于我们将此块用于 Tenant，请将“所有者类型”设置为 *租户* 并将“所有者”设置为你想分配此块的 Tenant。
7. 点击 *提交* 以保存并分配该块。

{% hint style="info" %}
**块地址分配**

创建网络块时，VergeOS 会在后续步骤应用防火墙规则时验证该块。若未为给定范围设置正确的起始 IP，将导致错误。例如，10.1.2.108/30 将是一个有效的块。10.1.2.110/30 虽然在许多情况下表示同一个块，但在后续步骤中将无法通过验证，也无法正常工作。如有疑问，请使用子网计算器进行验证。
{% endhint %}

8. 返回到你刚刚添加该块的网络主页面。
9. 请注意顶部的“需要应用规则更改”提示。你可以在此点击“应用规则”，也可以先点击左侧菜单中的“规则”进行验证后再应用。你也可以稍后再应用规则，但在你的块被路由并正常工作之前，必须返回并应用。
10. 导航到 Tenant Networks 视图，并使用顶部筛选器选择“需要应用防火墙”为“Yes”；你的 Tenant 网络应会列出。
11. 点击选择该网络，然后 *应用规则* 在左侧菜单中以完成将网络块交付给 Tenant。

在 Tenant 界面中：

1. 导航到你的 External 网络。你会看到根分配给你的网络块，描述为“来自服务提供商的外部网络地址”。
2. 点击选择该块，然后点击 *新建网络* 在左侧菜单中。这将使用该地址块在 Tenant 中创建一个新的 Internal 网络。
3. 请注意，地址类型会自动设置为静态，且网络块地址已预先设定。动态 DHCP 也将启用，并已填入剩余可用的 IP 范围。
4. 为新网络命名。
5. 完成你需要的其他自定义后，点击 *提交* 以创建网络。
6. 你将退出到新网络。点击 *开机* 在左侧菜单中将网络上线。系统会弹出确认窗口，以防止意外启用。

将 VM NIC 连接到已启用 DHCP 的网络，即可自动将 IP 分配给该 NIC。或者，也可以在你的来宾操作系统中手动设置 IP 地址。

## 创建虚拟交换机端口

虚拟交换机端口是 Tenant 工作负载消耗根级 IP 空间的另一种常见方式。它们大致类似于物理网线，因为它们允许二层网络流量“跳过”已路由的网络段；在这种情况下，允许 Tenant Internal 网络直接与 VergeOS 之外的网络通信。这可以是直接的“WAN”网络，也可以是配置在 VergeOS 之外、拥有可用地址空间且可路由到互联网的其他网络。

{% hint style="info" %}
**优点/缺点**

优点 - 在 VergeOS 内配置简单，绕过内部三层路由配置。\
优点 - 允许使用者在边缘设备上直接使用 External IP。\
优点 - 地址空间开销极小；仅使用客户端所用的 IP 地址。\
缺点 - 虚拟交换机端口仅在其连接的两个网络运行在同一节点时才可工作。\
-这要求 External 网络和 Tenant Node1 使用高可用性（HA）分组来维持其分组关系，这可能会影响 HA 事件预期。\
缺点 - 由于移除了 VergeOS WebUI 和原生路由可见性，可能会使排障和诊断更困难。
{% endhint %}

有关创建虚拟交换机端口的说明，请参见 [创建虚拟交换机端口](/knowledge-base/zh/tenants/provide-layer2-to-tenant.md).

一旦虚拟交换机端口就位，连接到该 vwire 所附着的 Internal 网络的虚拟机和其他工作负载，其 NIC 将获得通往 VergeOS 外部的二层连接，并在地址和路由方面类似于传统交换机中的 VLAN。

## 地址转换

如果某个工作负载必须拥有一个固定的 IP 地址，但不需要直接分配给它该地址，那么地址转换可能是最佳方法。它允许通过内置的规则和网络系统，将你的公网/外部 IP 池以标准三层路由方式转发到 VergeOS 中的任意工作负载。

{% hint style="info" %}
**优点/缺点**

优点 - 遵循标准且易于理解的路由约定。\
优点 - 允许在 VergeOS WebUI 面板中完整查看和控制路由，这有助于排障和后续更改。\
缺点 - 不允许终端设备原生分配 Public IP。\
缺点 - 并非所有网络流量都能在地址转换后保留，尤其是在需要源/目的验证时。<br>
{% endhint %}

由于 VergeOS 的网络功能极其丰富且灵活，我们将提供 2 个示例配置，地址转换位于路由过程中的不同位置。

### Tenant Internal 网络上的 DNAT 和 SNAT 规则

1. 导航到代表你的 VergeOS 系统“边缘”的网络；这通常就是根 External 网络。
2. 点击 *IP 地址* ，位于左侧菜单中。
3. 点击 *新建* 以创建一个新的 IP。
4. 将“类型”设置为 *虚拟 IP*.
5. 填写 IP 地址。
6. *可选* ：添加一个有帮助的描述。
7. 将“所有者类型”设置为“Tenant”
8. 将“所有者”设置为你想分配此 IP 的 Tenant。
9. 点击 *提交* 以保存。
10. 你将返回到“IP 地址”视图。
11. 返回到你刚刚添加该块的网络主页面。
12. 请注意顶部的“需要应用规则更改”提示。你可以在此点击“应用规则”，也可以先点击左侧菜单中的“规则”进行验证后再应用。你也可以稍后再应用规则，但在你的地址被路由并正常工作之前，必须返回并应用。
13. 导航到 Tenant Networks 视图，并使用顶部筛选器选择“需要应用防火墙”为“Yes”；你的 Tenant 网络应会列出。
14. 点击选择该网络，然后 *应用规则* 在左侧菜单中以完成将 IP 地址交付给 Tenant。

在 Tenant 界面中：

1. 导航到你的 External 网络。你会看到根分配给你的 IP 地址，描述为“来自服务提供商的外部 IP”。
2. 点击选择该 IP 地址，然后点击 *编辑* 左侧菜单中的。
3. 将“所有者类型”设置为“网络”。
4. 将“所有者”设置为你的 VM NIC 所连接的网络。
5. 点击 *提交* 以保存。
6. 返回 Tenant External 网络视图。
7. 点击 *应用规则* 以激活为路由你的 IP 而创建的自动规则。
8. 导航到你在第 4 步设置的 Tenant 网络。

DNAT 选项：（如果你的工作负载兼容）

1. 点击 *规则* 在左侧面板中。
2. 点击 *新建* 在左侧面板中以创建一条新规则。
3. 为你的规则命名。
4. *可选* ：编写一个有帮助的描述..
5. 将“操作”设置为 *转换*.
6. 将“目标类型”设置为 *我的 IP 地址*.
   1. 从列表中选择你已传递的 IP 地址。
7. 将“目标”设置为以下任一项：
   1. “类型” *我的 IP 地址* 并选择你已在 VergeOS 中为此 VM NIC 配置好的静态 IP 地址。
   2. 或“类型” *IP/自定义* 并手动输入你已设置的静态 IP *本地 IP* 你已经在 VM NIC 上设置的。
8. 点击 *提交* 以保存。

SNAT 配置：（出站转换所需）

1. 点击 *规则* 在左侧面板中。
2. 点击 *新建* 在左侧面板中以创建一条新规则。
3. 为你的规则命名。
4. *可选* 编写一个有帮助的描述。
5. 将“操作”设置为 *转换*.
6. 将“源”设置为以下任一项：（使用与前面步骤中“目标”相同的 IP）
7. “类型” *我的 IP 地址* 并选择你已在 VergeOS 中为此 VM NIC 配置好的静态 IP 地址。
8. 或“类型” *IP/自定义* 并手动输入你已设置的静态 IP *本地 IP* 你已经在 VM NIC 上设置的。
9. 将“目标类型”设置为 *我的 IP 地址*.
   1. 从列表中选择你已传递的 IP 地址。
10. 将“固定”设置为 *顶部* 以将此规则置于其他规则之上，确保它尽早应用。
11. 点击 *提交* 以保存。

路由选项：（如果你的工作负载不兼容 DNAT，可能会有用）

如果你的工作负载不支持 DNAT，客户端必须使用设备上的原生 IP 访问它，并且你只有 1 个可用 IP，那么上面的“DNAT 选项”还有一个替代方案。按照上面的“DNAT 选项”说明执行，并在 *第 5 步* 将你的操作设置为 *路由* 而不是转换。这样会通过原生私有 IP 将公网 IP 的流量发送到 VM。然后，在你的来宾操作系统中的 NIC 上，设置一个 *第二个* 使用公网 IP 和 /32（255.255.255.255）子网的 IP。按照“SNAT 配置”的说明来转换出站流量。此选项 *完全* 取决于来宾操作系统，可能并非在所有情况下都有效。

要使用此方法，请按照上面的“DNAT 选项”说明，并在 *只需 1 处更改，第 5 步改为：* 5. 将“操作”设置为 *路由*.

将公网/外部 IP 地址设置为一个 *第二个* 在来宾操作系统内的 VM NIC 上的地址。这样，发往该 IP 的流量将被路由到原生内部 IP，然后由来宾操作系统通过 /32 单一 IP 处理它。“SNAT 配置”步骤可能仍然需要遵循；来自 VM NIC 的出站流量仍将源自本地 IP，而不是作为第二地址分配的公网 IP，因此 Source NAT 需要在出站时对其进行转换。

***

{% hint style="info" %}
**文档信息**

* 最后更新：2025-02-17
* VergeOS 版本：4.13.3
  {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verge.io/knowledge-base/zh/networking/how-to-use-external-ips-in-tenants.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
