> 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/01-overview-3/06-best-practices.md).

# NAT 网关最佳实践

以下建议按您希望保护的目标分组：**容量与成本**、**SNAT** 路径和 **DNAT** 路径。最后附有故障排查检查清单。

## 容量与成本

CU 计费由每小时*峰值并发连接数*和*峰值 CPS* 中的**较大值**驱动（参见[计费](https://docs.console.zenlayer.com/welcome/cn/elastic-compute/networking/01-overview-3/pages/aD9F3sn0ZgLya4YRTEYZ#计费)）。同样这两个指标也限制了实际性能，因为每个 EIP 的临时端口范围是有限的。同时优化两者。

* **根据峰值并发连接数规划 EIP 池大小。** 每个 EIP 支持有限数量的并发连接。估算峰值并发数，除以每个 EIP 的上限，再绑定相应数量的 EIP（留有余量）。在多个 EIP 间分散流量可按比例扩展可用端口范围。
* **关注 CPS，而非仅仅关注并发数。** 短连接工作负载 — 批处理任务、爬虫、轮询、每请求 HTTP 客户端 — 通常先触及 CPS 上限。如果 CPS 持续是较高的 CU 维度，请添加 EIP、在多个网关间分散负载，或通过连接池进行整合。
* **跟踪哪个维度驱动账单。** 打开网关的**性能**标签页，对比*并发连接数*和 *CPS* 图表。主导维度决定了您的费用，也是将触及性能上限的那个维度。

## SNAT

* **仅为需要出口的子网配置路由。** 数据库层、内部队列和合规范围内的子网根本不应有指向网关的默认路由。使用网关的子网选择功能（而非*所有子网*），并将 SNAT 条目的范围限定为匹配的 CIDR。
* **每次变更后验证路由。** 创建网关或更改子网关联后，打开 [VPC → 路由表](https://console.zenlayer.com/zec/route-table)，按类型 **NAT 网关**过滤，确认每个覆盖子网都有指向网关的默认路由，*然后再*切换实时流量。
* **避免 SNAT 条目重叠。** 源范围重叠的条目将被拒绝。相较于多个相互交错的较小条目，优先为每个源范围创建一条范围明确的条目。

## DNAT

* **对管理访问使用非标准公网端口。** 例如将 SSH 映射为 `2222 → 22`，将 RDP 映射为 `33890 → 3389`。自动扫描工具主要针对默认端口；更换公网面向端口可在不改变实例配置的情况下减少未经请求的连接尝试。
* **为每条 DNAT 条目配合源 IP 过滤。** DNAT 决定*哪个端口访问哪个私有 IP*，但不限制谁能连接。对于敏感端点，请在目标实例上添加安全组规则，仅允许已知源 CIDR。
* **明确指定协议。** 端口映射条目请使用 `tcp` 或 `udp`。`any` 仅保留给有意将所有协议转发到私有 IP 且不指定端口的条目 — 不要将其用作管理端口的"通用"默认值。
* **删除已停用服务的 DNAT 条目。** 未使用的条目会继续接受入站连接尝试。定期审查 DNAT 列表，删除所有不再使用或已迁移至负载均衡器后端的条目。

***

## 故障排查

| 现象                       | 排查方向                                                                                        |
| ------------------------ | ------------------------------------------------------------------------------------------- |
| 创建 SNAT 条目后**实例无法访问互联网** | （1）实例的子网已关联到 NAT 网关。（2）VPC 路由表显示该子网有 NAT 网关默认路由。（3）SNAT 条目匹配该子网或 CIDR，且引用了至少一个可用的 EIP。      |
| **SNAT 条目创建失败，提示重叠错误**   | 另一条 SNAT 条目已覆盖相同的源范围。缩小新条目的范围或更新现有条目 — 不要创建第二条重叠的条目。                                        |
| **外部客户端能连接，但后端从未收到流量**   | （1）DNAT 条目的内部 IP 和端口是否正确，服务是否正在监听。（2）目标实例安全组是否允许来自预期源的内部端口入站流量。（3）DNAT 条目中的协议是否与客户端使用的协议一致。 |
| **连接成功，但延迟高或吞吐量低**       | 打开**性能**标签页，对比*并发连接数*和 *CPS*。如果 CPS 是较高的 CU 维度，请添加 EIP 或将工作负载拆分到多个网关，以缓解每个 EIP 的端口压力。       |
| **网关卡在 `错误` 状态**         | 检查事件日志。最常见原因：活跃条目引用的 EIP 已被释放，或创建时存在资源冲突。如果重建后未能恢复，请联系[支持团队](mailto:support@zenlayer.com)。  |


---

# 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.console.zenlayer.com/welcome/cn/elastic-compute/networking/01-overview-3/06-best-practices.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.
