网络 101 #6. 子网、CIDR 与 NAT

发布: (2026年1月15日 GMT+8 18:33)
7 min read
原文: Dev.to

Source: Dev.to

Note: 本系列 不是由专家撰写 —— 这是一个初学者大声学习的过程,分享:

  • 我所理解的内容,
  • 让我困惑的地方,
  • 以及我在过程中学到的东西。
    目标是建立一致性、清晰度,并邀请讨论。

📌 本文涵盖内容

在本文中,我将介绍:

  1. 子网是什么
  2. 公有子网 vs 私有子网
  3. CIDR 是什么
  4. NAT 是什么
  5. 子网相关的问题

📂 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:

💬 欢迎反馈 — 如果有什么不对,请留言。
如果觉得有用,请给仓库加星

Back to Blog

相关文章

阅读更多 »

启动 AWS EC2 实例

介绍 本指南将带您完成启动 AWS EC2 实例、安装 Docker 并在 Docker 容器中运行 NGINX 的全过程。完成后您将…