网络 101 #6. 子网、CIDR 与 NAT
Source: Dev.to
Note: 本系列 不是由专家撰写 —— 这是一个初学者大声学习的过程,分享:
- 我所理解的内容,
- 让我困惑的地方,
- 以及我在过程中学到的东西。
目标是建立一致性、清晰度,并邀请讨论。
📌 本文涵盖内容
在本文中,我将介绍:
- 子网是什么
- 公有子网 vs 私有子网
- CIDR 是什么
- NAT 是什么
- 子网相关的问题
📂 GitHub 仓库
所有关于本系列的笔记、图表和学习资源都在这里:
[GitHub 仓库链接](add your URL)
该仓库会随着我的学习持续更新。
📚 学习笔记
1️⃣ 首先:子网到底是干什么的?
问题: 为什么不把 所有计算机都放在一个大网络 里?
答案:
- 不安全
- 混乱无序
- 无法扩展
因此网络会被 划分为更小的网络,即 子网。
2️⃣ 什么是子网?
子网 是一组属于同一内部网络的 IP 地址。就这么简单。
示例:
10.0.0.0 – 10.0.0.255
该范围内的所有机器:
- 可以直接相互通信
- 属于同一个私有网络
3️⃣ 为什么云服务商强制你使用子网
在云平台(AWS、GCP、Azure)中,你得不到一个“平面”网络。你必须创建:
- 一个 VPC(虚拟私有云)
- 其内部的 子网
为什么?
- 安全隔离
- 路由控制
- 可扩展性
这就是为什么在创建虚拟机时总会看到子网选择的原因。
4️⃣ 什么是 CIDR(那个可怕的 /24)?
CIDR 看起来吓人,其实很简单。
示例:
10.0.0.0/24
CIDR 告诉你 这个网络包含多少 IP。
4.1 不用算的 CIDR(保证)
| CIDR | 约 IP 数量 |
|---|---|
| /24 | ~256 |
| /16 | ~65,000 |
| /8 | ~16 百万 |
/后的数字越小 → 网络越大/后的数字越大 → 网络越小
这对 DevOps 来说已经够用了。
4.2 /24 实际代表什么
10.0.0.0/24
- 网络起始于
10.0.0.0 - 结束于
10.0.0.255 - 总计约 256 个 IP(云厂商会内部保留少量)
5️⃣ CIDR 在真实 DevOps 工作中的意义
CIDR 决定:
- 你能运行多少台服务器
- 网络的隔离程度
- 服务之间是否能相互通信
常见错误: 选了太小的子网 → IP 用光。
6️⃣ 公有子网 vs 私有子网
6.1 公有子网
- 有通往互联网的路由
- 用途包括:
- 负载均衡器
- 跳板主机
- 面向公网的服务
6.2 私有子网
- 没有直接的互联网访问
- 用途包括:
- 应用服务器
- 数据库
- 内部服务
最佳实践: 只公开必须公开的资源。
7️⃣ 私有子网如何访问互联网?
这时 NAT(网络地址转换)登场。
7.1 什么是 NAT?
NAT 让 私有 IP → 互联网 成为可能,同时不暴露 互联网 → 私有 IP。
默认情况下 NAT 是 单向 的。
7.2 简单解释 NAT
- 私有服务器:
10.0.1.5 - 想访问:
google.com
流程:
10.0.1.5 → NAT 网关 → 互联网
互联网看到的是 NAT 网关的 公网 IP,响应会通过 NAT 返回给私有服务器。
8️⃣ 为什么 NAT 对安全至关重要
- 没有 NAT: 每台私有服务器都需要公网 IP → 所有机器都暴露。
- 有了 NAT: 服务器保持私有,仅允许出站流量。
这也是为什么数据库几乎总是放在私有子网中的原因。
9️⃣ 常见的 DevOps 架构
互联网
↓
负载均衡器(公有子网)
↓
应用服务器(私有子网)
↓
数据库(私有子网)
- NAT 使得:
- 应用 → 互联网(更新、外部 API)
- 数据库 → 无互联网访问
🔟 子网问题在实际中的表现
| 问题 | 可能原因 |
|---|---|
| 无法连接数据库 | 子网设置错误 |
| 应用无法访问互联网 | 缺少 NAT |
| 服务器不可达 | 缺少公网 IP |
| 只有部分服务能通信 | 路由问题 |
大多数“网络问题”都是子网或 NAT 配置错误导致的。
1️⃣1️⃣ 小型动手思考练习
自问:
- 这个服务是 公有 还是 私有?
- 是否需要 入站 访问?
- 是否需要 出站 互联网访问?
这些答案决定:
- 子网类型
- 是否需要 NAT
- 安全规则
1️⃣2️⃣ 思考练习(未完)
模型升级
Your networking stack now looks like:
Internet
↓
Public Subnet
↓
Private Subnet
↓
Service
子网决定 谁可以相互通信。
✅ 关键要点
- 子网 将 IP 分组。
- CIDR 控制子网大小。
- 公共子网 面向互联网。
- 私有子网 保持隐藏。
- NAT 允许安全的出站访问。
- 大多数云网络问题与子网相关。
💬 反馈与讨论
💡 我很期待你的反馈!
如果你注意到:
- 缺少工具类别,
- 假设不正确,
- 更好的学习路径,
请在下方评论。我在这里学习。
⭐ 支持学习之旅
如果您觉得这篇博客有用:
⭐ 给 GitHub 仓库点星 — 这真的能激励我继续学习并公开分享。
🐦 保持更新
在 [Twitter/X](添加你的用户名)上关注我,以获取本系列后续帖子的更新。
# 📚 Networking for DevOps – 101
👋 关于我
我是一名 DevOps 工程师,在 Twitter/X 上分享我的学习之旅。我定期发布更新、笔记和进展。
🔜 接下来是什么
在下一篇文章中,我将讨论:
- 防火墙、安全组以及“连接被拒绝”发生的原因
- 随着进展对 GitHub 仓库的持续更新
📘 公开学习
- 仓库:
- Twitter/X:
💬 欢迎反馈 — 如果有什么不对,请留言。
⭐ 如果觉得有用,请给仓库加星。