天天看点

AWS学习笔记-VPC小结

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由两部分组成:

  1. 基本IP(xx.xx.x.x):它表示范围中包含的IP
  2. 子网掩码(/32):定义IP范围中可以变化的位数

子网ask可以采取两种形式

  • 255.255.255.0
  • /24

例子:

/24允许2(32-24)=28=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实例(过时但在考试中还有)

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
    AWS学习笔记-VPC小结
    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

AWS学习笔记-VPC小结

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

  1. 转到专有网络服务>您的专有网络>创建专有网络
  2. 填写IPv4 CIDR块和租约,然后单击创建。

目前尚未创建任何子网和internet网关。已创建路由表、网络ACL和安全组。安全组不能跨越VPC。

  1. 转到子网->创建子网
  2. 命名,选择我们的VPC、可用性区域和IPv4 CIDR块。最后,单击create。

默认情况下,没有子网具有公共IP。为此,选择子网并单击操作,使其自动应用公共IP。Amazon始终为您的子网保留5个IP地址。

  1. 转到Internet网关->创建Internet网关
  2. 命名它并单击create。
  3. 选择它并通过操作将internet网关连接到VPC(只能将VPC连接到一个internet网关)

目前,我们所有的专有网络都是公共的,因为我们的routes允许。让我们解决这个问题:

  1. 转到route表->选择我们的路线表并选择“route”
  2. 编辑route
  3. 用目标internet网关填充目标(任意IP)
  4. 转到子网关联
  5. 编辑子网关联以选择需要公开的子网。

现在,我们无法通过ssh从公共子网访问私有EC2实例。

  1. 转到EC2>安全组->创建安全组
  2. 选择我们的VPC,键入“All ICMP”(协议ICMP),并将源输入公共子网。
  3. 选择我们的VPC,键入“SSH”并将源文件添加到私有子网。
  4. 更改EC2实例的安全组。

VPC Peering

  • 允许您使用专用private IP地址通过直接网络路由将一个VPC连接到另一个VPC
  • 实例的通信就像它们在同一个PVC上一样
  • 不得有重叠的CIDR
  • 我们可以与其他AWS帐户以及同一帐户中的其他VPC对等VPC
  • 必须更新每个VPC子网中的路由表,以确保实例可以通信

注意:VPC的连通性不可传递,如下图所示:

AWS学习笔记-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

AWS学习笔记-VPC小结
  • 使用一个堡垒主机SSH到我们的私有实例中
  • 堡垒位于公共子网中,然后连接到所有其他私有子网
  • 必须在堡垒主机加安全组
  • 堡垒用于安全地管理EC2实例(使用SSH或RDP)。
  • 不能将NAT网关用作堡垒主机。

检查提示:确保bastion主机只有来自所需IP的端口22流量,而不是来自其他实例的安全组

Site-to-Site VPN

AWS学习笔记-VPC小结

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

AWS学习笔记-VPC小结
  • 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。

AWS学习笔记-VPC小结

设计

AWS学习笔记-VPC小结
  • 本地数据中心与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学习笔记-VPC小结

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

继续阅读