1. VPC 简介
- Amazon Virtual Private Cloud (Amazon VPC) 允许您在已定义的虚拟网络内启动 AWS 资源。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用 AWS 的可扩展基础设施的优势。
- 刚创建的 VPC 默认是私有虚拟网络,VPC 默认是与其他虚拟网络逻辑上隔离的;
- 允许完全控制网络配置,其中包括:
- Internet 协议(IP)地址范围;
- 子网创建
- 路由表创建
- 网络网关
- 安全设置
- 创建一个可以跟 Internet 互通的 VPC,需要几步?
- 选择网络地址范围
- 在可用区中创建子网
- 创建到 Internet 的路由
- 授权往返 VPC 的流量
1.2 VPC 地址范围选择
- CIDR:无类别域间路由地址块
- 每个 VPC 都必须通过一个 CIDR 块来指定 IPv4 地址范围:
- 创建 VPC 后无法修改这个地址范围;
- 最大 /16(65536 个可用地址),最小 /28(16 个可用地址);
- 地址不应与所连接网络的地址重叠;
-
1.3 VPC 在可用区中创建子网
基于区域和可用区的高可用性构建:
- 每个 VPC 都唯一个区域内;
- 每个账户可以创建多个 VPC;
- 子网:
- 用于划分 VPC 内的空间
- 每个子网位于一个可用区内
- 最佳实践建议:
- VPC 地址段选择 /16
- 子网地址段选择至少 /24
- 每个 VPC 至少要跨两个可用区创建多个子网
- 根据 Internet 可访问性,划分子网为公有子网和私有子网
1.3 打通到 Internet 的路由
- 路由表包含一系列规则,确定 VPC 的网络流量导向何处
- 每个 VPC 有一个主(默认)路由表
- 可以创建自定义路由表
- 所有子网都必须有一个关联的路由表
- 最佳实践:为了提高安全性,给每个子网使用自定义的路由表,当修改子网路由的时候,其他子网不会受牵连
1.3.1 默认本地路由
- 路由表一旦被创建,会有一条默认的本地路由规则(local),它是不可修改的。它定义了 VPC 之内所有子网均可互通的。
- VPC 内的子网与子网之间是不可以做隔离的,可以做隔离的是 VPC 与 VPC 之间;
1.3.2 Internet 网关
- 要跟 Internet 联通,首先要在 VPC 上开一扇门,就需要配置 Internet 网关;
- Internet 网关是将 VPC 链接到 Internet 的虚拟路由器;
- Internet 网关是一种横向扩展、支持冗余且高度可用的 VPC 组件(AWS 已在底层帮助实现了高可用特性);
- 实现 VPC 中的实例与 Internet 之间的通信
- 在 VPC 路由表中为导向 Internet 的流量提供目标
1.3.3 NAT 网关
- NAT(Network Address Translation,网络地址转换协议),通过使用少量的公有 IP 地址代表较多的私有IP 地址;
- 宽带分享:这是 NAT 主机的最大功能。
- 安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。
- NAT 网关允许私有子网中的实例连接到 Internet 或其他 AWS 服务;
- 同时,阻止 Internet 发起与这些实例的连接。
- NAT 网关配置在公有子网中。
1.4 网络安全控制:安全组、ACL
1.4.1 安全组 SG
- 安全组是云中虚拟的防火墙,可控制到 AWS 资源的入站和出站流量
- 流量可由任何 IP 协议、端口或 IP 地址重定向
- 规则是有状态的,当用户从这个端口访问进来的时候,也是允许它出去的
- 安全组链接图表
- 通常将我们的服务按照应用设计成不同的层,给每一层设计不同的安全组
- web 层:允许被通过 HTTPS 443的端口被全网访问到;
- 应用程序层:只允许通过 80 端口被来自 web 层服务器的访问;
- 数据库层(如 Mysql):只允许通过 TCP 3306 的端口被来自应用程序层的访问;
- 通常将我们的服务按照应用设计成不同的层,给每一层设计不同的安全组
- 安全组示例:web 层安全组
- 安全组示例:后端服务器安全组
1.4.2 网络访问控制列表 ACL
- 网络访问控制列表 (ACL) 是 VPC 的一个可选安全层,可用作防火墙来控制进出一个或多个子网的流量。
- 防火墙位于子网边界;
- 默认情况下,允许所有入站和出站流量;
- 是无状态的,要求针对入站和出站流量设置明确规则;
- 建议谨慎使用 ACL:仅限特定网络安全要求
1.5 VPC 为实例提供多层安全防护
- 外部流量通过 VPC 的 Internet 网关,到达路由表;
- 路由表检查有没有路由规则指向指定的子网,有就将流量包发送给子网;
- 在子网的边界有 ACL 做子网入站的检查,查看当前流量包是否在黑名单中;
- 通过 ACL 检查,到达子网后,子网又将流量包交给 EC2 实例外围的虚拟防火墙 SG 安全组;
- SG 安全组做入站规则检查,查看当前访问的端口是否允许被访问,不能访问的话,请求就会被挡在 EC2 实例外面;
- SG 安全组的出站规则,默认是所有流量都允许出站,而且是有状态的,除非做了特别设定;
- 到达子网边界的 ACL,会做出站规则检查,通过后到达路由表;
- 路由表会检查流量是否有指向 Internet 网关的路由规则;
2. Demo -创建一个可以跟 Internet 互通的 VPC
:::info 此时创建的公有子网,才真正变成一个公有子网,对 VPC Internet 网关这扇门对接起来了; :::
:::info
到此,VPC 中网络组件基本已经搭建好了;
现在要创建一个 EC2 服务,希望创建好就可以提供 Web Server 使用,而 Web Server 需要有 DNS 的主机名和 Public IP 可以被访问到;
:::
:::info 启动 EC2 服务; :::
# 用户数据
yum -y update
yum -y install httpd php
chkconfig httpd on
wget https://s3.xxxxx/index.php.zip #S3存储中的一个首页
unzip index.php.zip -d /var/www/html/
service httpd start