一、VPC核心概念解析
1.1 核心组件
-
VPC:逻辑隔离的虚拟网络,可自定义IPv4/IPv6地址范围(CIDR块)
-
子网(Subnet):
-
公有子网:绑定Internet Gateway(IGW),允许直接访问互联网
-
私有子网:通过NAT网关间接访问外网,禁止入站公网流量
-
隔离子网:仅内部通信(如数据库层)
-
-
路由表(Route Table):控制子网流量走向,默认路由表需谨慎修改
-
安全组(Security Group) & 网络ACL:
-
安全组:实例级别状态化防火墙(支持允许规则)
-
网络ACL:子网级别无状态过滤(支持允许/拒绝规则)
-
二、Terraform实战配置
3.1 初始化VPC
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags = { Name = "prod-vpc" }
}
3.2 创建子网
公有子网
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true # 自动分配公网IP
}
私有子网
resource "aws_subnet" "private" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.2.0/24"
availability_zone = "us-east-1b"
}
3.3 配置NAT网关
弹性IP
resource "aws_eip" "nat" {
vpc = true
}
NAT网关部署在公有子网
resource "aws_nat_gateway" "gw" {
allocation_id = aws_eip.nat.id
subnet_id = aws_subnet.public.id
}
私有子网路由指向NAT
resource "aws_route_table" "private" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
nat_gateway_id = aws_nat_gateway.gw.id
}
}
三、安全最佳实践
-
最小权限原则:
-
安全组仅开放必要端口(如Web层开放80/443)
-
数据库安全组仅允许App层IP+端口
-
-
网络分层隔离:
数据库子网组,禁止任何互联网路由
resource "aws_route_table" "db" {
vpc_id = aws_vpc.main.id
无默认路由
}
3. 启用流日志(Flow Logs):
resource "aws_cloudwatch_log_group" "vpc_flow" {
name = "vpc-flow-logs"
}
resource "aws_flow_log" "main" {
iam_role_arn = aws_iam_role.vpc_flow.arn
log_destination = aws_cloudwatch_log_group.vpc_flow.arn
traffic_type = "ALL"
vpc_id = aws_vpc.main.id
}
四、高可用性设计
-
多可用区部署:在至少两个AZ中创建子网
-
NAT网关冗余:每个AZ部署独立NAT(避免单点故障)
-
VPC终端节点(Endpoint):通过PrivateLink访问S3/DynamoDB,减少公网暴露
总结
通过合理规划CIDR、分层子网设计及严格的安全策略,AWS VPC可为企业提供灵活、安全的云网络环境。建议结合AWS Transit Gateway实现多VPC互联,并持续监控网络流量以优化成本。