2、网络基础回顾:VPC原理、子网划分、路由表、安全组与ACL
好,咱们正式开始聊云上网络。这一节我把它叫做“地基中的地基”。
你想想看,不管你是做核心交易系统上云,还是搞个简单的OA迁移,网络都是第一道坎。我在金融行业摸爬滚打这些年,见过太多因为网络规划没做好,后面返工返到哭的项目。说白了,云上网络玩不转,后面的安全、高可用全是空中楼阁。
2.1 VPC 原理:你的专属网络隔离区
VPC,全称是 Virtual Private Cloud。翻译成人话就是:在云上给你划一块完全隔离的、属于你自己的网络空间。
我记得刚接触云的时候,有个同事问我:“这不就是个虚拟交换机吗?” 嗯,这么说也对,但不够准确。VPC 更像是一个逻辑上的数据中心。在这个“数据中心”里,你可以自己定义 IP 地址段、划分子网、配置路由、挂载网关。
核心要点:VPC 是隔离的、可自定义的、逻辑隔离的网络环境。不同 VPC 之间默认不通,除非你主动打通(比如对等连接或云专线)。
我在项目中遇到过最典型的场景:某银行要把生产环境和测试环境都放在同一个云账号下。怎么办?我的建议是——建两个 VPC。生产一个,测试一个。哪怕你 IP 地址段重叠了都没事,因为 VPC 天然隔离。这比你在物理机房里拉两台独立的交换机还省心。
个人习惯:我一般会给每个 VPC 打上明确的标签,比如 env:production 或 env:staging。别小看这个习惯,等你有几十个 VPC 的时候,你就知道有多香了。
2.2 子网划分:别拍脑袋,算清楚再动手
子网划分,说白了就是把 VPC 这个大网段切成若干个小网段。为什么要切?因为不同子网通常承载不同角色。比如:
- 公网子网:放负载均衡、堡垒机、NAT 网关
- 内网子网:放应用服务器、数据库
- 管理子网:放运维跳板机、日志采集器
我见过最惨的案例是什么?某公司做子网划分时,直接用了 /16 的大网段,然后所有资源都往一个子网里塞。结果呢?安全组规则写得跟天书一样,ACL 根本没法配。最后不得不重建 VPC,业务中断了整整一个周末。
避坑指南:我曾经因为子网掩码算错,导致一个金融核心系统的数据库无法扩容。当时规划的是 /24,只给了 254 个 IP。结果业务一上线,IP 就不够用了。后来我学乖了:
- 生产环境子网至少给
/23(512 个 IP) - 数据库子网给
/22(1024 个 IP) - 预留 30% 的 IP 空间给未来扩容
这里我贴一个常用的子网规划示例,供你参考:
VPC CIDR: 10.0.0.0/16
子网规划:
- 公网子网(AZ-A):10.0.1.0/24
- 公网子网(AZ-B):10.0.2.0/24
- 应用子网(AZ-A):10.0.10.0/23
- 应用子网(AZ-B):10.0.12.0/23
- 数据库子网(AZ-A):10.0.20.0/24
- 数据库子网(AZ-B):10.0.21.0/24
- 管理子网:10.0.254.0/24
我的经验:子网划分时,尽量保持每个子网的大小一致。比如都用 /24 或 /23。这样路由表写起来清爽,后期排查问题也快。别问我怎么知道的,都是血泪教训。
2.3 路由表:流量往哪走,你说了算
路由表,就是告诉网络流量:“嘿,你要去这个网段,走这条路。” 每个子网都必须关联一张路由表。如果不关联,默认走 VPC 的本地路由。
我刚开始做云网络时,总觉得路由表很简单。直到有一次,我把一条指向 NAT 网关的路由配错了,导致整个应用子网无法访问外部 API。排查了整整两个小时,最后发现是目标网段写成了 0.0.0.0/0 但下一跳指向了错误的 NAT 网关。
路由表的核心规则其实就几条:
- 本地路由:VPC 内部互通,默认就有,不用你配
- 自定义路由:去往外部网络(比如互联网、其他 VPC、本地数据中心)
- 最长前缀匹配:路由表按最精确的网段匹配,比如
10.0.1.0/24比10.0.0.0/16优先
重要提醒:路由表是子网级别的。不同子网可以关联不同的路由表。比如公网子网的路由表指向 IGW(互联网网关),内网子网的路由表指向 NAT 网关或 VPN 网关。
2.4 安全组 vs ACL:别再傻傻分不清
这两个东西,是云上网络安全的左膀右臂。但很多人搞混。我直接给你说人话:
| 特性 | 安全组(Security Group) | ACL(网络访问控制列表) |
|---|---|---|
| 作用层级 | 实例级别(比如一台 EC2) | 子网级别 |
| 状态 | 有状态(允许出站自动允许回包) | 无状态(需要显式配置入站和出站规则) |
| 规则顺序 | 所有规则都生效(没有优先级) | 按规则编号从小到大匹配 |
| 默认行为 | 默认拒绝所有入站,允许所有出站 | 默认拒绝所有入站和出站 |
| 适用场景 | 精细化控制,比如只允许某台机器访问数据库 | 粗粒度控制,比如禁止某个网段访问整个子网 |
我个人的习惯是:安全组做白名单,ACL 做黑名单。
举个例子:
- 数据库子网的 ACL:先拒绝所有来自非办公网段的流量(黑名单),再允许特定安全组的流量(白名单)
- 数据库实例的安全组:只允许应用服务器的安全组访问 3306 端口
我曾经踩过的坑:有一次我配了安全组允许所有流量,但 ACL 却拒绝了。结果业务一直报连接超时。排查了半天才发现,ACL 是无状态的,出站方向没配允许回包。记住:ACL 要配双向规则,安全组不用。
2.5 知识体系总览
下面这张图,是我自己总结的 VPC 网络核心逻辑。你可以把它当作一张“地图”,每次做网络规划时拿出来对照一下。
最后说一句:网络基础这部分,看起来简单,但真正落地时全是细节。我建议你每做一个新项目,都重新审视一遍 VPC 规划。别偷懒,别复用旧方案。因为每个业务的安全要求、流量模型都不一样。
嗯,这一节就到这里。记住:VPC 是骨架,子网是房间,路由表是走廊,安全组和 ACL 是门锁。骨架歪了,后面全白搭。