Amazon Virtual Private Cloud 文档 VPC允许我们在基础设施中提供一个逻辑上隔离的部分,在这里我们可以在我们定义的虚拟网络中启动AWS资源。我们完全控制:
- 虚拟网络环境,包括选择IP地址范围、创建子网
- 路由表的配置
- 网络网关
此外,我们可以在公司数据中心和VPC之间创建硬件VPN或专线直接连接,并在默认情况下利用AWS云作为公司数据中心的扩展
CIDR,专用与公用IPv4
CIDR-IPv4(无类域间路由)
CIDR通常用于安全组规则或AWS网络。它们有助于定义IP地址范围
- 192.168.100.0/32->一个IP
- 0.0.0.0/0->所有IP
- 我们还可以做一些类似192.168.0.0/26的事情,这意味着有64个IP(192.168.0.0-192.168.0.63)
CIDR由两部分组成:
- 基本IP(xx.xx.x.x):它表示范围中包含的IP
- 子网掩码(/32):定义IP范围中可以变化的位数
子网ask可以采取两种形式
- 255.255.255.0
- /24
例子: /24允许2^(32-24)=2^8=256个来自基本IP的IP
私有与公共IPv4
Internet分配号码管理局Internet Assigned Numbers Authority(IANA)建立了某些IPv4地址块,以供专用(LAN)和公用(Internet)地址使用
专用/私有IP只能允许某些值
- 10.0.0.0-10.255.255.255(10.0.0.0/8)<-在大型网络中
- 172.16.0.0-172.31.255.255(172.16.0.0/16)<-AWS
- 192.168.0.0-192.168.255.255(192.168.0.0/16)<-家庭网络
互联网上所有其余的IP都是公共IP
AWS默认专有网络概述
- 所有新帐户都有一个默认VPC:172.31.0.0/16
- 如果未指定子网,则会将新实例启动到默认VPC中
- 默认VPC具有internet连接,并且所有实例都具有公共IP(以便我们可以使用该实例执行类似于yum update…)
- 我们还获得了一个公共和私有DNS名称
对于默认VPC
- 用户友好,允许您立即部署实例。
- 默认VPC中的所有子网都有到internet的路由。
- 每个EC2实例都有一个公共和私有IP地址。
VPC概述
VPC中的IPv4
- 一个区域中可以有多个VPC(每个区域最多5个,但这是一个软限制,可以申请提高配额)
- 每个VPC的最大CIDR为5。对于每个CIDR ○ 最小大小为/28:16个IP地址 ○ 最大大小为/16:65536个IP地址
- 您的VPC CIDR不应与其他网络重叠
子网Subnet概述
AWS在每个子网中保留5个IP(IP范围中的前4个和最后1个)。这5个IP不可使用,无法分配给实例。 例如,如果CIDR块为10.0.0.0/24,则保留的IP为:
- 10.0.0.0:网络地址
- 10.0.0.1:AWS为VPC路由器保留,用于网关
- 10.0.0.2:由AWS保留,用于映射到AWS提供的DNS
- 10.0.0.3:由AWS保留,以备将来使用
- 10.0.0.255:网络广播地址。AWS不支持VPC中的广播
如果您需要EC2实例的xx个IP,在执行CIDR块时,请记住-5(四舍五入) 例如,如果您需要29个IP,请选择/26(64个IP)而不是/27(32个IP)
互联网网关IGW
- Internet网关帮助我们的VPC实例连接到Internet
- 它可以水平扩展,并且是HA和冗余的
- 必须与VPC分开创建
- 一个VPC网络只能连接到一个互联网网关,反之亦然(如“1对1关系”)
- Internet网关也是具有公共IPv4的实例的NAT
IGW本身不允许访问internet,因此还必须编辑路由表
NAT实例和NAT网关
NAT实例(过时但在SAP考试中还有)
NAT代表网络地址转换,它允许私有子网中的实例连接到internet
- 尝试创建NAT实例时,请先禁用实例上的源/目标检查
- NAT实例必须位于公共子网中。
- 必须将路由表配置为将流量从专用子网路由到NAT实例,才能使其工作。
- 必须有弹性IP连接到它
- NAT实例可以支持的通信量取决于实例大小。如果您遇到瓶颈,请增加实例大小。
- 您可以使用自动缩放组、不同AZ中的多个子网以及自动化故障切换的脚本来创建高可用性。
- 它在安全组后面
必须管理安全组和规则
- inbound ○ 允许来自专用子网的HTTP/HTTPS通信 ○ 允许从家庭网络进行SSH(通过Internet网关提供访问)
- outbound ○ 允许到internet的HTTP/HTTPS通信
NAT Gateway
- AWS管理的NAT实例,更高的带宽,更好的可用性,无需用户管理
- NAT网关在可用性区域AZ内是冗余的。每个可用区域AZ一个NAT网关。
- 不与安全组关联。安全组关联实例instance
- NAT网关使用弹性IP在特定的AZ中创建
- 无需禁用源/目标检查。
- 为了获得高可用性,我们应该在每个可用性区域中创建一个NAT网关。
- 从5 Gbps开始,当前扩展到45 Gbps。自动缩放
- 需要Internet网关典型情况 ○ 私有子网将与NAT网关通信,NAT网关将与IGW通信,以便我们的私有实例可以与internet通信 ○ 私有子网需要配置路由表
NAT网关的高可用性
- NAT网关在单个网络中具有弹性
- 但是,为了容错,必须在多个AZ中创建多个NAT网关
- 不需要跨AZ故障切换,因为如果AZ发生故障,则不需要NAT
Comparison of NAT Instance and NAT Gateway
属性 | NAT 网关 | NAT 实例 |
---|---|---|
可用性 | 高度可用。每个可用区中的 NAT 网关都采用冗余实施。在每个可用区中创建一个 NAT 网关可确保架构不依赖于可用区。 | 使用脚本管理实例之间的故障转移。 |
带宽 | 可以纵向扩展到 45 Gbps。 | 取决于实例类型的带宽。 |
维护 | 由管理AWS 您不需要进行任何维护。 | 由您管理,例如您需要对实例安装软件更新或操作系统补丁。 |
性能 | 软件经过优化以便处理 NAT 流量。 | 配置来执行 NAT 的通用 AMI。 |
费用 | 费用取决于您使用的 NAT 网关的数量、使用时长以及您通过 NAT 网关发送的数据量。 | 费用取决于您使用的 NAT 实例的数量、使用时长以及实例类型和大小。 |
类型和大小 | 整合提供;您不需要选择类型或范围。 | 根据您的预测工作负载选择适当的实例类型和大小。 |
公有 IP 地址 | 创建时选择弹性 IP 地址,与公有 NAT 网关关联。 | 为 NAT 实例使用弹性 IP 地址或公有 IP 地址。您随时可以通过将新的弹性 IP 地址与实例关联来更改公有 IP 地址。 |
私有 IP 地址 | 在您创建网关时自动从子网的 IP 地址范围中选择。 | 在您启动实例时,从子网的 IP 地址范围内分配特定的私有 IP 地址。 |
安全组 | 您不能将安全组与 NAT 网关相关联。您可以将安全组与 NAT 网关后的资源关联,以控制入站和出站流量。 | 与您的 NAT 实例和 NAT 实例之后的资源关联,以控制入站和出站流量。 |
网络 ACL | 使用网络 ACL 控制进出您的 NAT 网关所在子网的流量。 | 使用网络 ACL 控制进出您的 NAT 实例所在子网的流量。 |
DNS Resolution Options
DNS解析选项:
- enableDnsSupport 支持DNS解析设置 ○ 默认为True ○ 帮助确定专有网络是否支持DNS解析 ○ 如果为True,则通过169.254.169.253查询AWS DNS服务器
- enableDnsHostname DNS主机名设置 ○ 自定义VPC默认为False,默认VPC为True ○ 除非enablednsupport=True,否则不会执行任何操作 ○ 如果为True,则将公共主机名分配给EC2实例(如果它具有公共主机名) 如果在Route 53的专用区域中使用自定义DNS域名,则必须将这两个属性都设置为true
NACL & Security Groups
Inbound / Outbound
- 安全组是有状态的,这意味着,即使出站规则在入站请求通过时拒绝所有内容,该请求也可以通过出站(规则检查)
- NACL是无状态的,这意味着入站和出站是分开计算的
网络ACL
- NACL就像一个防火墙,控制子网之间的流量
- 默认情况下,NACL允许所有出站和入站内容
- 每个子网一个NACL,新子网被分配默认NACL
定义NACL规则
- 规则有一个数字(1-32766),数字越小,优先级越高
○ 例如,如果定义#100 ALLOW
和#200 DENY ,则将允许IP,因为100具有更高的优先级(#100<#200) ○ 100,200是规则数字,或者你可以说它是“重量”,只要你能记住它 ○ 最后一条规则是星号(*),在没有规则匹配的情况下拒绝请求 ○ AWS建议增量 为100 的规则 - 新创建的NACL将default否认any
- NACL是在子网级别阻止特定IP的一种很好的方法
这类似于VPC中所有(或任何)子网的安全组。我们可以添加允许/拒绝规则。默认VPC附带默认网络ACL,默认情况下,它允许所有出站和入站流量。 创建自定义网络ACL时,默认情况下拒绝所有入站和出站流量,直到添加规则。VPC中的每个子网都必须与网络ACL相关联。如果未将子网与网络ACL显式关联,则该子网将自动与默认网络ACL关联。
注意:要阻止IP地址,我们需要使用ACL,而不是安全组。
- 网络ACL可以与N个子网关联,但1个子网只能与1个NACL关联。
- 网络ACL包含按顺序计算的规则的编号列表,从编号最低的规则开始。
- 网络ACL有单独的入站和出站规则,每个规则可以允许或拒绝流量。
- 网络ACL是无状态的;对允许的入站流量的响应受出站流量规则的约束,反之亦然。
临时port
实际上,为了涵盖可能向VPC中面向公众的实例发起通信的不同类型的客户端,您可以打开临时端口1024-65535
配置VPC
- 转到专有网络服务>您的专有网络>创建专有网络
- 填写IPv4 CIDR块和租约,然后单击创建。
目前尚未创建任何子网和internet网关。已创建路由表、网络ACL和安全组。安全组不能跨越VPC。
- 转到子网->创建子网
- 命名,选择我们的VPC、可用性区域和IPv4 CIDR块。最后,单击create。
默认情况下,没有子网具有公共IP。为此,选择子网并单击操作,使其自动应用公共IP。Amazon始终为您的子网保留5个IP地址。
- 转到Internet网关->创建Internet网关
- 命名它并单击create。
- 选择它并通过操作将internet网关连接到VPC(只能将VPC连接到一个internet网关)
目前,我们所有的专有网络都是公共的,因为我们的routes允许。让我们解决这个问题:
- 转到route表->选择我们的路线表并选择“route”
- 编辑route
- 用目标internet网关填充目标(任意IP)
- 转到子网关联
- 编辑子网关联以选择需要公开的子网。
现在,我们无法通过ssh从公共子网访问私有EC2实例。
- 转到EC2>安全组->创建安全组
- 选择我们的VPC,键入“All ICMP”(协议ICMP),并将源输入公共子网。
- 选择我们的VPC,键入“SSH”并将源文件添加到私有子网。
- 更改EC2实例的安全组。
VPC Peering
- 允许您使用专用private IP地址通过直接网络路由将一个VPC连接到另一个VPC
- 实例的通信就像它们在同一个PVC上一样
- 不得有重叠的CIDR
- 我们可以与其他AWS帐户以及同一帐户中的其他VPC对等VPC
- 必须更新每个VPC子网中的路由表,以确保实例可以通信
注意:VPC的连通性不可传递,如下图所示:
Reference:
https://docs.aws.amazon.com/vpc/latest/peering/invalid-peering-configurations.html#transitive-peering
VPC Endpoints
There are two types: interface and gateway. Currently, gateway endpoints support S3 and DynamoDB
端点Endpoint允许使用专用网络而不是公用网络连接到AWS服务
可以水平缩放并且是冗余的
端点不再需要IGW、NAT网关等。。访问AWS服务
接口Interface:提供一个ENI(专用IP地址)作为大多数AWS服务的入口点(必须连接安全组)
网关Gateway:提供一个目标,必须在路由表中使用-S3和DynamoDB
排查问题:
○ 检查VPC中的DNS设置 ○ 检查路由表
Enable Private DNS Name: To use private DNS names, ensure that the attributes ‘Enable DNS hostnames’ and ‘Enable DNS support’ are set to ’true’ for your VPC
接口Interface端点是一个具有专用IP地址的弹性网络接口,该Interface用作连接到受支持服务的流量的入口点。
VPC端点使用户能够私自将VPC连接到受支持的AWS服务和由PrivateLink提供支持的VPC端点服务,而无需internet网关、NAT设备、VPN连接或AWS直接连接。 VPC中的实例不需要公共IP地址来与服务中的资源通信。您的专有网络和其他服务之间的流量可以没有AWS网络。 端点Endpoints是虚拟设备。它们是水平扩展的、冗余的、高可用的VPC组件,允许VPC中的实例和服务之间进行通信,而不会对网络流量造成可用性风险或带宽限制。
Bastion Hosts
- 使用一个堡垒主机SSH到我们的私有实例中
- 堡垒位于公共子网中,然后连接到所有其他私有子网
- 必须在堡垒主机加安全组
- 堡垒用于安全地管理EC2实例(使用SSH或RDP)。
- 不能将NAT网关用作堡垒主机。
检查提示:确保bastion主机只有来自所需IP的端口22流量,而不是来自其他实例的安全组
Site-to-Site VPN
Virtual Private Gateway
虚拟私有网关Virtual Private Gateway 是站点到站点 VPN 连接在 Amazon 一端的 VPN 集中器。
您可以创建虚拟私有网关,并将其附加到要从中创建站点到站点 VPN 连接的 VPC。
创建虚拟专用网关时,可以为网关的 Amazon 端指定专用自治系统编号 (ASN)。
○ 如果不指定 ASN,则会使用默认 ASN (64512) 创建虚拟专用网关 ○ 创建虚拟专用网关后,无法更改 ASN
Customer Gateway
- VPN连接客户端的软件应用程序或物理设备
- 客户网关设备必须通过生成流量并启动 Internet 密钥交换 (IKE) 协商过程来为站点到站点 VPN 连接启动隧道
- 用户提供的为Customer gateway device
- 客户网关Customer Gateway 是您在 AWS 中创建的资源,它表示本地网络中的客户网关设备。
Transit gateway & VPN
- A transit gateway is a transit hub that you can use to interconnect your virtual private clouds (VPC) and on-premises networks.
- 可以将站点到站点 VPN 连接的目标网关从虚拟私有网关修改为中转网关。
- Transit gateway视作新一代Region边缘路由器
Transit gateway
- 中转网关是网络中转中心,您可用它来互连 Virtual Private Cloud (VPC) 和本地网络。
- Region间的对等连接
- 跨云和本地网络的单一管理门户
- SD-WAN兼容
关键概念
挂载Attachments — 您可以挂载以下各项:
○ 一个或多个 VPC ○ Connect SD-WAN/第三方网络设备 ○ 一个 AWS Direct Connect 网关 ○ 与另一个中转网关的对等连接 ○ 与中转网关的 VPN 连接
中转网关最大传输单位 (MTU)
○ 对于 VPC、AWS Direct Connect、Transit Gateway Connect 和对等连接挂载之间的流量,中转网关支持的 MTU 为 8500 字节。 ○ VPN 连接上的流量可以具有的 MTU 为 1500 字节。
中转网关路由表
○ 中转网关具有默认的路由表,且可选具有其他路由表。 ○ 路由表包含动态路由和静态路由,它们根据数据包的目标 IP 地址决定下一个跃点。 ○ 这些路由的目标可以是任何中转网关挂载。 ○ 默认情况下,Transit Gateway 挂载与默认的中转网关路由表关联。
关联Associations
○ 每个挂载都正好与一个路由表关联。 ○ 每个路由表可以与零到多个挂载关联。
路由传播(转发)
○ VPC、VPN 连接或 Direct Connect 网关可以动态地将路由传播到中转网关路由表。 ○ 默认情况下,使用 Connect 挂载,路由会传播到中转网关路由表。 ○ 使用 VPC 时,您必须创建静态路由以将流量发送到中转网关。 ○ 使用 VPN 连接或 Direct Connect 网关时,路由使用边界网关协议 (BGP) 从中转网关传播到本地路由器。 ○ 使用对等连接的连接时,您必须在中转网关路由表中创建静态路由以指向对等连接。
最佳实践:
为每个中转网关 VPC 附件使用单独的子网。对于每个子网,可以配置以下内容:
○ 将与中转网关子网关联的入站和出站网络 ACL 保持打开状态。 ○ 根据流量,您可以将网络 ACL 应用于工作负载子网。
创建一个网络 ACL 并将其与关联到中转网关的所有子网相关联。确保网络 ACL 在入站和出站方向打开。
将同一个 VPC 路由表与关联到中转网关的所有子网相关联,除非设计需要
使用边界网关协议 (BGP) 站点到站点 VPN 连接。
为 AWS Direct Connect 网关挂载和 BGP Site-to-Site VPN 挂载启用路由传播。
不需要额外的中转网关即可实现高可用性,根据设计,中转网关具有高可用性。
限制中转网关路由表的数量,除非设计需要多个中转网关路由表。
对于多区域部署,我们建议您为每个中转网关使用唯一自治系统编号 (ASN)。为了实现冗余,请在灾难恢复区域中使用多个中转网关。
官网:https://docs.aws.amazon.com/zh_cn/vpc/latest/tgw/what-is-transit-gateway.html
示例
需求
一家全球性企业,总部设在英国伦敦,在那里他们有一个数据中心和总部办公室。他们还在世界各地设有分支机构。最大的位于洛杉矶和首尔。大部分应用程序托管在eu-west-2地区(伦敦) 和ap-northeast-2(首尔),以及一些正在迁移过程中的旧应用程序,在伦敦数据中心托管。
他们的分支机构需要 500 Mbps 的网络容量来接入 AWS 地区,以及连接其数据中心的 10 Mbps 网络容量。不得在分支机构之间进行路由。数据中心需要 5 Gbps 的网络容量来回 AWS 区域,以处理数据密集型工作负载迁移到 AWS。
设计
本地数据中心与eu-west-2, AWS ap-northeast-2与eu-west-2 区域通过 10 Gbps AWS 直接连接专用连接的弹性对。
创建两个传输虚拟接口(T-VIF),每个直接连接连接一个接口,并将这些连接关联到直接连接网关 (dxgw-eu-west-2).直接连接网关连接到 AWS 传输网关 (tgw-eu-west-2)。
将所有挂载的地址段通过 BGP 路由协议向客户网关宣布,将其添加到允许的前缀列表中
所有分支机构都使用加速站点到站点 VPN 连接到 AWS
○ 首尔分行连接到 VPN 连接配置在ap-northeast-2地区 (vpn-icn); ○ 伦敦分行连接到 VPN 连接配置在eu-west-2地区 (vpn-lhr); ○ 洛杉矶分公司连接到两个 VPN 连接配置在eu-west-2地区 (vpn-lax). ○ 如需冗余,使用多VPN链路
View of AWS Transit Gateway and inter-Region connectivity
AWS PrivateLink (VPC Endpoints Services)
- Most secure & scalable way o expose a service to 1000s of VPC (own or other accounts)
- Does not require VPC Peering, Internet Gateway, NAT, Route Tables - Requires a network load balancer (Service VPC) and ENI (Customer VPC)
Egress Only Internet Gateway
Egress means Outgoing
- Egress Only Internet Gateway is for IPv6 only
- Similar function as a NAT, but a NAT is for IPv4 IPv6 is all public address - Egress Only Internet Gateway gives our IPv6 instances access to the internet, but they won’t be directly reachable by the internet - After creating an Egress only Internet Gateway, edit the route tables