AWS VPC

1. 什么是AWS VPC,它的优点是什么?

        AWS VPC是一种虚拟网络服务,允许用户在AWS云环境中创建和控制虚拟网络。VPC使用户能够在AWS云中启动AWS资源(如EC2实例)时指定虚拟网络环境,包括IP地址范围、子网、路由表和网关等,从而实现用户对虚拟网络的完全控制。它包括了以下组件:

  1. VPC (Virtual Private Cloud): 代表整个虚拟私有云,是AWS云中的一个逻辑隔离网络。
  2. Subnets (子网): VPC内部划分的子网,每个子网位于特定的可用区(AZ),可以配置不同的IP地址范围。
  3. Internet Gateway (IGW): 允许VPC中的资源与公网通信的网关设备。
  4. NAT Gateway (Network Address Translation): 允许私有子网中的实例通过公共IP地址访问互联网,同时阻止来自互联网的入站连接。
  5. Route Tables (路由表): 控制VPC中流量的路由,指定子网中流量的目标,可以包括本地路由(在VPC内部流量的路由)和Internet路由(指向Internet GatewayNAT Gateway)。
  6. Network ACLs (网络访问控制列表): 在子网级别控制入站和出站流量的安全策略。
  7. Security Groups (安全组): 在实例级别控制入站和出站流量的安全策略。
  8. VPN连接或AWS Direct Connect: 用于连接VPC和本地数据中心的安全通信通道。
  9. VPC Endpoint (终端节点): 允许实例在VPC内部安全地访问AWS服务,如S3DynamoDB,而无需通过Internet Gateway
  10. VPC Peering (VPC互连): 允许连接两个VPC,使它们之间可以直接通信。

它有哪些优点:

  1. 定制化控制: 用户可以完全控制其VPC的网络配置,包括选择IP地址范围、创建子网、配置路由表和网关等,以满足特定需求。
  2. 安全性: 可以使用安全组和网络访问控制列表(ACL)来控制入站和出站流量,从而提高网络安全性。
  3. 互联云中和本地网络: 可以通过VPN连接或AWS Direct ConnectVPC安全地扩展到本地数据中心或其他云提供商的网络。
  4. 高可用性和容错性: 可以跨多个可用区(AZ)分布子网,从而提高应用程序的可用性和容错能力。

缺点呢?就是有些复杂,比较难学。

 2. 如何配置AWS VPC

有两种方式,一种是通过console来配置,步骤如下:

  • 创建VPC
    点击“创建VPC”,填写名称、CIDR块(IP地址范围)等信息。

  • 配置子网

    • 在创建VPC后,创建公共子网和私有子网。
    • 公共子网通常与Internet Gateway关联,允许公网访问。
    • 私有子网不直接暴露在Internet上,通常与NAT网关关联以访问Internet。
  • 配置路由表

    • 创建和配置路由表,关联子网并指定流量流向,例如将公共子网的流量路由至Internet Gateway。
  • 配置Internet Gateway

    • 创建Internet Gateway并附加到VPC,允许VPC内实例与Internet通信。
  • 配置安全组

    • 定义安全组规则以控制进出VPC的流量,可以基于协议、端口和IP地址等定义规则。
  • 配置网络ACL

    • 配置网络访问控制列表(Network ACLs),用于过滤进出子网的流量。
  • 配置VPN连接或直接连接(可选):

    • 如果需要与企业数据中心或其他云服务提供商建立安全连接,可以配置VPN连接或AWS Direct Connect。
  • 配置其他服务

    • 根据需要配置其他AWS服务,如Elastic Load Balancing(ELB)、Amazon RDS、Amazon EC2等,以构建完整的应用架构。

另一种是通过terraform来配置,我们尝试创建一个简单的VPC,包括一个公共子网和一个私有子网,并配置相应的路由表、Internet Gateway以及安全组。 步骤如下:

# 定义provider
provider "aws" {
  region = "us-east-1"  # 根据实际需求更改区域
}

# 创建VPC
resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
  enable_dns_support = true
  enable_dns_hostnames = true

  tags = {
    Name = "my-vpc"
  }
}

# 创建Internet Gateway并附加到VPC
resource "aws_internet_gateway" "gw" {
  vpc_id = aws_vpc.main.id

  tags = {
    Name = "my-vpc-igw"
  }
}

# 创建公共子网
resource "aws_subnet" "public" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.1.0/24"
  availability_zone = "us-east-1a" 

  tags = {
    Name = "public-subnet"
  }
}

# 创建私有子网
resource "aws_subnet" "private" {
  vpc_id     = aws_vpc.main.id
  cidr_block = "10.0.2.0/24"
  availability_zone = "us-east-1b"  

  tags = {
    Name = "private-subnet"
  }
}

# 创建公共路由表,并关联到VPC
resource "aws_route_table" "public" {
  vpc_id = aws_vpc.main.id

  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.gw.id
  }

  tags = {
    Name = "public-route-table"
  }
}

# 关联公共子网和路由表
resource "aws_route_table_association" "public" {
  subnet_id      = aws_subnet.public.id
  route_table_id = aws_route_table.public.id
}

# 创建安全组
resource "aws_security_group" "example" {
  vpc_id = aws_vpc.main.id

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  tags = {
    Name = "example-security-group"
  }
}
  1. 创建VPC(aws_vpc资源):定义了一个CIDR块为10.0.0.0/16的VPC。
  2. 创建Internet Gateway并附加到VPC(aws_internet_gateway资源)。
  3. 创建公共子网(aws_subnet资源)和私有子网(在示例中未显示,但可以按照相似方式创建)。
  4. 创建路由表并将其关联到VPC(aws_route_table资源)。
  5. 关联公共子网和路由表(aws_route_table_association资源)。
  6. 创建安全组(aws_security_group资源)并定义了允许HTTP流量(端口80)的入站规则和允许所有流量的出站规则。

3. AWS VPC的traffic flow 

图片来自互联网。

 几个概念的说明:

  • Internet Gateway(IGW)

    • 功能:Internet Gateway允许VPC内的公共子网中的实例直接访问Internet,实现双向通信。
    • 用途:主要用于连接位于公共子网中的实例,这些实例需要能够直接从Internet访问或被Internet访问。
  • NAT Gateway(NAT网关)

    • 功能:NAT Gateway允许私有子网中的实例访问Internet,但不允许Internet直接访问这些实例。它在私有子网和Internet之间提供了网络地址转换(NAT)服务。
    • 用途:主要用于私有子网中的实例需要访问Internet,例如应用服务器更新软件包或从外部服务获取数据。增强了VPC的安全性,因为私有子网中的实例不直接暴露在Internet上。

  • 公共子网(Public Subnet)

    • Internet连接:公共子网通过关联到Internet Gateway(IGW),允许直接访问Internet。这意味着位于公共子网中的实例可以具有公共IP地址,并且可以直接从Internet访问。
    • 用途:适合需要公共访问的资源,如Web服务器、负载均衡器等。
  • 私有子网(Private Subnet)

    • Internet连接:私有子网通常不直接关联到Internet Gateway,因此实例没有公共IP地址,无法直接从Internet访问。
    • 访问方式:私有子网中的实例可以通过NAT网关、代理服务器或通过VPN连接等间接方式访问Internet或其他公共资源。
    • 用途:适合存储数据库、应用服务器等敏感数据或不需要公网访问的应用程序。
  • 主路由表(Main Route Table)

    • 默认关联:每个VPC都会自动关联一个主路由表,这个路由表是VPC级别的默认路由表。
    • 默认路由规则:主路由表包含一个默认路由规则,该规则指向本地网关。本地网关通常指向VPC本身,即VPC内部的流量可以通过本地路由访问其他子网和实例。
    • 关联方式:主路由表自动关联到VPC中的所有子网,除非为特定子网指定了其他自定义路由表。
  • 自定义路由表(Customer Route Table)

    • 创建和关联:您可以创建多个自定义路由表,并将其关联到特定的子网。
    • 路由规则管理:自定义路由表允许您定义特定于子网的路由规则。这些规则可以覆盖主路由表中的默认路由规则。
    • 应用场景:通常用于实现特定的网络流量控制策略,如将某些子网的流量路由到特定的网关(如NAT网关或VPN连接)

Network ACLs(NACLs)和Security Groups(SGs)是AWS中用于网络安全的两种不同的控制机制,NACL 是属于子网基本的,SGs是属于实例级别的。

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值