AWS VPC 互联网访问清单
绘制图表
执行清单
结论
关于 AWS 虚拟私有云 (VPC) 网络组件的优秀文章有很多,因此这里是我针对在需要访问互联网或从互联网访问的AWS VPC 中运行的工作负载编写的 VPC 互联网访问故障排除清单。
绘制图表
首先,我会在脑子里画一幅网络图。一开始会粗略地画出网络细节,只画出主要跳数。如果画不出来,那就拿张纸或平板电脑,把网络图画出来!(画图也没什么不好意思)。记下公有/私有子网、网关和 IP 地址方案(尽量记下来)。
为了本次讨论的目的,我定义:
- 公共子网 - 包含已分配私有 IP 和公共 IP 的实例以及直接路由到 Internet 网关的路由表的子网
- 私有子网 - 仅包含私有 IP(不可通过互联网路由)实例的子网
执行清单
一旦我了解了流量的一般来源/目的地流程,我就可以查看我的清单:
1-我有公共 IP 吗?
您的实例需要有一个公共 IP 或借用一个 IP 来发送/接收来自互联网的请求。
-
动态 AWS 公网 IP - 可以在 EC2 启动时分配,方法是选择“自动分配公网 IP:已启用”;如果要部署到的子网已启用自动分配公网 IP,则可以使用默认选项“自动分配公网 IP:使用子网设置”。请记住,这些 IP 地址是动态的,可能会随着实例的启动/停止/崩溃而发生变化。
-
弹性 IP(静态公网 IP)——可以分配给您的账户,然后与您的某个实例或弹性网络接口 (ENI) 关联。除非您将这些 IP 释放回 AWS,否则它们不会更改。对于某些类型的简单 EC2 转换(通过将 EIP 与不同的实例或 ENI 重新关联)非常有用。
-
网络地址转换 (NAT) 服务器或网关 - NAT 服务器可以部署在 VPC 中,允许“私有”实例(没有直接的公网 IP)借用/使用 NAT 的公网 IP(通过封装)。在 AWS 上,您可以构建自己的 NAT 实例或使用 AWS NAT 网关(费用可能较高,请谨慎使用)。如果使用基于 NAT 的解决方案,则实例子网中的路由表需要将其默认路由 (0.0.0.0/0) 指向 NAT 实例/网关,而不是仅仅指向互联网网关(见下文)。
2 – 我有互联网网关吗?
VPC 的互联网网关的工作方式类似于家用路由器上的 WWW/Internet 端口,它提供从 VPC 到互联网和返回的路径。
-
确保您已配置互联网网关 (IGW)。
-
确保 IGW 也已连接到您的 VPC。这是最后一步,使 IGW 可用作路由目标(请参阅下文的路由)
-
如果基于 NAT 的访问用于“私有”实例,您的 VPC 仍然需要一个 IGW 来让 NAT 实例/网关发送流量(请参阅下面的路由)
3 – 我有上网路线吗?
路由表和规则提供了将 IP 流量引导至互联网的指令。
-
公共子网:
- 验证您有与您的 VPC 关联的路由表
- 验证子网的关联路由表是否包含默认 (0.0.0.0/0) 路由
- 验证默认路由 (0.0.0.0/0) 是否针对有效的 IGW(请参阅上面的互联网网关)
-
私有子网: (需要 NAT)
- 验证您有与您的 VPC 关联的路由表
- 验证子网的关联路由表是否包含默认 (0.0.0.0/0) 路由
- 验证默认路由 (0.0.0.0/0) 是否指向您的 NAT 实例/网关的 ENI
4 - 是否有任何东西可以过滤往返互联网的流量?
检查往返互联网路径上的所有防火墙。考虑流量的方向和正在使用的应用程序端口,例如 HTTP/S (80/443)、SSH (22)、RDC/RDP (3389)
-
实例的操作系统上是否有任何东西过滤流量?
- Windows 防火墙
- Linux IP表
- 第三方保护工具(TrendMicro、Avast、CheckPoint 等)
-
安全组 (SG) 是否过滤流量?
- 哪些 SG(可能有多个)已附加到我的实例的 ENI,请进行盘点
- 是否配置了有效的入站规则?
- 正确的源地址模式?
- 正确的协议?
- SG 规则只能配置为允许流量(从不拒绝)
- SG 默认是“有状态的”,允许回复。默认的出站“允许所有”规则是否完好无损?(大多数情况下应该如此)
-
网络访问控制列表 (NACL) 是否会过滤我的实例子网的流量?
- 默认 NACL 是否仍然完好?(允许所有入站并允许所有出站)
- 如果是自定义 NACL:
- 是否配置了有效的入站规则?
- 是否配置了有效的出站规则?
- 规则的排序有问题吗?“规则编号”控制排序/优先级。数值越高,优先级越高。
- NACL 规则是“无状态的”。您必须同时定义入站和出站规则
- NACL 中是否配置了任何DENY规则?
-
还有其他网络设备可以过滤流量吗?
根据您的子网/VPC/路由的配置方式,流量可能会经过某种网络连接系统,而该系统会过滤流量。这很可能会在您之前进行的路由检查中显示出来。请检查默认规则 (0.0.0.0/0) 中是否存在奇怪的目的地或奇怪的网关目的地。许多网络可能配置了 VPN 隧道、专门的过滤或监控设备。请联系您的安全团队并通过这些渠道上报问题。
结论
这样的检查清单甚至对“经验丰富”的专业人士也很有帮助,因为它迫使你使用一套流程,而不是依赖认知记忆,避免可能引入人为错误。首先,绘制一个你认为的网络路径的基本图表,然后按照清单进行操作。通常,这些步骤可以帮助排除几乎所有网络连接资源的访问故障。
哎呀,就在前几天,我在做一个关于 AWS 主题的演示时,忽略了一个简单的安全组问题。简单的步骤可以带来简单的解决方案,这在过于复杂的技术世界中是一个优势。
鏂囩珷鏉ユ簮锛�https://dev.to/aws-builders/aws-vpc-internet-access-checklist-55fi