前置知识: 计算机基础

IP 编址与子网划分

8 min入门

IPv4/IPv6 地址规划、CIDR 手算、VLSM 分配与 NAT/NAPT 地址转换

知识点地图

  • 知识类别:网络层编址——IP 地址的结构、子网划分与 NAT 地址转换。本文承接原「网络基础」篇的地址规划章节(§3 IPv4/IPv6 地址规划、§4 子网划分与 VLSM、§14 NAPT),独立成篇。
  • 解决什么问题:拿到一个网段怎么按部门切分、新办公室 50 人怎么规划 4 个网段、内网上不了外网怎么让一屋子设备共享一个公网地址。分层模型见 020 篇,地址与路由的命令操作见 050/060 篇。
  • 什么时候用到:规划新网络或新网段;看懂 /24 /26 这类 CIDR 记法;配置家用路由器端口映射;面试与厂商认证笔试的常客。

1. IPv4 地址的结构与分类

一个 IPv4 地址 32 位,按 8 位一组写成点分十进制。它由「网络位 + 主机位」组成——网络位相同的地址属于同一网段,主机位区分网段内的具体设备。

历史分类(现役设备仍会问起):

类别首位模式范围默认掩码网络规模
A 类01.0.0.0 ~ 126.255.255.255255.0.0.0大型网络
B 类10128.0.0.0 ~ 191.255.255.255255.255.0.0中型网络
C 类110192.0.0.0 ~ 223.255.255.255255.255.255.0小型网络

私有地址范围(RFC 1918,不会在公网路由):

  • A 类:10.0.0.0 ~ 10.255.255.255
  • B 类:172.16.0.0 ~ 172.31.255.255
  • C 类:192.168.0.0 ~ 192.168.255.255

判断技巧:A 类私有段只看第一位是否 10;B 类看前两段是否落在 172.16-172.31;C 类看前两段是否是 192.168。127.0.0.0/8 是环回,169.254.0.0/16 是 DHCP 失败后的自动私有地址——看到 169.254 开头的地址,第一反应应该是「这台机器没拿到 DHCP」。

分类制的浪费与 CIDR 的救赎:分类制按类整段分配,一个单位要 300 个地址就得拿一个 B 类(6 万多地址)。1993 年的 CIDR(无类别域间路由)废弃「类」的概念,掩码长度任意——192.168.1.0/24 表示前 24 位是网络位。今天一切按 CIDR 思考。

2. 子网划分手算

2.1 核心公式与一个完整算例

text
IP 地址:    192.168.1.0/24
子网掩码:   255.255.255.0
主机位数:   32 - 24 = 8
可用主机数: 2^8 - 2 = 254       (减去网络地址与广播地址)

划分为 4 个子网(借 2 位,掩码 /26):
子网1: 192.168.1.0/26    范围: .1 ~ .62      广播: .63
子网2: 192.168.1.64/26   范围: .65 ~ .126    广播: .127
子网3: 192.168.1.128/26  范围: .129 ~ .190   广播: .191
子网4: 192.168.1.192/26  范围: .193 ~ .254   广播: .255

逐行拆解借 2 位为什么得 /26:/24 借走 2 位做子网位,剩余主机位 6 个,所以 24+2=26。每个子网的块大小(block size)= 2^主机位 = 64,所以子网边界落在 0、64、128、192——块大小是手算一切子网问题的钥匙。广播地址 = 下一子网起始地址减 1;可用范围夹在网络地址与广播地址之间。

易错点:可用主机数是 2^主机位 - 2,不是 2^主机位;对 /31(点对点链路)与 /32(主机路由)是例外,RFC 3021 允许 /31 不减 2。另外 /26 的掩码不是 255.255.255.26——第三种写法是 255.255.255.192,/26 是 CIDR 记法、点分十进制是掩码记法,两者别混。

2.2 VLSM:按需分配

VLSM 允许同一网络中不同子网用不同掩码长度,把地址按需切割:

text
需求: 3 个子网,分别需要 50、20、10 台主机

子网1 (50台): 192.168.1.0/26   → 62 台主机   (2^6-2=62 ≥ 50,够用)
子网2 (20台): 192.168.1.64/27  → 30 台主机   (2^5-2=30 ≥ 20)
子网3 (10台): 192.168.1.96/28  → 14 台主机   (2^4-2=14 ≥ 10)
剩余:        192.168.1.112/28 → 可继续分配给点对点/备用

VLSM 的操作顺序是从需求最大的子网开始切:先给 50 台的分 /26(占用 0-63),再从 64 开始给 20 台的切 /27(占用 64-95),再从 96 切 /28(占用 96-111)。易错点:子网起始地址必须落在自己块大小的整数倍上——/28 的块大小是 16,起始地址必须是 16 的倍数(0、16、…、96、112)。把 /28 切在 100 上是错的,100 不是 16 的倍数。

2.3 快速心算练习题

题目风格(厂商笔试常考):给定 172.16.5.14/20,求所在子网、广播地址、可用范围。步骤:/20 的块大小是 16(第三段),第三段取 16 的倍数向下取整:5 -> 0;所以子网 172.16.0.0/20,广播 172.16.15.255,可用 172.16.0.1 ~ 172.16.15.254。

3. IPv6 地址要点

IPv6 地址长度 128 位,冒号十六进制表示:

text
2001:0db8:85a3:0000:0000:8a2e:0370:7334
缩写 → 2001:db8:85a3::8a2e:370:7334

缩写两条规则:每组前导零可省;连续的全零组只能用一次 ::——出现两次 :: 无法还原省略了几组。类型速查:

类型前缀说明
全球单播2000::/3可路由的公网地址
链路本地fe80::/10同一链路通信,永远存在
唯一本地fc00::/7等同 IPv4 私有地址
组播ff00::/8一对多通信

IPv6 设计上取消了广播(用组播替代),也没有 NAT 的必要——地址空间不再稀缺。命令操作见 070-IPv6Commands 篇。

4. NAT 与 NAPT:共享公网地址

私有地址不能上公网,出口路由器做地址转换。NAT 是「一对一」转换(一个私网地址配一个公网地址),实际主力是 NAPT(网络地址端口转换):多对一,靠端口号区分会话。

bash
# 华为设备 NAPT 配置(命令为华为 VRP 语法)
[Router] acl 2000
[Router-acl-basic-2000] rule 5 permit source 192.168.1.0 0.0.0.255
[Router] nat address-group 1 202.1.1.10 202.1.1.20
[Router] interface GigabitEthernet0/0/1
[Router-GE0/0/1] nat outbound 2000 address-group 1

# Easy IP(直接使用接口地址做转换,适合出口只有一个动态公网 IP 的场景)
[Router] interface GigabitEthernet0/0/1
[Router-GE0/0/1] nat outbound 2000

逐段看:ACL 2000 定义「哪些源地址要做转换」(这里匹配内网段);address-group 是公网地址池;nat outbound 把两者绑定在出接口上——内网流量出该接口时命中 ACL 就从地址池取地址转换。Easy IP 省掉地址池,直接借用接口自身的 IP。

NAPT 的转换表记录 (协议, 内网IP, 内网端口, 公网IP, 公网端口, 外网IP, 外网端口) 七元组——回程包靠表项反查送回正确的内网主机。这也是 NAPT 天然「内网可以主动访问外网、外网不能主动访问内网」的原因:表里没有的会话无处反查。

**端口映射(NAT Server / 静态映射)**是反方向的例外:把公网 IP:port 固定映射到内网某主机,家用路由器「虚拟服务器」功能就是这个——把公网 8080 映射到 NAS 的 5000,外网就能访问家里的 NAS。

5. 不同场景下的例子

例一:新办公室 50 人划 4 个部门网段(真实工程场景)。行政 10 台、研发 25 台、销售 8 台、访客 Wi-Fi 若干。拿 192.168.10.0/24 切:研发 /27(30 可用)、行政 /28(14 可用)、销售 /28(14 可用)、访客 /27。按 VLSM 从大到小切,剩余块留作扩展。每部门一个广播域,广播风暴互不殃及,ACL(见 014 篇)按网段控访问。

例二:家用路由器端口映射。家里 NAS 装192.168.1.100,想在外网访问:路由器管理页配「虚拟服务器」,外部端口 5000 -> 内部 192.168.1.100:5000。原理即 NAT Server 静态映射;连不上的常见排查链:确认公网 IP 是不是运营商级 NAT(CGNAT,100.64.0.0/10 开头说明你在运营商内网里,映射无效)。

例三:云上 VPC 网段规划。在云平台建 VPC 时选 10.0.0.0/16,按子系统拆子网:前端 /24、后端 /24、数据库 /24、测试 /24。公网子网配 NAT 网关让内网机器出网——就是 NAPT 的托管化版本。规划时留一半空间不分配,避免日后扩容被迫重新编址。

动手实践

练习 1(合法性判断):判断这些地址哪些是私有地址、哪些是公网、哪些有特殊用途:10.255.1.1、172.32.0.1、192.168.256.1、169.254.3.3、127.0.0.1、8.8.8.8。

提示:172.32 开头已出 B 类私有段(上限 172.31);256 越界不合法。

练习 2(手算):不借助工具,对 192.168.20.77/26 写出:子网地址、掩码点分形式、广播地址、可用主机范围、可用主机数。

提示:/26 块大小 64;77 落在哪一个 64 的倍数区间内?

练习 3(VLSM 规划):用 10.0.0.0/24 满足:子网 A 需 100 台、子网 B 需 50 台、子网 C 需 2 台(点对点)、剩余尽量大。写出每个子网的 CIDR、范围与广播。

提示:从最大需求开始切;2 台的子网可以用 /30 或 /31。

参考实现(先自己动手,再看这里)
text
练习 1:
  10.255.1.1    → A 类私有
  172.32.0.1    → 公网(172.16-172.31 才是私有)
  192.168.256.1 → 非法(256 越界)
  169.254.3.3   → 链路本地(DHCP 失败自动配置)
  127.0.0.1     → 环回
  8.8.8.8       → 公网(Google DNS)

练习 2:
  /26 → 块大小 64 → 77 所在块从 64 起
  子网:   192.168.20.64/26
  掩码:   255.255.255.192
  广播:   192.168.20.127
  可用:   192.168.20.65 ~ 192.168.20.126(62 台)

练习 3:
  A (100台): 10.0.0.0/25    → .1 ~ .126     广播 .127
  B (50台):  10.0.0.128/26  → .129 ~ .190   广播 .191
  C (2台):   10.0.0.192/30  → .193 ~ .194   广播 .195
  剩余:      10.0.0.196/30 + 10.0.0.200/29 + ... 从 196 起按需继续切

参考与致谢

  • RFC 1918「Address Allocation for Private Internets」:https://www.rfc-editor.org/rfc/rfc1918(IETF 开放标准文档)
  • RFC 4632「Classless Inter-domain Routing (CIDR)」:https://www.rfc-editor.org/rfc/rfc4632
  • 华为 VRP 命令参考(NAT/NAPT 配置命令):华为 VRP 官方文档,本节华为语法命令整理自本仓库原 010 篇既有内容
  • 本文地址规划章节承接本仓库原「网络基础」篇 §3/§4/§14 既有内容深化重组。