公有子网与私有子网隔离靠路由控制+安全策略协同实现:公有子网配igw出公网,私有子网配nat网关出网但不可被公网直连,两者默认无路由且通过安全组/acl限制互访,需显式配置才有限互通。

公有子网与私有子网的隔离访问,核心是通过网络层逻辑划分 + 路由控制 + 安全策略三者协同实现,不是靠物理断开,而是让流量“走不通”或“被拦住”。关键在于:私有子网不直接连互联网,公有子网不主动暴露内部服务,两者之间默认不通,需要显式配置才可有限互通。
明确子网角色与IP规划
先为两个子网分配互不重叠、且属于同一VPC/CIDR范围内的地址段。例如VPC为 10.0.0.0/16:
- 公有子网:如 10.0.1.0/24,用于部署跳板机(Bastion)、负载均衡器、NAT网关等面向外网的组件
- 私有子网:如 10.0.2.0/24,用于部署数据库、应用服务器、内部API等敏感资源
注意:两个子网不能共用同一个CIDR,也不能超出VPC总范围;建议保留足够余量,避免后续扩容冲突。
配置路由表实现单向可达
路由表决定数据包“往哪发”,是隔离的关键开关:
- 公有子网路由表:必须包含一条指向互联网网关(IGW)的默认路由(0.0.0.0/0 → igw-xxxx),确保该子网内实例能出公网
- 私有子网路由表:不关联IGW;若需访问外网(如打补丁),应指向NAT网关(部署在公有子网中),即 0.0.0.0/0 → nat-xxxx;这样出站流量可通,但外网无法反向连接到私有子网
- 两个子网之间默认无路由——这意味着它们彼此不可达,除非你手动添加一条路由(例如让私有子网能访问公有子网的跳板机),但通常不建议直接加,而应通过安全组控制
用安全组+网络ACL加固访问边界
路由管“能不能走”,安全组和ACL管“谁可以走、走什么”:
- 跳板机(公有子网)安全组:只开放 22端口 给指定IP(如办公公网IP)或IP段,禁止其他入向流量
- 私有子网EC2安全组:入向规则仅允许来自跳板机安全组的SSH(22)或特定业务端口,拒绝所有其他来源;出向可默认全放行或按需收紧
- 网络ACL(可选但推荐):作为子网级有状态防火墙。例如,在私有子网的ACL中,入方向拒绝所有来自非公有子网CIDR(如10.0.1.0/24)的SSH请求,进一步兜底
验证与常见误操作
配置完成后务必实测:
- 从本地终端SSH跳板机 → 应成功
- 从跳板机SSH私有子网EC2 → 应成功(确认私有EC2安全组已授权跳板机安全组)
- 从本地终端直连私有子网EC2的私有IP → 应失败(无路由、无IGW、安全组拦截)
- 私有子网EC2 curl http://ifconfig.me → 应返回NAT网关公网IP(证明出网正常)
常见错误包括:私有子网路由表误绑IGW、跳板机安全组开放了0.0.0.0/0的22端口、私有EC2安全组未绑定跳板机安全组ID而是填了IP、NAT网关未部署在公有子网或未关联弹性IP。









