从零搭建云上网络:VPC、子网、安全组与弹性公网IP一次讲清
刚接触云计算的朋友,第一次打开控制台,往往是奔着"开一台云服务器"去的。服务器倒是很快开好了,结果 SSH 连不上;或者服务明明在跑,外网就是访问不了。遇到这种情况,十有八九不是服务器的问题,而是网络没配明白。
VPC、子网、安全组、弹性公网 IP,这四个是云上网络的地基。今天这篇,就把它们一次讲清楚,最后再给一个小型 Web 应用的网络规划例子,照着搭基本不会翻车。
一、VPC:你在云上的"私有地盘"
VPC(Virtual Private Cloud,虚拟私有云)可以理解成你在公有云里圈出来的一块逻辑隔离的网络空间。跑在这块地盘里的云服务器、数据库、负载均衡,互相之间走内网通信,外面的人默认进不来。
创建 VPC 时第一个要做的决定就是规划网段(CIDR)。比如 10.0.0.0/16,表示这个 VPC 里有 6 万多个私有 IP 可用。网段规划有几条实在的建议:
第一,别一上来就用 192.168.0.0/16 这种最常见的网段。以后如果要跟公司内网打通(VPN 或者专线),网段重叠会非常麻烦。选个相对冷门的,比如 10.20.0.0/16。
第二,网段宁大勿小。/16 看起来很大,但子网一划分、业务一多,地址消耗比想象中快。VPC 建好之后网段不好改,前期大方一点没坏处。
第三,如果一个 region 里有多个 VPC(比如生产环境和测试环境分开),每个 VPC 用不重叠的网段,方便以后做 VPC 对等连接。
VPC 是 region 级别的资源,建好之后,具体的服务器要落到"子网"里。
二、子网:VPC 里的"功能分区"
子网是把 VPC 的大网段继续切小。比如 VPC 是 10.20.0.0/16,可以切出 10.20.1.0/24 做 Web 子网、10.20.2.0/24 做应用子网、10.20.3.0/24 做数据子网。
子网划分一般有两种思路:按"网络分层"(Web / 应用 / 数据分开),或者按"可用区"(每个可用区一套子网)。生产环境里这两种思路经常叠加:每个可用区都有一组 Web、应用、数据子网,这样单个可用区出故障时,业务能在另一个可用区继续跑。
几个容易忽略的细节:
- 子网的网段必须是所属 VPC 网段的子集,子网之间不能重叠。
- 同一个 VPC 里的不同子网,默认三层互通。想做隔离要靠安全组和网络 ACL,别指望子网本身能隔离。
- 数据库这类有状态服务,建议放在"没有公网出口"的子网里,只允许应用子网访问,从网络层面减少暴露面。
三、安全组:云服务器的"贴身保镖"
安全组是一种虚拟防火墙,作用在云服务器(或者网卡)这个粒度上。它是有状态的:你放行了出方向的请求,对应的回包会自动放行,不用再配一条入方向规则。
规则分入方向和出方向。新手最容易犯的错误是图省事"全放通":入方向 0.0.0.0/0 放行所有端口。开发阶段这么干也就算了,上线前一定要收紧。正确姿势是最小权限:
- Web 服务器:入方向只放行 80/443,SSH 的 22 端口最好限定运维出口 IP。
- 应用服务器:入方向只放行来自 Web 层的业务端口,比如 8080。
- 数据库:入方向只放行数据库端口(比如 3306),来源直接写应用服务器所在的安全组 ID,而不是写网段。这样以后应用服务器 IP 变了,规则不用跟着改。
"来源写安全组 ID 而不是写 IP 网段"这个小技巧,很多人没用起来。规则跟着安全组走,弹性扩缩容加机器时特别省心。
另外,安全组规则改完即时生效,不用重启服务器。以后排查"连不上"的问题,记住这个顺序:先看安全组,再看网络 ACL 和路由表,能省不少时间。
四、弹性公网 IP:云上资源的"公网门牌"
VPC 里的地址默认都是私有的,外网访问不了。弹性公网 IP(EIP)就是可以独立购买、独立持有的一段公网 IP,绑定到云服务器、NAT 网关或者负载均衡上,对外提供访问。
EIP 有几个特点:第一,独立持有,不跟云服务器的生命周期绑定,服务器删了 EIP 可以留下来绑到新机器上,适合对外服务 IP 不能变的场景;第二,按需绑定、解绑,不用的时候解绑,避免闲置浪费;第三,带宽可调,业务低谷期调小,大促前调大。
什么时候该用 EIP,什么时候不该用?对外提供服务的入口(网站、API)需要 EIP;纯内网的数据库、中间件不需要;多台服务器共用出口访问外网(比如拉外部依赖、推消息),用 NAT 网关加一个 EIP 更划算,没必要每台服务器绑一个。
五、一个最小可用的 Web 应用网络长什么样
把上面四个概念串起来,画一个最常见的小型 Web 应用拓扑:
- 1 个 VPC:10.20.0.0/16。
- 2 个子网:10.20.1.0/24(Web 子网,有公网出口)、10.20.2.0/24(数据子网,无公网出口)。
- Web 子网里放 2 台云服务器,安全组 web-sg:入方向放行 80/443(0.0.0.0/0),22 端口限定运维 IP。
- 数据子网里放数据库,安全组 db-sg:入方向只放行来自 web-sg 的数据库端口。
- 给 Web 层前面挂一个负载均衡(或者直接给一台 Web 服务器)绑定 1 个 EIP,对外提供服务。
这个拓扑的特点就是"公私分明":公网入口只有一个(EIP),数据库完全藏在内网,只接受来自应用层的访问。以后业务量大了,加机器就是往子网里加服务器、往安全组里加规则的事,网络架构不用推倒重来。
六、几个容易踩的坑
- 安全组全放通就上线。开发阶段图方便,0.0.0.0/0 全开,上线前一定要收紧。建议把"安全组复查"写进上线 checklist。
- EIP 测试完忘记释放。闲置的 EIP 会一直占着配额,定期检查一下"未绑定的 EIP"列表是个好习惯。
- 网段规划太小。/24 只有 254 个可用 IP,一个子网塞几十台服务器再加几个负载均衡就紧张了。VPC 用 /16,子网至少 /24 起步。
- 把数据库放在有公网出口的子网。数据库不需要主动访问外网,就别给它公网出口,少一个暴露面就少一分风险。
- 多个 VPC 网段重叠。生产、测试 VPC 网段一样,后面想做对等连接同步数据时才发现连不上。VPC 网段在第一天就要错开。
写在最后
VPC、子网、安全组、EIP,单个看都不难,难的是把它们组合成一张"既通又安全"的网。记住一个原则:默认不通,按需放行。网络通了,业务才能跑;网络收紧了,半夜才能睡得着。
你在规划云上网络时还踩过哪些坑?欢迎在评论区聊聊。
- 点赞
- 收藏
- 关注作者
评论(0)