04-IP 地址与子网划分
上一篇《TCP/IP 协议栈》把应用数据、端口、IP、MAC、路由和 ARP 放在同一条通信链路里理解。本文继续向网络层的核心能力深入:IP 地址如何标识主机,子网如何划分边界,掩码如何决定一台主机是直接发送还是交给网关。

1. 概述
上一篇《TCP/IP 协议栈》把应用数据、端口、IP、MAC、路由和 ARP 放在同一条通信链路里理解。本文继续向网络层的核心能力深入:IP 地址如何标识主机,子网如何划分边界,掩码如何决定一台主机是直接发送还是交给网关。
很多网络故障看起来像“服务不通”“交换机不通”“防火墙拦截”,实际根因却是地址规划错误:两台主机看似在同一个业务区,掩码却不同;服务器地址和网关不在同一网段;DHCP 地址池覆盖了静态服务器地址;VPN 地址段和总部网段重叠;临时加一个 VLAN 时随手用了 /24,半年后地址不够又只能迁移。IP 地址与子网划分不是纸面计算题,而是网络设计、VLAN 规划、路由汇总、ACL、安全域划分和故障定位的共同基础。
本文的目标是让你能在真实环境中完成三件事:
- 看懂 IPv4 地址、子网掩码、CIDR 前缀、网络地址、广播地址和可用主机范围。
- 根据终端数量、业务边界和未来扩展选择合适的网段,而不是机械套用
/24。 - 使用 Linux、Windows 和常见网络设备思路验证地址配置是否正确,并能定位常见的子网规划错误。
本文以 IPv4 为主,原因是企业内网、工控网络、虚拟化平台、容器网络和网络设备管理平面仍大量使用 IPv4。IPv6 会在后续网络基础或云网络文章中单独展开。阅读本文前建议已经理解 IP、ARP、默认网关和路由表的基本概念。
2. IP 地址解决的不是“名字”,而是“位置与路径”
在 TCP/IP 网络里,MAC 地址用于本地链路的下一跳转发,端口用于定位主机上的应用进程,IP 地址则用于定位网络层的主机或接口。一个 IPv4 地址由 32 位组成,通常写成四段十进制数字,例如:
192.168.10.25
每一段是 8 位,取值范围是 0 到 255。把它拆成二进制就是:
192 168 10 25
11000000 . 10101000 . 00001010 . 00011001
单独一个 IP 地址并不足以判断它属于哪个网络。必须同时知道子网掩码或 CIDR 前缀长度。例如 192.168.10.25/24 表示前 24 位是网络部分,后 8 位是主机部分。网络部分决定“这个地址属于哪个网段”,主机部分决定“它是这个网段里的哪一台主机”。
这张图的关键点是:IP 地址本身只是 32 位数字,前缀长度才把它切成“网络”和“主机”两部分。后续所有子网计算,都是围绕这条分界线展开。
地址规划时不要只问“给这台设备分什么 IP”,更要问:
- 它属于哪个业务区域或安全区域?
- 它所在网段有多少当前设备和未来设备?
- 它需要和哪些网段互通,哪些网段隔离?
- 这个网段是否需要被汇总到上级路由?
- 是否会和 VPN、云上 VPC、容器网络、实验网络发生地址重叠?
如果这些问题没有答案,IP 地址就会变成零散分配的编号,后续网络策略、资产管理和故障排查都会变得困难。
3. 子网掩码与 CIDR
3.1 子网掩码的作用
子网掩码用于标识 IP 地址中哪些位属于网络部分,哪些位属于主机部分。掩码中连续的 1 对应网络位,连续的 0 对应主机位。
常见掩码如下:
| CIDR | 子网掩码 | 网络位 | 主机位 | 地址总数 | 常见可用主机数 |
|---|---|---|---|---|---|
| /8 | 255.0.0.0 | 8 | 24 | 16,777,216 | 16,777,214 |
| /16 | 255.255.0.0 | 16 | 16 | 65,536 | 65,534 |
| /24 | 255.255.255.0 | 24 | 8 | 256 | 254 |
| /25 | 255.255.255.128 | 25 | 7 | 128 | 126 |
| /26 | 255.255.255.192 | 26 | 6 | 64 | 62 |
| /27 | 255.255.255.224 | 27 | 5 | 32 | 30 |
| /28 | 255.255.255.240 | 28 | 4 | 16 | 14 |
| /29 | 255.255.255.248 | 29 | 3 | 8 | 6 |
| /30 | 255.255.255.252 | 30 | 2 | 4 | 2 |
| /32 | 255.255.255.255 | 32 | 0 | 1 | 1 个主机路由 |
“常见可用主机数”通常等于 2^主机位 - 2,因为全 0 主机位是网络地址,全 1 主机位是广播地址。/31 在点到点链路中有特殊用途,很多现代设备和系统支持把两个地址都用于点到点接口,但入门阶段先掌握 /30 更稳妥。
3.2 CIDR 为什么比 A/B/C 类地址更重要
早期 IPv4 有 A 类、B 类、C 类地址的分类说法,例如:
| 传统类别 | 首段范围 | 默认掩码 | 地址规模 |
|---|---|---|---|
| A 类 | 1-126 | /8 | 很大 |
| B 类 | 128-191 | /16 | 中等 |
| C 类 | 192-223 | /24 | 较小 |
今天实际工程中更重要的是 CIDR,也就是用 /前缀长度 表示网络边界。10.10.20.0/24、10.10.20.0/25、10.10.20.0/26 都可以存在,不能因为 10.x.x.x 曾经属于 A 类就认为它必然是 /8。企业内网规划、云 VPC、Kubernetes Service CIDR、Docker bridge、VPN 地址池和路由汇总都使用 CIDR 表示。
CIDR 的优势是灵活:
- 可以把一个大网段拆成多个小网段,例如把
192.168.10.0/24拆成四个/26。 - 可以把连续小网段汇总成一个大路由,例如把
10.20.0.0/24到10.20.3.0/24汇总为10.20.0.0/22。 - 可以按业务规模分配地址,减少浪费。
- 可以让路由表更简洁,避免每个小网段都逐条发布。
4. 从一个地址算出完整网段
学习子网划分最实用的方法是从一个具体地址开始,推导出网络地址、广播地址和可用范围。
假设主机地址是:
192.168.10.25/24
/24 表示前 24 位是网络位,因此网络地址是:
192.168.10.0
广播地址是主机位全 1:
192.168.10.255
可用主机地址通常是:
192.168.10.1 - 192.168.10.254
如果前缀变成 /26,计算就不同:
192.168.10.25/26
/26 表示最后一段有 2 位网络位、6 位主机位。每个子网包含 64 个地址,边界分别是:
192.168.10.0/26 地址范围 192.168.10.0 - 192.168.10.63
192.168.10.64/26 地址范围 192.168.10.64 - 192.168.10.127
192.168.10.128/26 地址范围 192.168.10.128 - 192.168.10.191
192.168.10.192/26 地址范围 192.168.10.192 - 192.168.10.255
192.168.10.25 落在第一个范围,所以:
| 项目 | 值 |
|---|---|
| IP/前缀 | 192.168.10.25/26 |
| 子网掩码 | 255.255.255.192 |
| 网络地址 | 192.168.10.0 |
| 广播地址 | 192.168.10.63 |
| 可用主机范围 | 192.168.10.1 - 192.168.10.62 |
| 地址总数 | 64 |
| 常见可用主机数 | 62 |
块大小方法能把前缀、掩码、网络地址、广播地址和可用主机范围串成一条可复算路径。
这套流程适合快速心算。只要前缀在 /24 到 /30 之间,大多数办公网、服务器网、管理网和点到点链路都可以用“块大小”方法快速判断。
4.1 块大小心算法
当掩码不是 /24,可以用“块大小”判断子网边界:
块大小 = 256 - 掩码中发生变化的那一段
例如 /26 的掩码是 255.255.255.192,变化段是最后一段:
256 - 192 = 64
因此子网边界按 64 递增:0、64、128、192。
再看 /20:
/20 = 255.255.240.0
变化段是第三段
块大小 = 256 - 240 = 16
所以 172.16.35.10/20 的第三段按 16 递增:
172.16.0.0/20
172.16.16.0/20
172.16.32.0/20
172.16.48.0/20
...
35 落在 32-47,所以该地址所属网段是:
| 项目 | 值 |
|---|---|
| IP/前缀 | 172.16.35.10/20 |
| 子网掩码 | 255.255.240.0 |
| 网络地址 | 172.16.32.0 |
| 广播地址 | 172.16.47.255 |
| 可用范围 | 172.16.32.1 - 172.16.47.254 |
4.2 为什么默认网关必须在同一网段
主机访问目标地址时,先用自己的 IP 和掩码判断目标是否在同一网段:
- 同一网段:直接 ARP 解析目标 IP 的 MAC,然后发送帧。
- 不同网段:ARP 解析默认网关的 MAC,把 IP 包交给网关转发。
如果默认网关不在主机自己的网段内,主机连网关的 MAC 都无法正常解析。比如:
主机 IP:192.168.10.25/26
网关:192.168.10.254
192.168.10.25/26 的网段是 192.168.10.0-63,而 192.168.10.254 在 192.168.10.192-255,不属于同一子网。主机会认为网关不在本地链路上,通信自然异常。许多“配置了 IP 但不能上网”的问题,根因就是掩码和网关不匹配。
这张图说明了一个容易混淆的点:默认网关不是随便写一个三层设备地址,而必须落在本机直连子网内。否则主机连网关的 MAC 都无法正常解析,更谈不上把远端流量交给下一跳。
5. 常见私有地址、特殊地址与文档地址
企业内网通常使用 RFC 1918 定义的私有地址段:
| 私有地址段 | CIDR | 地址规模 | 常见使用场景 |
|---|---|---|---|
| 10.0.0.0 - 10.255.255.255 | 10.0.0.0/8 | 很大 | 大中型企业、集团、多园区、云 VPC |
| 172.16.0.0 - 172.31.255.255 | 172.16.0.0/12 | 中等 | 数据中心、容器、VPN、隔离业务区 |
| 192.168.0.0 - 192.168.255.255 | 192.168.0.0/16 | 较小 | 小型办公网、家庭网络、实验环境 |
私有地址不能直接在公网路由,需要通过 NAT、代理、VPN、专线或其他网关机制访问外部网络。规划私有地址时要特别注意重叠。例如总部使用 192.168.1.0/24,分支机构和家庭宽带路由器也常用这个网段,远程 VPN 接入时就容易发生冲突。
还有一些常见特殊地址:
| 地址或网段 | 用途 |
|---|---|
| 127.0.0.0/8 | 本机回环,常见 127.0.0.1 |
| 169.254.0.0/16 | IPv4 链路本地地址,常见于 DHCP 失败后的自动地址 |
| 0.0.0.0 | 未指定地址;路由表中 0.0.0.0/0 表示默认路由 |
| 255.255.255.255 | 受限广播地址 |
| 192.0.2.0/24 | 文档示例地址 |
| 198.51.100.0/24 | 文档示例地址 |
| 203.0.113.0/24 | 文档示例地址 |
写技术文档、培训材料和示例配置时,建议使用 192.0.2.0/24、198.51.100.0/24、203.0.113.0/24 这类保留文档地址,避免误用真实公网地址。本文涉及公网示例时也采用这些文档网段。
6. 子网划分的真实设计方法
子网划分不是为了把题目算对,而是为了让业务边界、广播域、路由、安全策略和地址容量保持一致。一个可维护的地址方案至少要考虑以下维度:
| 维度 | 需要回答的问题 | 规划影响 |
|---|---|---|
| 业务边界 | 办公网、服务器网、管理网、访客网、生产网是否隔离 | 决定 VLAN 和子网数量 |
| 地址容量 | 当前多少终端,三年后多少终端 | 决定前缀大小 |
| 安全策略 | 哪些网段之间需要 ACL、防火墙或零信任控制 | 决定网段是否拆分 |
| 广播控制 | 二层广播是否可能过大 | 决定单个子网不宜过大 |
| 路由汇总 | 是否需要按园区、楼层、业务汇总路由 | 决定地址块是否连续 |
| 运维识别 | 地址是否能从数字上看出位置和用途 | 决定编码规则 |
| 外部互联 | 是否有 VPN、云 VPC、合作方专线 | 避免地址重叠 |
6.1 示例:把一个 /24 拆给四类办公终端
假设有一个小型办公室,可用地址块是 192.168.50.0/24,需要划分:
- 办公终端:约 80 台
- 无线终端:约 60 台
- 打印与 IoT:约 25 台
- 网络设备管理:约 10 台
如果全部放在一个 /24,配置简单,但安全边界差,广播域大,后续 ACL 也不清晰。可以按容量拆分:
| 用途 | 预计规模 | 推荐网段 | 地址总数 | 常见可用主机 |
|---|---|---|---|---|
| 办公终端 | 80 | 192.168.50.0/25 | 128 | 126 |
| 无线终端 | 60 | 192.168.50.128/26 | 64 | 62 |
| 打印与 IoT | 25 | 192.168.50.192/27 | 32 | 30 |
| 网络设备管理 | 10 | 192.168.50.224/28 | 16 | 14 |
| 预留 | 未来扩展 | 192.168.50.240/28 | 16 | 14 |
这个方案不是唯一答案,但它体现了几个工程原则:
- 大规模终端给更大的地址块,小规模设备给更小的地址块。
- 管理网不要和普通用户终端混放。
- IoT、打印机、摄像头等弱管理设备应独立成网,便于限制访问方向。
- 留出预留空间,避免一上线就把
/24用满。
6.2 示例:按园区和楼层规划地址
中型企业更适合先按地点分大块,再按业务拆小块。假设企业拿 10.20.0.0/16 做内网,可以这样规划:
| 地址块 | 用途 |
|---|---|
| 10.20.0.0/20 | 总部园区 |
| 10.20.16.0/20 | 制造工厂 |
| 10.20.32.0/20 | 研发中心 |
| 10.20.48.0/20 | 灾备机房 |
| 10.20.64.0/20 | 云上 VPC 互联 |
总部园区内部再拆:
| 网段 | 用途 |
|---|---|
| 10.20.0.0/24 | 核心网络设备管理 |
| 10.20.1.0/24 | 服务器管理 |
| 10.20.2.0/23 | 办公终端 |
| 10.20.4.0/23 | 无线员工 |
| 10.20.6.0/24 | 访客无线 |
| 10.20.7.0/24 | 打印与会议设备 |
| 10.20.8.0/22 | 预留 |
这样做的好处是上级路由可以把总部汇总为 10.20.0.0/20,制造工厂汇总为 10.20.16.0/20。当分支和总部通过 WAN 或 SD-WAN 互联时,路由表比逐条发布几十个 /24 更简洁。
6.3 地址编码要服务于运维
地址规划可以适度编码,但不要过度复杂。一个可读的编码方式可能是:
10.<地点>.<业务>.<主机>
例如:
10.20.1.0/24 总部网络设备管理
10.20.2.0/23 总部办公终端
10.30.1.0/24 工厂网络设备管理
10.30.10.0/24 工厂 MES 服务器区
10.30.20.0/24 工厂 OT 采集区
编码的价值是让运维人员看到地址就能大致判断位置和用途。但编码不能牺牲路由汇总和容量扩展。如果为了“好看”把同一园区的地址分散在多个不连续区间,后续路由、ACL 和 IPAM 都会更难维护。
7. 地址配置与验证
7.1 Linux 查看与临时配置地址
查看地址:
ip -br addr
ip addr show dev eth0
查看路由:
ip route show
ip route get 8.8.8.8
临时添加地址:
sudo ip addr add 192.168.10.25/24 dev eth0
sudo ip link set eth0 up
临时添加默认路由:
sudo ip route add default via 192.168.10.1
这些命令重启后通常不会保留。生产环境应通过 Netplan、NetworkManager、systemd-networkd、发行版网络配置文件或网络自动化工具固化配置。
验证网关是否在同一网段:
ip route get 192.168.10.1
ping -c 3 192.168.10.1
ip neigh show 192.168.10.1
如果 ip route get 显示网关走本地接口,ping 正常,邻居表能看到 MAC,说明至少本机到网关的二三层基础是成立的。
7.2 Windows 查看地址与路由
查看地址:
ipconfig /all
查看路由:
route print
测试连通性:
ping 192.168.10.1
tracert 203.0.113.10
Test-NetConnection 203.0.113.10 -Port 443
Windows 环境常见问题包括 DHCP 获取到错误地址池、虚拟网卡优先级影响路由、VPN 客户端下发路由覆盖本地网段、无线和有线同时连接导致源地址选择异常。
7.3 用 Python 或 ipcalc 辅助计算
如果需要批量计算,可以使用系统工具或脚本。Linux 上常见工具包括 ipcalc、sipcalc、python3 标准库 ipaddress。
Python 示例:
import ipaddress
iface = ipaddress.ip_interface("192.168.10.25/26")
net = iface.network
print("network:", net.network_address)
print("broadcast:", net.broadcast_address)
print("netmask:", net.netmask)
print("hosts:", net.num_addresses)
print("first:", next(net.hosts()))
print("last:", list(net.hosts())[-1])
在自动化脚本、IPAM 校验、地址规划评审中,不建议手工维护大量网段表。更稳妥的方式是把网段、VLAN、站点、用途、网关、DHCP 范围、保留地址和负责人登记到 NetBox 或类似 IPAM 系统中,再由脚本做一致性检查。
8. 子网规划中的常见错误
8.1 掩码不一致导致“同地址不同世界”
两台主机配置如下:
主机 A:192.168.10.25/24
主机 B:192.168.10.200/25
主机 A 认为 192.168.10.200 和自己同网段,会直接 ARP 主机 B。主机 B 认为 192.168.10.25 不在自己的 192.168.10.128/25 网段内,回包要交给网关。结果可能出现单向通信、ARP 异常或路径绕行。
处理方式:
- 同一 VLAN 内的终端应使用一致的掩码和网关。
- DHCP 作用域、静态地址模板、服务器配置和网络设备 SVI 要统一。
- 排障时同时检查通信双方的 IP、掩码、网关,而不是只看一端。
8.2 网关地址不在本机网段
前文已经举过例子。这个问题常出现在把 /24 改成 /26 或 /27 后,忘记同步调整网关地址。处理原则很简单:默认网关必须是本机直连网段内可达的三层接口地址。
验证命令:
ip addr show dev eth0
ip route show
ip route get <网关IP>
arping -I eth0 <网关IP>
如果网关不在直连网段,先修正地址规划,不要试图通过添加静态路由绕过这个基础错误。
8.3 地址池和静态地址冲突
DHCP 地址池覆盖服务器、打印机、网关、交换机管理地址,会导致偶发冲突。典型表现是:
- 某台终端上线后,服务器突然不可达。
arp或ip neigh中同一 IP 对应不同 MAC。- 日志出现 duplicate address 或 address conflict。
建议做法:
- 网关、网络设备、服务器、打印机、摄像头、AP 控制器等使用固定保留区。
- DHCP 地址池只覆盖动态终端范围。
- 在 IPAM 中登记静态地址、保留地址和 DHCP 范围。
- 网络设备侧启用 DHCP Snooping、IP Source Guard、动态 ARP 检测等能力时,要先确认维护能力和误拦截风险。
8.4 地址重叠
地址重叠是 VPN、云互联、容器网络、并购整合和合作方专线中最麻烦的问题之一。两个网络都使用 192.168.1.0/24 时,路由器无法只凭目的地址判断该发往哪个网络。
常见重叠场景:
- 员工家用网络与公司 VPN 地址重叠。
- Docker 默认 bridge 网络与企业内网某段重叠。
- Kubernetes Pod CIDR 或 Service CIDR 与数据中心地址重叠。
- 云上 VPC 与本地 IDC 地址重叠。
- 合作方专线双方都使用常见私网段。
处理方向:
- 新项目规划时优先避开常见家庭网段,如
192.168.0.0/24、192.168.1.0/24。 - 云、容器、VPN 地址池在上线前纳入统一 IPAM。
- 已经重叠时,优先做地址迁移;临时方案可以使用 NAT、代理或特定路由策略,但复杂度和排障成本会上升。
这棵排查树适合 VPN 和云互联场景。地址重叠不是单点配置错误,而是规划层问题;临时绕行越多,后续故障定位越难。
8.5 把广播域做得过大
有些环境为了省事,会把大量终端放进一个 /16 或大 /22 网络里。这样做可能带来:
- 广播和未知单播范围过大。
- 故障或环路影响面扩大。
- 终端之间横向访问难以控制。
- DHCP、ARP、安全审计和资产定位更困难。
并不是所有大网段都错误,但大网段必须有设计理由。例如云 VPC 内部的某些地址段可以较大,但办公接入、IoT、生产终端、服务器管理网通常应按安全域和广播域拆分。
9. 路由匹配与子网边界
理解子网还必须理解路由表的匹配规则。大多数 IP 路由遵循最长前缀匹配:当多条路由都能匹配目标地址时,选择前缀最长、也就是范围最小的那条。
假设路由表有:
10.20.0.0/16 via 10.1.1.1
10.20.30.0/24 via 10.1.1.2
10.20.30.128/25 via 10.1.1.3
0.0.0.0/0 via 10.1.1.254
访问不同地址时:
| 目的地址 | 匹配结果 | 原因 |
|---|---|---|
| 10.20.40.10 | 10.20.0.0/16 | 只命中 /16 |
| 10.20.30.20 | 10.20.30.0/24 | /24 比 /16 更具体 |
| 10.20.30.200 | 10.20.30.128/25 | /25 比 /24 更具体 |
| 8.8.8.8 | 0.0.0.0/0 | 其他都不匹配,走默认路由 |
最长前缀匹配决定实际路径,默认路由只会在没有更具体路由命中时生效。 这个规则解释了很多“为什么路由明明有默认网关却没走默认网关”的问题。只要有更具体路由,默认路由就不会被选中。VPN 客户端、容器平台、云主机和安全代理经常动态下发更具体路由,因此排障时必须查看实际路由表,而不能只看静态配置预期。
10. 生产地址规划建议
10.1 先定边界,再定大小
不要从“每个 VLAN 都给 /24”开始。更好的顺序是:
- 列出地点:总部、分支、工厂、机房、云上区域。
- 列出业务域:办公、无线、访客、服务器、管理、存储、备份、监控、OT、IoT。
- 列出安全边界:哪些流量必须经过防火墙,哪些只需要三层交换。
- 估算容量:当前终端数、三年增长、临时峰值、预留比例。
- 分配连续地址块:尽量让同地点、同业务的网段可汇总。
- 登记 IPAM:记录网段、VLAN、网关、DHCP、责任人、备注和变更历史。
10.2 常用前缀选择
| 场景 | 常见前缀 | 说明 |
|---|---|---|
| 小型管理网 | /28 或 /27 | 网络设备、带外管理、少量固定地址 |
| 点到点互联 | /30 或支持时 /31 | 路由器、防火墙、专线互联 |
| 小型服务器区 | /27 或 /26 | 便于 ACL 和安全策略控制 |
| 办公终端 VLAN | /24 或 /23 | 取决于终端数量和广播控制要求 |
| 无线终端 | /23 或更大 | 需结合控制器、漫游、DHCP 租约和接入规模 |
| 云 VPC 子网 | /24 到 /20 | 需考虑云厂商保留地址和扩缩容 |
| 容器 Pod CIDR | 按集群规模规划 | 避免和内网、VPN、云网络重叠 |
前缀选择没有绝对标准。关键是能解释为什么这样分,并且能在安全、容量、路由和运维之间取得平衡。
10.3 保留地址策略
一个简单可执行的 /24 地址分配模板:
| 范围 | 用途 |
|---|---|
| .1 - .9 | 网关、冗余网关、核心设备 |
| .10 - .49 | 服务器、网络设备、关键固定地址 |
| .50 - .99 | 打印机、摄像头、AP、IoT 或保留 |
| .100 - .199 | DHCP 动态地址池 |
| .200 - .239 | 临时保留、项目测试 |
| .240 - .254 | 运维预留或特殊用途 |
这只是模板,不必机械套用。更重要的是在一个组织内保持一致,让网络、系统、安全和桌面团队都知道地址段含义。
10.4 变更前检查清单
调整子网或地址规划前,至少检查:
- 是否影响 DHCP 作用域、租约时间和保留地址。
- 是否影响默认网关、VRRP/HSRP 地址和三层接口。
- 是否需要更新静态路由、OSPF/BGP 发布、路由汇总。
- 是否需要更新防火墙地址对象、ACL、NAT、VPN 加密域。
- 是否需要更新 DNS、监控、CMDB/IPAM、备份策略和日志采集。
- 是否存在硬编码 IP 的应用、脚本、摄像头、PLC、打印机或第三方系统。
- 是否有回滚地址、回滚网关和变更窗口。
地址变更通常牵涉多个系统。真正困难的不是改一个 IP,而是找到所有依赖这个 IP 或网段的地方。
11. 排障 runbook:从地址到路径逐层验证
当一台主机配置了 IP 但无法访问目标时,可以按以下顺序排查。
对应命令:
# 1. 本机地址
ip -br addr
# 2. 路由表
ip route show
ip route get <目标IP>
# 3. 网关连通性
ping -c 3 <默认网关>
ip neigh show <默认网关>
# 4. 目标连通性
ping -c 3 <目标IP>
traceroute <目标IP>
# 5. 端口测试
nc -vz <目标IP> 443
curl -vk https://<目标域名或IP>/
# 6. 抓包验证
sudo tcpdump -i eth0 -nn host <目标IP>
排查时要避免两个误区:
ping不通不一定代表业务不通,可能 ICMP 被限制;但网关都 ping 不通时,通常要先检查本地链路和地址。- 端口通不代表应用正常,端口之后还有 TLS、HTTP、认证、反向代理和业务逻辑。
地址和子网排障的重点是确认本机如何判断目标是否本地、下一跳是谁、回包是否能回来。只要这三件事清楚,很多复杂故障都会变简单。
12. 自测练习
练习 1:计算 /27 网段
主机地址:
192.168.12.77/27
/27 的掩码是 255.255.255.224,块大小是 256 - 224 = 32。最后一段边界是:
0, 32, 64, 96, 128, 160, 192, 224
77 落在 64-95,所以:
| 项目 | 结果 |
|---|---|
| 网络地址 | 192.168.12.64 |
| 广播地址 | 192.168.12.95 |
| 可用范围 | 192.168.12.65 - 192.168.12.94 |
| 可用主机数 | 30 |
练习 2:判断网关是否正确
配置如下:
IP:10.10.8.130/25
网关:10.10.8.1
/25 的块大小是 128。10.10.8.130 属于 10.10.8.128/25,可用范围是 10.10.8.129-10.10.8.254。网关 10.10.8.1 属于 10.10.8.0/25,不在同一子网,因此这个网关配置不正确。
可选修正方式:
- 把主机改到
10.10.8.0/25内,例如10.10.8.20/25,继续使用10.10.8.1。 - 或把网关改成
10.10.8.129、10.10.8.254等10.10.8.128/25内的三层接口地址。 - 或重新评估是否应使用
/24,但不能只为掩盖错误而扩大网段。
练习 3:为 45 台设备选择前缀
45 台设备需要至少 45 个可用地址。常见前缀:
| 前缀 | 可用主机数 |
|---|---|
| /27 | 30 |
| /26 | 62 |
| /25 | 126 |
因此 /26 是较合适的起点。如果该业务预计很快增长到 100 台,应考虑 /25;如果这是固定数量的摄像头或门禁设备,且未来增长有限,/26 更节省地址。
13. 从地址规划落到运维治理
网络初学者常把子网划分理解成计算题,实际生产里更常见的问题是“算对了,但管不住”。一个地址方案上线后会被 DHCP、DNS、防火墙、交换机、无线控制器、监控系统、资产系统、堡垒机、日志平台、VPN、云网络和容器平台共同使用。如果这些系统各自维护一份地址表,几年后几乎必然出现信息不一致。
因此,IP 地址管理需要形成一套轻量但稳定的治理流程。
13.1 每个网段都应该有明确元数据
建议每个生产网段至少记录以下信息:
| 字段 | 示例 | 作用 |
|---|---|---|
| 网段 | 10.30.20.0/24 | 明确地址边界 |
| VLAN ID | 320 | 关联二层广播域 |
| 网关 | 10.30.20.1 | 关联三层接口或防火墙子接口 |
| 用途 | 工厂 OT 数据采集区 | 判断是否允许终端接入 |
| 位置 | 苏州工厂一号车间 | 定位现场责任人 |
| 安全域 | OT-采集 | 关联 ACL 和防火墙策略 |
| DHCP 范围 | 10.30.20.100-10.30.20.199 | 防止静态地址冲突 |
| 保留范围 | 10.30.20.1-10.30.20.49 | 网关、交换机、采集网关、PLC |
| 负责人 | 网络组/自动化组 | 故障和变更时快速协同 |
| 上联设备 | Core-SW01 Vlanif320 | 方便排障定位 |
| 路由发布 | OSPF area 0 / 静态发布 | 防止漏发布或误汇总 |
| 备注 | 不允许普通办公终端接入 | 保留业务约束 |
没有这些元数据,地址本身只是数字。排障时看到 10.30.20.45,没人知道它是 PLC、工控机、边缘网关还是临时笔记本;安全团队也很难判断某条放通策略是否合理。
13.2 IPAM 不是只给网络团队用
IPAM 的价值不只是“查哪个 IP 被谁用了”。更好的做法是把 IPAM 当作网络事实源,至少服务以下场景:
- 网络团队用它规划网段、VLAN、网关、路由汇总和设备管理地址。
- 系统团队用它申请服务器地址,避免手工挑选冲突地址。
- 安全团队用它生成或校验防火墙地址对象。
- 运维团队用它关联监控对象、告警归属和资产责任人。
- 自动化脚本用它校验配置是否与标准一致。
- 项目团队用它在上线前确认新系统是否会造成地址重叠。
例如一个服务器上线流程可以这样设计:
这个流程的重点不是引入复杂审批,而是让地址分配、网络连通、安全策略和运维监控用同一份数据。否则服务器已经上线,监控系统不知道它属于哪个业务;防火墙策略写了网段对象,半年后地址迁移没人更新;VPN 侧又手工添加一条路由,最终每个系统都“局部正确、全局混乱”。
13.3 DHCP 与静态地址的边界要提前写清楚
很多办公网故障不是路由器坏了,而是地址边界没有管理好。推荐把一个终端网段拆成几个固定用途范围:
10.40.8.0/24 办公终端 VLAN
10.40.8.1-10.40.8.9 网关、冗余网关、网络服务
10.40.8.10-10.40.8.49 保留给固定终端或特殊设备
10.40.8.50-10.40.8.99 打印机、会议终端、门禁等
10.40.8.100-10.40.8.219 DHCP 动态地址池
10.40.8.220-10.40.8.239 临时项目测试
10.40.8.240-10.40.8.254 运维预留
同时,DHCP 服务器应该配置:
- 正确的子网掩码和默认网关。
- 正确的 DNS、NTP、搜索域等选项。
- 合理的租约时间:办公终端可长一些,访客无线可短一些。
- 排除网关、服务器、打印机、网络设备等固定地址。
- 对关键设备使用 DHCP reservation 时,要登记 MAC、责任人和用途。
如果无线访客网络租约过长,大量临时设备会占住地址池;如果工厂采集终端使用动态地址而上层系统又绑定 IP,设备重启后可能导致采集平台找不到设备;如果打印机既被手工静态配置,又落在 DHCP 池里,地址冲突会以非常随机的方式出现。
13.4 子网边界与安全策略要同步设计
网络安全策略通常按源网段、目的网段、协议和端口编写。如果地址规划没有体现安全边界,后续策略就会非常难写。
反例:
10.50.1.0/24 同时包含:
- MES 应用服务器
- 数据库服务器
- 运维跳板机
- 厂商远程维护终端
- 临时测试服务器
这种混放会导致防火墙策略很尴尬。为了让 MES 应用访问数据库,可能不得不放通整个 10.50.1.0/24 到数据库端口;为了让厂商远程维护某台服务器,策略又很容易扩大到同网段其他主机。短期看省了 VLAN,长期看增加了横向移动风险。
更合理的划分是:
| 网段 | 用途 | 默认策略 |
|---|---|---|
| 10.50.10.0/24 | MES 应用区 | 只访问数据库、接口服务和必要中间件 |
| 10.50.11.0/24 | MES 数据库区 | 只接受应用区和备份区访问 |
| 10.50.12.0/24 | 运维管理区 | 只允许堡垒机、监控、备份访问 |
| 10.50.13.0/24 | 厂商维护区 | 默认不通,按工单临时开通 |
| 10.50.14.0/24 | 测试区 | 不允许直接访问生产数据库 |
这样安全策略可以围绕业务边界表达,而不是围绕零散 IP 打补丁。地址规划越清晰,防火墙对象越稳定,审计和变更越容易。
13.5 路由汇总和安全边界有时会冲突
地址连续有利于路由汇总,但安全边界也可能要求拆分。比如一个工厂希望把所有地址汇总成 10.60.0.0/16 发布到总部,这对路由很友好;但工厂内部的办公、OT、访客、视频监控、MES、PLC、设备维护网络不能因为汇总而互相任意访问。
解决方法是区分“路由可达”和“策略允许”:
- 在 WAN 或骨干层可以发布汇总路由,减少路由条目。
- 在防火墙或三层网关处继续保留细分安全域。
- ACL 和策略对象使用更具体网段。
- 对高风险区域,例如 OT、访客、厂商维护,默认拒绝跨域访问。
- 对日志和监控保留足够标签,避免汇总后看不清来源。
不要把“有路由”误认为“应该放通”。路由只说明包知道往哪里走,安全策略才说明包是否应该被允许。
13.6 地址变更要像应用变更一样管理
地址变更经常被低估。一个网段从 /24 调整成 /23,看起来只是掩码变化,实际可能影响:
- DHCP 作用域和租约。
- 网关接口掩码。
- 二层 VLAN 和三层 SVI。
- 防火墙地址对象。
- 静态路由和动态路由发布。
- 监控系统的自动发现范围。
- 扫描器、备份软件、堡垒机和日志采集器。
- 应用白名单、数据库访问控制和第三方接口。
- 文档、资产台账、应急预案和交接材料。
一个可执行的地址变更模板可以包含:
| 阶段 | 动作 | 验证 |
|---|---|---|
| 变更前 | 导出当前地址、路由、DHCP、策略和监控范围 | 确认有回滚配置 |
| 评审 | 检查地址重叠、容量、网关、广播影响和安全策略 | IPAM 中无冲突 |
| 实施 | 调整网关、DHCP、路由、防火墙和相关系统 | 分阶段验证网关、DNS、端口 |
| 观察 | 监控地址冲突、DHCP 告警、业务连通性 | 关键业务无异常 |
| 收尾 | 更新 IPAM、拓扑、应急文档和变更记录 | 文档与配置一致 |
这类流程看起来比直接改配置慢,但能显著降低“改完能通,第二天另一个系统坏了”的概率。
13.7 与后续网络主题的关系
IP 地址和子网划分会贯穿后续章节:
- 学习常见网络设备时,要理解交换机主要处理二层广播域,路由器和三层交换机处理不同子网之间的转发。
- 学习 VLAN 时,要理解一个 VLAN 通常对应一个 IP 子网,但大型或特殊场景中也可能有例外。
- 学习路由时,要理解路由条目的前缀长度、下一跳、管理距离和最长前缀匹配。
- 学习 ACL 和防火墙时,要理解源地址、目的地址和网段对象如何表达访问边界。
- 学习网络排障时,要先确认地址、掩码、网关、ARP 和路由,再分析 TCP、DNS 和应用层。
- 学习网络自动化时,要把 IPAM 作为输入,而不是让脚本在配置里硬编码地址。
换句话说,子网划分是网络知识体系中的“坐标系统”。坐标系统不清楚,后续所有拓扑、路由、策略和排障都会缺少共同语言。
14. 总结
IP 地址与子网划分是网络层最基础、也是最容易影响生产稳定性的知识。掌握它不只是会做二进制计算,更重要的是理解地址边界如何影响 ARP、默认网关、路由匹配、广播域、安全策略和后续扩展。
本文的核心结论:
- IPv4 地址必须和掩码或 CIDR 前缀一起理解,单独一个地址无法判断网段。
- 子网掩码把 32 位地址切成网络部分和主机部分。
- 网络地址、广播地址和可用主机范围都由前缀长度决定。
- 默认网关必须位于主机的直连子网内。
- 私有地址规划要避免和 VPN、云、容器、合作方网络重叠。
- 子网划分要服务业务边界、安全策略、路由汇总和运维识别。
- 排障时先确认本机地址、掩码、网关和路由选择,再进入端口和应用层。
下一篇《常见网络设备介绍》会从主机视角扩展到设备视角,梳理交换机、路由器、防火墙、无线 AP、负载均衡、网关和光模块等常见网络组件的职责边界。
参考资料
- RFC 791 — Internet Protocol
- RFC 4632 — Classless Inter-domain Routing (CIDR)
- RFC 1918 — Address Allocation for Private Internets
- RFC 5737 — IPv4 Address Blocks Reserved for Documentation
- RFC 3021 — Using 31-Bit Prefixes on IPv4 Point-to-Point Links
- Linux ip-address manual
- Python ipaddress 标准库文档
- [验证环境:Ubuntu 24.04 / iproute2 6.x / Python 3.12 / 2026-05-27]