> 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/tenants/configuring-tenant-external-ips.md).

# 租户外部 IP 快速入门指南

## 概述

本指南涵盖了在 VergeOS 租户内运行的虚拟机提供外部/公共 IP 地址的最常见场景。无论您需要让单个虚拟机可从互联网访问，还是为客户分配整段 IP 地址，本指南都会逐步引导您完成配置。

{% hint style="info" %}
**相关文档**

有关更高级的场景，包括虚拟交换机端口和详细的 NAT 配置，请参阅 [如何在租户中使用外部 IP](/knowledge-base/zh/networking/how-to-use-external-ips-in-tenants.md).
{% endhint %}

## 前提条件

* 一套至少配置了一个租户的 VergeOS 系统
* 在根 External 网络上可用的公共/外部 IP 地址
* 对根环境和租户环境均具有管理访问权限

## 场景 1：为一个租户虚拟机分配单个外部 IP

**使用场景：** 您只有一个公共 IP，并且希望某个特定的租户虚拟机可从互联网访问（例如用于 RDP、SSH 或 Web 服务）。

### 步骤 1：将 IP 分配给租户（根级别）

1. 导航到 **网络** > **外部** （您的根外部网络）
2. 点击 **IP 地址** 在左侧菜单中
3. 点击 **新建** 以添加新的 IP 地址
4. 配置：
   * **类型：** 虚拟 IP
   * **IP 地址：** 输入您的公共 IP（例如， `203.0.113.50`)
   * **所有者类型：** 租户
   * **所有者：** 选择您的租户
5. 点击 **提交**
6. 返回 External 网络仪表板并点击 **应用规则**

### 步骤 2：将 IP 分配给租户网络（租户级别）

1. 登录到租户 UI
2. 导航到 **网络** > **外部**
3. 点击 **IP 地址** - 您应该会看到带有“来自服务提供商的外部 IP”描述的 IP
4. 选择该 IP 并点击 **编辑**
5. 设置：
   * **所有者类型：** 网络
   * **所有者：** 选择虚拟机所连接的内部网络
6. 点击 **提交**
7. 点击 **应用规则** 在 External 网络上

### 步骤 3：为虚拟机创建 NAT 规则

在租户的 **内部网络** （虚拟机所在的网络）：

1. 导航到 **规则** 在左侧菜单中
2. 创建一个 **DNAT 规则** （入站流量）：
   * **名称：** `入站到虚拟机`
   * **操作：** 转换
   * **方向：** 入站
   * **目标类型：** 我的 IP 地址
   * **目标：** 选择外部 IP
   * **目标类型：** IP/自定义
   * **目标：** 输入虚拟机的内部 IP（例如， `10.0.0.50`)
3. 创建一个 **SNAT 规则** （出站流量）：
   * **名称：** `从虚拟机出站`
   * **操作：** 转换
   * **方向：** 出站
   * **源类型：** IP/自定义
   * **源：** 输入虚拟机的内部 IP
   * **目标类型：** 我的 IP 地址
   * **目标：** 选择外部 IP
   * **固定：** 顶部
4. 点击 **应用规则**

### 步骤 4：允许流量通过防火墙

仍然在租户的内部网络规则中：

1. 创建一个 **接受规则** 用于您的服务：
   * **名称：** `允许 RDP` （或您的服务）
   * **操作：** 接受
   * **协议：** TCP
   * **目标端口：** 3389（或您的服务端口）
   * **目标类型：** 我的 IP 地址
   * **目标：** 选择外部 IP
2. 点击 **应用规则**

现在，您的虚拟机应该可以通过指定端口从互联网访问了。

***

## 场景 2：为多个租户虚拟机分配一个 IP 段

**使用场景：** 您有一个 /29 或更大的公共 IP 地址块，并且想将它们直接分配给虚拟机。

### 步骤 1：创建网络块（根级别）

1. 导航到 **网络** > **外部**
2. 点击 **网络块** 在左侧菜单中
3. 点击 **新建**
4. 配置：
   * **网络块：** 输入您的 CIDR 块（例如， `203.0.113.48/29`)
   * **所有者类型：** 租户
   * **所有者：** 选择您的租户
5. 点击 **提交**
6. 点击 **应用规则**
7. 导航到 **租户网络**，按“需要应用防火墙：是”筛选
8. 选择您的租户网络并点击 **应用规则**

### 步骤 2：从该块创建网络（租户级别）

1. 登录到租户 UI
2. 导航到 **网络** > **外部**
3. 点击 **网络块** - 您应该会看到您的块
4. 选择该块并点击 **新建网络**
5. 网络设置已预先配置为：
   * **地址类型：** 静态（使用您地址块的编址）
   * **DHCP：** 启用，并提供可用 IP
6. 为该网络命名 **名称** （例如， `Public-Network`)
7. 点击 **提交**
8. 点击 **开机** 以启动该网络

### 步骤 3：连接虚拟机

1. 编辑您的虚拟机，并添加一个连接到新公共网络的 NIC
2. 虚拟机可以：
   * 使用 DHCP 自动接收 IP
   * 配置为使用该块中的静态 IP

{% hint style="success" %}
**防火墙注意事项**

公共网络上的虚拟机是直接暴露的。请在网络上或客户机操作系统中配置防火墙规则以限制访问。
{% endhint %}

***

## 场景 3：虚拟机上没有公共 IP 的外部访问

**使用场景：** 您希望互联网用户能够访问租户虚拟机，但该虚拟机应保留其私有 IP。

这与场景 1 相同，但只使用 DNAT/SNAT 规则。虚拟机保留其内部 IP，而 NAT 规则负责转换流量。

**优点：**

* 虚拟机无需知道公共 IP
* 更简单的虚拟机配置
* 可以在不重新配置虚拟机的情况下更改公共 IP

***

## 故障排除

### 虚拟机无法从互联网访问

1. **检查规则应用：** 确保在所有受影响的网络上都点击了“应用规则”
2. **验证 IP 所有权链：** 根 External → 租户 External → 租户内部网络
3. **检查 NAT 规则：** 需要同时配置 DNAT（入站）和 SNAT（出站）
4. **先在内部测试：** 您能从租户内部访问该虚拟机吗？
5. **检查防火墙规则：** 流量是否在到达 NAT 之前被阻止？

### 虚拟机无法访问互联网

1. **检查 SNAT 规则：** 确保已配置出站转换
2. **验证默认路由：** 租户的外部网络需要正确的路由
3. **检查 DNS：** 验证虚拟机已配置 DNS，或者 DHCP 正在提供 DNS

### Ping 正常但服务不通

1. **检查特定端口规则：** 每个服务端口都需要接受规则
2. **验证服务是否正在运行：** 检查该服务是否在虚拟机上监听
3. **检查客户机防火墙：** Windows 防火墙或 iptables 可能正在阻止

***

## 快速参考

| 任务         | 位置                      | 操作          |
| ---------- | ----------------------- | ----------- |
| 将 IP 分配给租户 | Root External > IP 地址   | 设置所有者类型：租户  |
| 将 IP 分配给网络 | Tenant External > IP 地址 | 设置所有者类型：网络  |
| 创建 DNAT 规则 | Tenant Internal > 规则    | 操作：转换，方向：入站 |
| 创建 SNAT 规则 | Tenant Internal > 规则    | 操作：转换，方向：出站 |
| 允许流量       | Tenant Internal > 规则    | 操作：接受，指定端口  |


---

# 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/tenants/configuring-tenant-external-ips.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.
