4. IP地址与子网划分:IPv4/IPv6地址结构、子网掩码、CIDR、常见配置错误
4.1 核心原理:IPv4与IPv6地址结构
IP地址是网络层寻址的基础。IPv4地址为32位二进制数,通常以点分十进制表示,例如 192.168.1.10。其结构分为网络号与主机号两部分,网络号标识所在网段,主机号标识网段内的具体接口。IPv6地址则为128位,采用冒号分隔的十六进制表示,例如 2001:db8::1。IPv6取消了广播地址,用任播(Anycast)和多播替代,且地址自动配置能力(SLAAC)显著增强了即插即用性。
子网掩码(IPv4)或前缀长度(IPv6)用于界定网络号与主机号的边界。IPv4掩码如 255.255.255.0 等价于CIDR前缀 /24,表示前24位为网络号。IPv6则统一使用前缀长度,如 /64 表示前64位为网络前缀,后64位通常作为接口标识符(IID)。
fe80::/10 开头的地址时,这是链路本地地址,仅在同一物理链路内有效,不能路由。若主机只获取到 169.254.x.x(IPv4)或 fe80::(IPv6)地址,说明DHCP或路由通告失败,这是定位“无法上网”问题的第一信号。
4.2 方法流程:子网掩码与CIDR计算
子网划分的核心是借位:从主机号高位借出若干位作为子网号。例如将 192.168.1.0/24 划分为4个子网,需借2位,子网掩码变为 255.255.255.192(即 /26),每个子网含64个地址(62个可用)。CIDR(无类域间路由)则允许任意长度的前缀,不再受A/B/C类限制,极大提升了地址利用率。
实际排障中,最常用的计算工具是 ipcalc 或 sipcalc。例如在Linux下执行:
ipcalc 192.168.1.5/26
# 输出:
# Address: 192.168.1.5 11000000.10101000.00000001.00000101
# Netmask: 255.255.255.192 = 26 11111111.11111111.11111111.11000000
# Network: 192.168.1.0/26 11000000.10101000.00000001.00000000
# HostMin: 192.168.1.1 11000000.10101000.00000001.00000001
# HostMax: 192.168.1.62 11000000.10101000.00000001.00111110
# Broadcast: 192.168.1.63 11000000.10101000.00000001.00111111
判断两个IP是否在同一子网,需将IP与掩码逐位相“与”,结果相同则同网段。例如 10.0.0.5/255.255.255.0 与 10.0.0.200 同网段,但与 10.0.1.5 不同网段。IPv6排障中,ip -6 addr show 可查看前缀长度,ping6 ff02::1%eth0 可探测链路内所有节点。
4.3 案例/场景:VLAN间路由不通的排查
某企业网络划分了多个VLAN,核心交换机配置了VLAN间路由。故障现象:VLAN 10的主机(192.168.10.0/24)无法访问VLAN 20的服务器(192.168.20.0/24)。排查过程如下:
- 检查网关配置:主机网关应指向核心交换机VLAN接口地址,如
192.168.10.1。若误配为192.168.10.254(该地址属于另一台设备),则数据包被错误转发。 - 验证子网掩码:若VLAN 10主机掩码误设为
255.255.255.128(/25),则主机认为192.168.10.128~255属于本地链路,不会发送到网关,导致通信失败。 - 检查交换机SVI配置:执行
show ip interface brief,确认VLAN 10和VLAN 20的SVI接口均为up状态,且IP地址与主机网关一致。 - 抓包验证:在核心交换机上使用
tcpdump -i vlan10 icmp,若看到ICMP请求但无响应,则问题可能在VLAN 20侧或路由表缺失。
255.255.255.0,但实际该VLAN需要容纳2000台设备,应使用 /22(255.255.252.0)。由于掩码过小,部分服务器地址(如 192.168.23.5)被交换机判定为不在本地子网,导致路由黑洞。
4.4 误区/复盘:常见配置错误清单
| 错误类型 | 典型表现 | 后果 | 排查方法 |
|---|---|---|---|
| 掩码不一致 | 两端掩码不同,如一端/24,另一端/25 | 部分主机无法互访 | 对比双方 ip addr 输出 |
| 网关地址错误 | 网关IP不属于本地子网 | 所有跨网段通信失败 | 检查路由表 route -n |
| 广播地址冲突 | 主机地址设为x.x.x.255 | 该主机无法通信 | 用 arping 检测冲突 |
| IPv6前缀过短 | 误用/48作为子网前缀 | 路由聚合异常 | 确认规划使用/64 |
| DHCP地址池越界 | 池范围超出子网边界 | 部分主机获取到不可达地址 | 查看DHCP lease日志 |
/64 误写为 /128,导致该服务器认为自己是孤立地址,拒绝所有路由通告。使用 ip -6 route show 发现默认路由缺失,修正为 /64 后立即恢复。务必牢记:IPv6子网划分的最小单位是/64,更短的前缀(如/127)仅用于点对点链路。
最后,建议所有网络设备启用重复地址检测(DAD),并在部署前使用 ping 和 traceroute 验证双向连通性。对于CIDR聚合,需确保路由表中无更具体前缀冲突,否则可能产生路由环路。掌握地址结构与掩码计算,是网络排障的基本功,也是避免“低级错误”的关键防线。