VPC基础 #
一、VPC概述 #
1.1 什么是VPC #
Amazon VPC(Virtual Private Cloud)是AWS提供的虚拟网络服务,允许在AWS云中启动隔离的虚拟网络,完全控制IP地址、子网、路由表和网络网关。
1.2 VPC特点 #
text
VPC核心特点:
├── 网络隔离
│ └── 逻辑隔离的虚拟网络
│
├── 完全控制
│ ├── IP地址范围
│ ├── 子网划分
│ ├── 路由配置
│ └── 网关设置
│
├── 安全控制
│ ├── 安全组
│ └── 网络ACL
│
├── 连接选项
│ ├── Internet网关
│ ├── NAT网关
│ ├── VPN
│ └── Direct Connect
│
└── 灵活配置
├── 公有子网
└── 私有子网
1.3 VPC核心组件 #
text
VPC组件:
├── VPC
│ └── 虚拟网络容器
│
├── 子网(Subnet)
│ └── VPC内的子网络
│
├── 路由表(Route Table)
│ └── 控制流量路由
│
├── Internet网关(IGW)
│ └── 连接互联网
│
├── NAT网关/实例
│ └── 私有子网访问互联网
│
├── 安全组(Security Group)
│ └── 实例级防火墙
│
└── 网络ACL(NACL)
└── 子网级防火墙
二、创建VPC #
2.1 VPC CIDR规划 #
text
CIDR规划建议:
├── VPC CIDR范围
│ ├── 最小:/28(16个IP)
│ └── 最大:/16(65536个IP)
│
├── 常用CIDR
│ ├── 10.0.0.0/16(65536个IP)
│ ├── 172.16.0.0/16(65536个IP)
│ └── 192.168.0.0/16(65536个IP)
│
└── 预留空间
└── 为未来扩展预留
2.2 创建VPC #
bash
aws ec2 create-vpc \
--cidr-block 10.0.0.0/16 \
--tag-specifications "ResourceType=vpc,Tags=[{Key=Name,Value=MyVPC}]"
2.3 创建子网 #
bash
aws ec2 create-subnet \
--vpc-id vpc-12345678 \
--cidr-block 10.0.1.0/24 \
--availability-zone us-east-1a \
--tag-specifications "ResourceType=subnet,Tags=[{Key=Name,Value=Public-Subnet-1}]"
2.4 公有子网配置 #
text
公有子网配置步骤:
├── 1. 创建Internet网关
├── 2. 附加IGW到VPC
├── 3. 创建路由表
├── 4. 添加默认路由到IGW
└── 5. 关联路由表到子网
bash
aws ec2 create-internet-gateway \
--tag-specifications "ResourceType=internet-gateway,Tags=[{Key=Name,Value=MyIGW}]"
aws ec2 attach-internet-gateway \
--vpc-id vpc-12345678 \
--internet-gateway-id igw-12345678
aws ec2 create-route-table \
--vpc-id vpc-12345678 \
--tag-specifications "ResourceType=route-table,Tags=[{Key=Name,Value=Public-RT}]"
aws ec2 create-route \
--route-table-id rtb-12345678 \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-12345678
aws ec2 associate-route-table \
--subnet-id subnet-12345678 \
--route-table-id rtb-12345678
三、子网 #
3.1 子网类型 #
text
子网类型:
├── 公有子网
│ ├── 有到IGW的路由
│ ├── 可直接访问互联网
│ └── 适合:Web服务器、负载均衡器
│
└── 私有子网
├── 无到IGW的路由
├── 不能直接访问互联网
└── 适合:数据库、应用服务器
3.2 子网规划 #
text
子网规划示例(10.0.0.0/16):
├── 公有子网
│ ├── 10.0.0.0/24(AZ-a)
│ ├── 10.0.1.0/24(AZ-b)
│ └── 10.0.2.0/24(AZ-c)
│
├── 私有子网(应用)
│ ├── 10.0.10.0/24(AZ-a)
│ ├── 10.0.11.0/24(AZ-b)
│ └── 10.0.12.0/24(AZ-c)
│
└── 私有子网(数据库)
├── 10.0.20.0/24(AZ-a)
├── 10.0.21.0/24(AZ-b)
└── 10.0.22.0/24(AZ-c)
3.3 子网注意事项 #
text
子网注意:
├── AWS保留IP
│ ├── .0 - 网络地址
│ ├── .1 - VPC路由器
│ ├── .2 - DNS服务器
│ ├── .3 - 预留
│ └── .255 - 广播地址
│
├── 可用IP数量
│ └── /24子网有251个可用IP
│
└── 跨可用区部署
└── 提高高可用性
四、路由表 #
4.1 路由表概念 #
text
路由表组成:
├── 路由条目
│ ├── 目标(Destination)
│ └── 目标(Target)
│
├── 本地路由
│ └── 自动添加
│ └── 目标:VPC CIDR → local
│
└── 自定义路由
└── 用户添加的路由
4.2 公有子网路由表 #
text
公有子网路由表示例:
┌──────────────────┬────────────────────┐
│ 目标 │ 目标 │
├──────────────────┼────────────────────┤
│ 10.0.0.0/16 │ local │
│ 0.0.0.0/0 │ igw-xxxxxx │
└──────────────────┴────────────────────┘
4.3 私有子网路由表 #
text
私有子网路由表示例(使用NAT网关):
┌──────────────────┬────────────────────┐
│ 目标 │ 目标 │
├──────────────────┼────────────────────┤
│ 10.0.0.0/16 │ local │
│ 0.0.0.0/0 │ nat-xxxxxx │
└──────────────────┴────────────────────┘
五、安全组 #
5.1 安全组概念 #
text
安全组特点:
├── 实例级防火墙
├── 状态检测
│ ├── 自动允许返回流量
│ └── 无需配置出站规则
│
├── 默认规则
│ ├── 入站:拒绝所有
│ └── 出站:允许所有
│
├── 规则配置
│ ├── 协议(TCP/UDP/ICMP)
│ ├── 端口范围
│ └── 源/目标
│
└── 多安全组
└── 一个实例可关联多个安全组
5.2 创建安全组 #
bash
aws ec2 create-security-group \
--group-name MySecurityGroup \
--description "My security group" \
--vpc-id vpc-12345678
5.3 添加入站规则 #
bash
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 22 \
--cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
5.4 常用安全组规则 #
| 用途 | 端口 | 源 |
|---|---|---|
| SSH | 22 | 特定IP |
| HTTP | 80 | 0.0.0.0/0 |
| HTTPS | 443 | 0.0.0.0/0 |
| MySQL | 3306 | 应用安全组 |
| PostgreSQL | 5432 | 应用安全组 |
5.5 安全组引用 #
text
安全组引用:
├── 引用另一个安全组
│ └── 允许特定安全组的实例访问
│
├── 示例
│ └── Web安全组允许来自ALB安全组的流量
│
└── 好处
└── 动态更新,无需修改IP
六、网络ACL #
6.1 NACL概念 #
text
NACL特点:
├── 子网级防火墙
├── 无状态
│ └── 需要配置双向规则
│
├── 规则编号
│ ├── 按顺序评估
│ └── 最低编号优先
│
├── 默认规则
│ ├── 入站:允许所有
│ └── 出站:允许所有
│
└── 每个子网一个NACL
6.2 安全组 vs NACL #
| 特性 | 安全组 | NACL |
|---|---|---|
| 层级 | 实例级 | 子网级 |
| 状态 | 有状态 | 无状态 |
| 规则顺序 | 无序 | 有序 |
| 允许规则 | 仅允许 | 允许和拒绝 |
| 默认行为 | 拒绝入站 | 允许所有 |
6.3 NACL规则示例 #
text
NACL规则示例:
┌────────┬────────┬──────────┬──────────┬───────────┬────────┐
│ 规则# │ 类型 │ 协议 │ 端口 │ 源 │ 操作 │
├────────┼────────┼──────────┼──────────┼───────────┼────────┤
│ 100 │ HTTP │ TCP │ 80 │ 0.0.0.0/0 │ ALLOW │
│ 110 │ HTTPS │ TCP │ 443 │ 0.0.0.0/0 │ ALLOW │
│ 120 │ SSH │ TCP │ 22 │ 10.0.0.0/8│ ALLOW │
│ * │ 所有 │ 所有 │ 所有 │ 0.0.0.0/0 │ DENY │
└────────┴────────┴──────────┴──────────┴───────────┴────────┘
七、公有IP和弹性IP #
7.1 公有IP #
text
公有IP特点:
├── 自动分配(可配置)
├── 动态IP
│ └── 实例停止/启动后变化
│
├── 从AWS地址池分配
└── 免费
7.2 弹性IP #
text
弹性IP特点:
├── 静态公有IP
├── 可关联到实例或ENI
├── 可重新映射
└── 收费
├── 关联时免费
└── 未关联时收费
7.3 分配弹性IP #
bash
aws ec2 allocate-address --domain vpc
aws ec2 associate-address \
--instance-id i-12345678 \
--allocation-id eipalloc-12345678
八、VPC架构示例 #
8.1 标准三层架构 #
text
标准三层架构:
┌─────────────────────────────────────────────────────────────┐
│ VPC │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 公有子网 ││
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ││
│ │ │ ALB │ │ NAT GW │ │ IGW │ ││
│ │ └─────────┘ └─────────┘ └─────────┘ ││
│ └─────────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 私有子网(应用) ││
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ││
│ │ │ EC2 │ │ EC2 │ │ EC2 │ ││
│ │ └─────────┘ └─────────┘ └─────────┘ ││
│ └─────────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 私有子网(数据库) ││
│ │ ┌─────────┐ ┌─────────┐ ││
│ │ │ RDS │ │ RDS │ ││
│ │ └─────────┘ └─────────┘ ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
九、VPC最佳实践 #
9.1 规划建议 #
text
规划建议:
├── 合理规划CIDR
│ └── 预留足够空间
│
├── 跨可用区部署
│ └── 至少2个可用区
│
├── 分离子网
│ ├── 公有子网
│ └── 私有子网
│
├── 安全组最小权限
│ └── 只开放必要端口
│
└── 文档化
└── 记录网络架构
9.2 安全建议 #
text
安全建议:
├── 使用私有子网部署敏感资源
├── 安全组最小权限原则
├── 使用NACL作为额外防护
├── 启用VPC Flow Logs
├── 定期审计安全组规则
└── 使用安全组引用
十、小结 #
本章介绍了VPC基础:
| 内容 | 要点 |
|---|---|
| VPC概念 | 虚拟私有云、网络隔离 |
| 子网 | 公有子网、私有子网 |
| 路由表 | 控制流量路由 |
| 安全组 | 实例级防火墙 |
| NACL | 子网级防火墙 |
下一步学习 #
了解VPC基础后,接下来可以:
- VPC高级配置 - 学习NAT、VPN等
- Route53 DNS - 学习DNS服务
- 安全最佳实践 - 学习网络安全
最后更新:2026-03-28