10.一篇完全掌握AWS网络技术
推荐超级课程:
@TOC
开篇
在构建云环境系统时,网络设计是最重要的基础。虽然传统本地环境和AWS环境基于相同的网络概念,但构建和管理方式大相径庭。本文通过与传统环境的比较,总结了AWS网络配置的全貌和主要构成要素。
为何需要理解AWS网络
在云上,即使没有物理设备和布线,所有系统也通过“看不见的网络”相连。
理解AWS网络可以降低以下风险:
- 仅允许最低限度的通信,减少外部非法访问
- 排除不必要的通信和配置,降低通信成本
- 合理设计通信路径,减少连接错误和超时等故障
由于云网络与传统环境的机制不同,掌握基本知识至关重要。
比较本地环境与AWS网络
以下总结了本地环境与AWS环境网络构成要素的对应关系:
1. 路由器/防火墙 ⇔ 互联网网关
连接互联网和网络的大门。
2.VLAN(虚拟LAN)⇔ 子网
根据目的划分网络,以便整理和管理不同类型的服务器或功能。可以为每个段设置不同的通信规则和访问权限。
3. NAT路由器 ⇔ NAT网关
使内部网络能够访问互联网,但不会被外部直接访问。
4. 服务器防火墙 ⇔ 安全组
仅允许特定通信,防止非法访问。
接下来,比较本地环境与AWS云环境的特征。
本地环境
- 需要物理网络设备、服务器的布置和物理电缆连接
- 需要购买、安装和维护设备
AWS云环境
- 仅用一台PC即可构建虚拟网络
- 无需物理设备和管理
总的来说,本地环境是“由物理设备构成的网络”,AWS云环境是“使用GUI或IaC工具定义和更改的虚拟网络”。
AWS网络配置全貌
AWS网络以VPC(虚拟私有云)为中心构建。
AWS网络配置就像家的设计图。
- 家整体 = VPC
- 大门 = 互联网网关
- 大门上的门牌 = 弹性IP
- 通向大门的暗道 = NAT网关
- 房间 = 子网
- 客厅 = 公共子网
- 自己的房间 = 私有子网
- 后门 = VPC端点(接口型)
- 围墙 = 网络ACL
- 家的墙壁 = 安全组
- 通向阁楼的折叠梯 = 踏板服务器
※使用者和使用时机有限,并非始终开放
各网络构成要素
VPC
与AWS账户关联的专用虚拟网络空间。
并非一开始就与互联网连接,而是作为“隔离空间”运行,可以自行决定通信规则和配置。在VPC中设定IP地址范围(10.0.0.0/16),设计互联网网关、子网、路由表等网络配置,通过安全组和网络ACL进行通信控制。
子网(Subnet)
子网是用于分割和管理VPC内虚拟网络的更小网络单位。使用子网可以将外部可访问的服务器(Web服务器)和内部使用的服务器(数据库服务器)分开部署。
子网只能属于一个可用区(AZ)。
AZ是物理上分类的数据中心群。
如果子网跨越多个AZ,一旦某个AZ发生故障,
(注:原文在此处突然中断,可能还有后续内容未提供。)如果整个子网都在同一个可用区,那么整个子网可能会受到影响。
也就是说,子网必须限定在一个AZ内,不能跨越多个AZ
这是其规格要求。
子网分为两种:
公共子网
- 通过IGW可以直接从互联网访问的子网
- 部署需要对外公开的Web服务器等
私有子网
- 不通过IGW,无法直接从互联网访问的子网
- 部署仅在内部通信的应用程序服务器、数据库服务器等资源
互联网网关(IGW:Internet Gateway)
是连接VPC内资源与互联网的虚拟出入口。
通过将这个网关附加到VPC上,并在路由表中指定路由,公共子网中的资源就可以与互联网通信。
- 将IGW附加到VPC
- 将公共子网所属资源的路由表设置为
0.0.0.0/0 ⇒ IGW
- 在安全组中设置入站/出站许可
这样,VPC内的资源就可以首次与互联网通信。
弹性IP (EIP)
Elastic IP是AWS提供的静态公共IP地址。即使实例重启或更换,IP地址也不会改变,可以始终使用相同的IP地址进行访问。可以分配给通过IGW与外部通信的资源。Elastic IP可以立即更换到其他实例,而无需等待DNS更改,因此有助于确保高可用性和故障应对。但是,即使未使用也会产生费用,因此建议避免不必要的EIP分配,只在需要时使用。
NAT网关(NAT:Network Address Translation Gateway)
NAT网关是使VPC内私有子网能够访问互联网的中继角色。通过NAT网关,可以实现内部资源访问互联网的“单向通信”。由于外部无法直接访问,因此在保持安全的同时可以利用外部服务或进行软件更新。
路由表(Route Table)
路由表是通信路径的信息和规则。
它承担着决定VPC内通信“去往何处”“如何到达”的地图角色。
每个子网都关联着一个路由表,指定该子网出站通信的目的地和使用的路由(网关)。在这里控制该子网出站通信是内部通信还是外部通信。
路由表示例如下:
目的地(Destination) | 目标(Target) | 说明 |
---|---|---|
10.0.0.0/16 | local | 同VPC内的通信在VPC内部路由 |
0.0.0.0/0 | igw-xxxxxxxx | 到互联网的通信通过IGW |
VPC端点
VPC端点是一种无需经过互联网,即可从VPC内安全访问S3或DynamoDB等AWS服务的机制。由于无需使用互联网网关或NAT网关,通信在VPC内完成,因此有助于提高安全性和降低成本。
VPC端点分为两种:
- 网关型VPC端点
- 用于需要存储/检索数据的情况
- 仅访问S3、DynamoDB
- 通过路由表控制
- 接口型VPC端点
- 用于需要与各种服务进行私有连接的情况
- 在VPC内创建ENI(Elastic Network Interface)=虚拟网络卡进行通信
安全组(SG:Security Group)
安全组是针对EC2实例、RDS等资源的实例级别防火墙。安全组是有状态的机制,允许外部通信时,自动允许返回通信(响应)。也就是说,允许单向通信后,双向通信也成为可能,这是有状态的特点,即记住通信状态(连接相关性)。
- 可以详细设置允许的通信协议(例如:SSH、HTTP、HTTPS)
- 允许的端口号码(例如:22、80、443)
- 允许的访问来源(发送方IP地址)
等条件。
无法设置拒绝规则!
安全组只能定义允许的通信,
未定义的通信都会被阻断。
网络ACL(Network Access Control List)
网络ACL是子网级别控制通信的防火墙。统一控制属于一个子网的所有实例的通信。网络ACL是无状态的机制,不记住通信状态,因此需要明确允许外部通信和返回通信。例如,不仅需要允许Web服务器的HTTP请求(接收),还需要单独允许其响应(发送)。
- 可以设置允许或拒绝的通信协议(例如:SSH、HTTP、HTTPS)
- 允许或拒绝的端口号码(例如:22、80、443)
- 允许或拒绝的访问来源(发送方IP地址)
等条件。
可以设置允许和拒绝的规则!
也可以明确阻塞特定IP地址的访问。
每个规则都有编号,按编号从小到大评估,首先匹配的规则将被应用。之后的规则不再评估。初始状态下,通常设置为允许所有通信,在实际操作中,除非需要复杂的控制,否则网络ACL通常保持默认设置。### AWS WAF(Web应用防火墙)
AWS WAF是一种保护资源免受SQL注入、XSS等Web应用程序攻击的防火墙。AWS WAF不控制网络层(Layer 3)或传输层(Layer 4)的通信,仅针对应用层(Layer 7)的HTTP/HTTPS通信。也就是说,它不能用于VPC内的通信控制。它仅是针对Web应用的防火墙。因此,在AWS的网络安全措施中,需要明确区分使用安全组和网络ACL等服务。
以下是不同层级的角色定位图:
跳板服务器(Bastion)
跳板实例是用于安全访问私有子网内资源的中继点EC2实例。通常部署在公共子网中,通过限制SSH或RDP连接到特定管理员IP,防止直接访问内部资源,从而提高安全性。现在,使用AWS Systems Manager(SSM)可以实现无需跳板服务器的安全连接,这种方式正在成为主流。
总结
AWS的网络配置需要与本地环境不同的思考方式。
理解基本配置后,可以构建安全且高效的云环境。