上周帮朋友公司处理一个网络故障时,发现他们的办公网段和云上VPC出现了地址冲突。技术总监一脸困惑:"我们明明按照192.168.1.0/24的标准划分,为什么AWS上的服务突然无法访问本地NAS?"这个看似简单的网络规划问题,背后正是CIDR和路由匹配的核心原理在起作用。
大多数家庭宽带默认分配的是/24网段(如192.168.1.0/24),这意味着你只能使用254个可用IP地址(192.168.1.1-192.168.1.254)。当智能设备超过200台时,就会遇到这样的报错:
code复制DHCP lease pool exhausted - no more IP addresses available
解决方案分三步走:
评估实际需求:
选择新子网掩码:
实施变更:
bash复制# 在OpenWRT路由器上的配置示例
uci set network.lan.ipaddr="192.168.0.1"
uci set network.lan.netmask="255.255.254.0"
uci commit
/etc/init.d/network restart
提示:变更前建议先设置DHCP租期缩短至1小时,方便快速回收旧IP
某初创公司有3个部门需要独立子网:
传统方案:给每个部门分配/24网段(浪费率高达70%)
CIDR优化方案:
| 部门 | 所需IP | 分配网段 | 可用IP | 浪费率 |
|---|---|---|---|---|
| 研发 | 90 | 10.0.1.0/25 | 126 | 28% |
| 市场 | 30 | 10.0.2.0/27 | 30 | 0% |
| 财务 | 12 | 10.0.3.0/28 | 14 | 14% |
关键计算工具:
python复制def calculate_subnet(required_ips):
import math
host_bits = math.ceil(math.log2(required_ips + 2))
prefix = 32 - host_bits
return f"/{prefix}"
print(calculate_subnet(90)) # 输出/25
在AWS VPC中创建子网时,控制台会强制要求输入CIDR块。为什么不能随意填写?因为云平台底层依赖CIDR实现:
VPC与子网关系:
实际配置演示:
terraform复制resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
resource "aws_subnet" "web" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
}
常见错误:
某企业网络出现异常:部分外网访问被错误路由到备份线路。查看核心路由器配置:
code复制路由表:
1. 203.0.113.0/24 → 主ISP (100Mbps)
2. 203.0.113.128/25 → 备ISP (10Mbps)
3. 0.0.0.0/0 → 主ISP
当访问203.0.113.200时,实际走了备ISP线路。这就是最长前缀匹配规则在起作用:
修复方案:
cisco复制! 在Cisco路由器上合并路由
config terminal
ip route 203.0.113.0 255.255.255.0 主ISP网关
no ip route 203.0.113.128 255.255.255.128 备ISP网关
end
某跨国企业有多个分支机构使用以下网段:
在总部路由器上,可以聚合为一条超网路由:
code复制192.168.16.0/22 via 专线网关
计算过程:
Kubernetes集群的网络规划常遇到CIDR冲突问题。典型配置:
yaml复制# kubeadm配置示例
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
podSubnet: "10.244.0.0/16"
serviceSubnet: "10.96.0.0/12"
避坑指南:
故障排查命令:
bash复制# 查看集群CIDR分配情况
kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'
# 检查IP冲突
arp-scan --interface=eth0 --localnet
在混合云场景中,我曾遇到AWS VPC(172.31.0.0/16)与本地K8s集群(172.31.0.0/16)冲突的情况。最终通过修改kubeadm的podSubnet为10.244.0.0/16解决。这个案例充分说明,好的CIDR规划应该像城市规划一样,提前预留发展空间。