LabHub
学习 学习路径 课程

云网络设计

NAT 网关高居账单第一的原因

在 LabHub 中继续学习

一句话总结

私有资源访问外部共有三条路径,它们的费用和安全性各不相同。 不加思考就使用 NAT,它很可能登上账单费用排行榜前列。

概念图: 它们的费用和安全性各不相同。 · 只是选错了路径 · 按小时 + 数据处理量 · 不经过互联网

为什么需要了解这些

创建私有子网后,其中的实例默认没有访问外部的路径。但它们仍需要获取软件包更新、上传日志,以及拉取容器镜像。

最简单的答案是部署一个 NAT 网关,因此大多数人都会这样做,之后便再也不检查。私有子网的所有出站流量汇聚到这一处,费用按经过的数据量不断累积。

几个月后按项目拆分账单,NAT 往往位列第一。多数情况下,这些流量并非不必要,只是选错了路径;只要改变路径,费用就会消失。因此要把出站路径分成三类,并预先确定在什么情况下使用哪一种。

三条路径

方式 定义 费用 安全性
互联网网关(IGW) 公有子网的双向通道 网关本身免费 暴露公网 IP
NAT 网关 私有网络 → 互联网的单向通道 按小时 + 数据处理量 安全,外部无法主动进入
VPC 端点 直达云服务 网关型免费 / 接口型收费 不经过互联网

NAT 费用为何会膨胀

NAT 网关有两种计费方式。

1. 시간당 요금        — 켜 두기만 해도 나간다
2. 처리 데이터 요금   — GB 당. 나가는 것도 들어오는 것도

如果为了可用性在每个可用区分别部署一个,费用还会按数量倍增。3 个可用区就意味着 3 个 NAT。

问题主要出在第二项。如果私有子网中的实例从 S3 读取大量数据,全部流量都会经过 NAT,即使 S3 就位于同一区域。日志归档、备份、容器镜像拉取都会从这里通过。

VPC 端点解决什么问题

端点会在 VPC 内建立一条通往云服务的专用通道。流量既不经过互联网,也不经过 NAT。

仅仅创建 S3 网关端点,就经常能让 NAT 费用降到一半以下。这是优化云成本时最先检查的项目之一。

它在安全方面的收益也很大:可以通过端点策略限制为只能访问本账户的存储桶,从而收窄数据外泄路径。

可替代堡垒机的方案

过去,为了访问私有实例,通常会部署堡垒机(跳板机);如今使用替代方案往往更好。

堡垒机本身就是需要管理的对象,包括补丁、密钥和日志,而且必须开放 22 端口。如果能够移除,最好就不要保留。

连接本地数据中心

方式 特点
站点到站点 VPN 在互联网之上的加密隧道,部署迅速;带宽和延迟受互联网影响
专线 带宽和延迟稳定;建设需数周到数月,成本高
中转网关 以星形连接多个 VPC 与本地数据中心,简化管理

VPC 超过三四个后,用对等连接构建网状拓扑很快就会达到极限(N 个 VPC 需要 N(N-1)/2 条连接)。这时就该引入中转网关。

控制出站路径会带来什么变化

大多数系统都能很好地封锁入站路径。人们开放出站路径的理由是“从内部访问外部是安全的”,但入侵之后的所有步骤都依赖出站通信:下载工具、接收命令、发送数据。

先默认阻止,再只开放必要目标。 不过,一次性全部封锁会让服务停止,因此首先要统计实际访问了哪些外部目标。起点不是统计流日志中的拒绝记录,而是统计允许记录

允许列表应按名称而不是 IP 管理,才能长期有效。 外部 API 的地址会频繁变化。写死 IP 会在某天悄无声息地断开,而当时为了救急而放宽的规则往往会永久残留。应使用基于名称的策略或代理来管理该列表。

强制经过代理会同时获得两项能力。 系统能够记录流量去向,也能阻止访问列表之外的目标。但代理会成为单点故障,还必须决定如何处理 TLS。若要查看通信内容,就必须在中间替换证书;这会让代理成为能够以明文查看所有通信的位置。多数组织会选择只查看目标名称(SNI),而不检查内容。

访问元数据服务的路径最为特殊。 在云环境中,169.254.169.254 会提供实例凭据。如果应用存在 SSRF 漏洞,攻击者就能让它访问这个地址,从而夺取全部权限。最可靠的防御不是防火墙,而是元数据服务自身的设置,例如强制 IMDSv2 和限制跃点数。

DNS 同样是一条出站路径。 即使阻止所有端口,只要 DNS 查询仍能发出,就可以借此一点点向外传输数据。实际可行的对策是仅允许使用内部解析器,保留解析器的查询日志,并监控不同于平常的查询量

生产现场会看到什么

下一步要看什么

名称解析与负载均衡——决定流量实际去向的最后一层。