首页 / 资讯中心 / 文章详情

子网划分与路由汇总实战:掩码计算、VLSM分配与排错指南

子网划分与路由汇总实战:掩码计算、VLSM分配与排错指南 ★ FEATURED ARTICLE
上个月帮一个朋友收拾他们办公室的网络拓扑画出来之后我盯着白板愣了好一会儿全楼二十来台电脑清一色从192.168.1.2排到192.168.1.200打印机192.168.1.201路由器192.168.1.1三个摄像头和两个无线AP也全部挤在这个网段里。出了故障排查了一圈最后发现是一台摄像头发送的广播报文把无线网络整个拖崩了。这就是典型的“子网划分”没做明白一个网段看起来够用实际上把所有设备的广播域、故障域和安全边界全揉到了一个篮子里。反过来很多网络工程师在规划时又容易走另一个极端——地址分得太碎路由表膨胀到几百条维护起来想死的心都有。于是“路由汇总”这件事就变得和“子网划分”一样重要一个负责把大网切开一个负责把碎网合并两者配合才能让网络既可控又高效。这篇文章不讲虚的直接围绕子网划分和汇总结成核心把借位算法、VLSM分配、超网合并、以及我在实际排障中踩过的坑一次讲清楚。适合刚学网络的初学者、自己管公司网络的系统管理员也适合准备网络方向认证的朋友做复习参考。1. 掩码不是随手填的数字什么场景逼着你认真做子网划分1.1 一个网段塞满设备的后果很多小公司的网络长这个样子路由器是192.168.1.1所有电脑、打印机、AP、摄像头、NAS统统都是192.168.1.x掩码一律255.255.255.0。表面上看没毛病反正一个C类段有254个可用地址日常办公根本用不完。但问题是地址够用不代表网络健康。所有设备同处一个广播域意味着任何一台设备发广播帧全网的设备都要停下来处理一遍。平时设备少感觉不到一旦摄像头、无线终端、办公电脑数量上去ARP广播、NetBIOS广播、各种发现协议广播同时涌出来网络时延就会明显爬升。更麻烦的是故障排查某台设备发起了异常广播你很难定位是哪一台在捣蛋因为所有设备都在同一个“大房间”里互相干扰。这时你就需要子网划分——把一个大的地址块切成多个小的子网每个子网属于独立的广播域。部门A的广播不会跑到部门B摄像头网络的异常也不会拖垮办公网络故障半径一下子缩小了。1.2 划分子网之后新的问题出现了把网络切碎之后比如按部门划分每个部门一个小的网段效果确实好。但接踵而来的是路由问题办公网段要访问服务器网段服务器网段要访问打印机网段路由器或三层交换机上就得为每个小网段配置路由。网段越多路由表越大配置越繁琐越容易出错。这个时候“路由汇总”就派上用场了。路由汇总也叫超网化本质上和子网划分是一个数学问题、两种方向子网划分是让1变多路由汇总是让多归1。把连续的、可对齐的小网段合并成一个大的超网地址在核心设备上只需要一条路由就能代表一片网段路由表规模大幅缩小网络设备查找路由的速度也更快网络拓扑变化时收效也更快。所以子网划分和汇总从来不是孤立的操作。规划内网时必须一起考虑先想清楚哪些地址可以连续分配、哪些网段未来可以汇总再动手切。否则今天切得很痛快明天路由表乱成一锅粥。2. 借位计算与块大小把子网划分的算术一次吃透2.1 从“/24改成/27”理解借位子网划分的底层原理其实不复杂。一个IPv4地址32位掩码的作用就是告诉你前多少位是网络位后多少位是主机位。默认的C类掩码255.255.255.0写成CIDR就是/24意思是前24位固定后8位由主机自由使用能容纳2的8次方即256个地址。想要把一个/24切成多个子网办法是向主机位“借位”。比如借1位出来掩码变成/25主机位只剩7位这个/24就被切成了两个/25每个子网128个地址。借2位变成/26得到4个子网每个子网64个地址。借3位变成/27得到8个子网每个子网32个地址。这里有个关键规律每借1位子网数量翻倍每借1位每个子网的主机数减半。如果你要容纳50台设备那就不能选/27因为32个地址扣掉网络地址和广播地址后只剩30个可用必须用/26。2.2 快速定位块大小的土办法很多初学者在纸上算二进制算得慢到了真实环境里靠计算器也麻烦。我这里分享一个用了很多年的土办法看掩码最后一个不是255的字节用256减去这个值得到的就是这个子网在地址空间上的“块大小”。举个例子255.255.255.192的最后一个非255字节是192256减192等于64那么每个子网的跨度为64个地址按64为步进递增。看255.255.255.224最后一个非255字节是224256减224等于32每个子网32个地址。再比如255.255.255.248256减248等于8每个子网8个地址。这个方法到B类、A类地址同样适用。255.255.252.0这种掩码最后一个非255字节是第三段的252256减252等于4说明在第三字节上每4个为一跳换算成整体地址量每个子网包含4乘256等于1024个地址。2.3 为什么可用主机数必须减2每个子网的地址都分三种用途一个网络地址用于标识这个子网本身一个广播地址用于向子网内所有设备发送广播剩下的是可用主机地址。网络地址是主机位全0的地址比如192.168.1.0/26里的192.168.1.0广播地址是主机位全1的地址比如同一个子网里的192.168.1.63。这两类地址不能分配给任何设备。所以一个子网实际可用主机数等于2的N次方减2N是这个子网的主机位数。很多人规划网络时只看“这个段能容纳多少设备”却忘了减2结果刚好卡在最边缘这是非常常见的翻车现场。2.4 常用掩码参数速查表为了规划方便我把从/30到/20这一段的常用参数整理了一下可以直接拿来对照。前缀长度子网掩码块大小地址数可用主机数典型应用/30255.255.255.25242路由器间互联链路/29255.255.255.24886小型设备组/28255.255.255.2401614服务器/小型部门/27255.255.255.2243230小型办公网段/26255.255.255.1926462稍大办公网段/25255.255.255.128128126中等规模网段/24255.255.255.0256254标准单一网段/23255.255.254.0512510两个C段合并/22255.255.252.010241022中型分支/楼栋/21255.255.248.020482046多楼栋汇聚/20255.255.240.040964094大区域汇总这张表不用死记用到的时候对照一下用多了自然就印在脑子里了。3. 按需求倒推子网把VLSM可变长子网掩码用出价值3.1 先数设备再定掩码而不是一刀切很多人在分配子网时喜欢图省事不管部门大小一律给一个/24。结果财务部只有6台设备占着254个可用地址生产部60台设备也占着一个/24浪费极为严重。IPv4地址虽然没有当年那么紧张了但内网规划时的不规范会直接导致后续扩展困难比如想增加一个网段却发现地址已经被前面的部门浪费掉了。正确做法是“按需倒推”先统计每个网段里实际有多少台设备再预留30%左右的增长余量然后选择能容纳这个数量的最小掩码。比如某个网段目前需要35个地址留30%余量后按46个算那/26的62个可用地址正合适如果某个网段需要80个地址那就得用/25126个可用地址。宁可稍微富余一点也不要刚好卡在可用主机数上限上否则下次加两台设备你又要重新设计整个网络。3.2 地址怎么分配才不容易碎片化VLSM的分配顺序有个铁律先分大块再分小块。原因是地址空间是连续的大块需要对齐到更大的边界如果你先把中间一个小块分走了后面的大块就只能跳过它去别处找位置地址碎片化就产生了。打个比方这就像在一块地里先修个小仓库再盖大楼大楼只能绕开仓库选址整体布局就被动很多。正确的顺序是先把最大的网段定位好它对齐的边界要求最严格然后再把中等网段填进剩余空间最后用/30、/29这种小段填缝隙。我见过最典型的一个反面案例有人先给门禁系统分了一个/28地址段占在192.168.1.16到192.168.1.31然后想给120台设备的办公区分配/25结果/25必须从192.168.1.0或192.168.1.128开始中间夹着门禁段怎么都用不顺畅。原本一个/24能轻松装下所有网段最后被迫用了两个/24路由表也跟着多了一倍。3.3 互联链路用/30还是/31别在这上面浪费地址两台路由器之间互联只需要2个IP地址所以最常用的配置是/30段可用地址正好2个。比如192.168.1.128/30可用的是.129和.130.128是网络地址.131是广播地址。如果你的设备全部支持RFC 3021那还有一个更省地址的方案/31。/31的特点是主机位只有1位没有网络地址和广播地址两个IP正好是两端设备的接口地址。这在地下管网、传输链路这种点对点场景非常实用。但要注意/31只能用于点对点链路不能用在需要广播和发现协议的普通接入网段。如果你不确定设备商的路由协议实现是否支持/31稳妥起见还是用/30别为了省两个IP把链路搞出不兼容问题。4. 把上百条路由汇总成几条超网合并的看家本领4.1 路由表越大网络越脆弱很多网络初期配置完都能正常跑问题出在后续扩张。每加一个网段就加一条路由核心交换机上的路由表越来越长。路由表长本身不是致命伤致命的是每次网络波动、接口抖动设备都要重新计算和收敛路由。路由条目一多收敛时间明显变长出问题后排查复杂度也成倍增加。路由汇总的意义就在这里。它不是把路由“删掉”而是把多条小路由合并成一条大的超网路由告诉设备“凡是目标地址属于这个地址块的都走这个方向。”设备只看这一条就能覆盖成百上千个实际网段。4.2 用二进制找共同前缀的实操方法做路由汇总之前第一步就是把要合并的网段地址变成二进制找它们的共同前缀。共同前缀有多少位汇总后的掩码就是多少位。看一个最常见的例子192.168.0.0/24和192.168.1.0/24合并。把第三字节写成二进制0是000000001是00000001。它们的前7位完全相同只有最后1位不一样所以共同前缀是24减1等于23位汇总结果是192.168.0.0/23。这个/23覆盖了192.168.0.0到192.168.1.255正好两个C段。再看3个/2410.10.0.0/24、10.10.1.0/24、10.10.2.0/24。第三字节分别是0、1、2写成二进制00000000、00000001、00000010。0和1能凑到前7位一致但2的前7位和前两个对不上没法合并成/23。把三个段放一起看共同前缀到第22位所以最小汇总结果是10.10.0.0/22覆盖0到3比实际需要的范围多覆盖了10.10.3.0/24。这里有一个很重要的认知汇总不是“尽量大”而是“刚好覆盖”。多覆盖一段就多一分误路由的风险后面我会专门讲黑洞问题。4.3 连续不等于可汇总边界对齐规则初学者最容易犯的错是把“地址连续”和“可以合并”划等号。实际上汇总要求网段不仅连续而且要能对齐到某个二的整数次幂边界上。举一个非常经典的例子192.168.1.0/24和192.168.2.0/24。这两个网段在数字上确实连续1后面就是2但它们不能合并成192.168.1.0/23。为什么因为/23的块大小是512边界必须落在第三字节为0、2、4这种偶数位置。192.168.1.0/23这个地址根本没有意义它既不从偶数边界开始也不满足/23的对齐要求。要同时覆盖1和2两个段最小也得汇总成192.168.0.0/22范围是0到3多占了两段。这也是为什么在实际规划中我强烈建议一开始就按规则边界设计地址让后面的汇总水到渠成。比如统一每个部门从/23、/22这种明显边界开始分配将来合并时直接用一条/20、/21概括心里舒坦。4.4 汇总之后的黑洞风险与Null0保护汇总是把双刃剑。一条汇总路由覆盖的范围里可能包含目前还不存在的网段。如果数据包的目标地址正好落在这些“暂时不存在”的区域里设备就会按照汇总路由把它扔向错误的下一跳形成路由黑洞。举个例子你在核心交换机上配置了一条10.10.0.0/21的汇总路由指向分公司出口但10.10.5.0/24这个网段其实不在分公司只是因为汇总范围把它包含了。结果有人访问10.10.5.10这台设备数据包就被错误地丢到了分公司出口永远到不了目标而且你还很难排查因为路由表里看起来什么都有。处理办法有两种思路。第一种是严格限制汇总范围不用“省事逻辑”盲目扩大第二种是为已知但暂时不可达的网段添加一条指向黑洞接口的精确路由。很多生产网络在边界设备上写一条“汇总路由加Null0”的组合就能在汇总的同时防止异常流量进入错误链路。Null0相当于一个丢弃桶专门负责把不该走汇总路由的流量吞掉既保证了核心路由表的精简又不会出现长尾巴误路由。我在实际配置里一般这样处理核心设备上汇总路由指向骨干同时把边界上明确不存在的小段写成指向Null0的明细路由。这样路由表依然干净流量又不至于迷失方向。5. 我踩过的掩码坑完整排查链路复盘5.1 广播地址当主机地址用引发的“部分能通”有一次帮一个分支公司排查故障现象很诡异大多数电脑能上外网但有几台机器访问公司ERP系统时断时续ping服务器偶尔通偶尔丢包。我登录服务器查IP配置发现网卡地址是192.168.1.95掩码255.255.255.224。问题一瞬间就清楚了——/27的块大小是32192.168.1.64到192.168.1.95这段广播地址就是.95。服务器把自己配置在了广播地址上它发出的广播和客户端的正常请求相互干扰所以网络一会儿通一会儿不通。处理办法是把服务器地址改到192.168.1.65到192.168.1.94之间的某个可用地址最稳妥的是改成192.168.1.65改完后再测试故障立即消失。这类问题的排查链路不算复杂但需要你对块大小和广播边界足够敏感否则很容易在应用层、交换机配置里瞎转半天。5.2 VLSM分配顺序错乱导致的地址碎片化另一回我在规划一个连锁门店网络时犯了顺序错误。当时先给门店收银机分了一个/28地址段是10.10.8.16到10.10.8.31然后才发现还要给仓库50多台设备分配一个/26。但/26的块大小是64起始地址必须落在64的倍数上比如10.10.8.0、10.10.8.64、10.10.8.128。之前那个/28恰好横在10.10.8.16到.31之间导致我无法在仓库网段使用10.10.8.0/26只能跳到10.10.8.64/26去分配中间一段地址全部浪费。这就是没有遵守“先大块后小块”的教训。后来我重新梳理了分配顺序先把/26的大块定位再把/28的小块填进大块之间的空隙。同一个需求地址利用率高了以后扩展时也不用推倒重来。5.3 网关地址到底放哪别在子网中间随手写很多人习惯把网关设在子网第一个可用地址比如/24网络就用192.168.1.1这是好习惯。但到了VLSM环境里有些同事会把网关挂在子网中间某个随机地址上比如某个/26子网把网关设成.100。这样做网络也能通但排查和记忆成本上来了每个网段网关都不一样没有规律可循你得看配置文档才能想起来某段网关是哪个地址。我个人的约定是统一把网关放在每个子网第一个可用地址也就是“子网地址加1”。比如/27子网如果是192.168.1.64/27网关就固定写192.168.1.65/28子网如果是192.168.1.96/28网关就写192.168.1.97。这样无论是看配置还是写文档一眼就能推算出网关不需要查表格。真正的排障靠的是逻辑一致而不是临时记下一堆随机值。5.4 用工具和命令确认划分结果别全靠脑算手算容易出错尤其是地址一多、遮罩一变的时候。我的经验是分两步验证先用工具快速导出划分结果再用命令在真实设备上确认。Linux下可以用ipcalc一条命令直接给出一段网络地址的网络号、广播地址和可用范围非常直观。比如ipcalc 192.168.1.64/27它会把网络地址、广播地址、可用主机范围全部列出来。Windows环境下也可以用在线子网计算器或者直接装一个第三方工具。命令层面登录交换机或路由器后用show ip route、show ip interface brief这类命令查看实际生效的地址确认掩码和设备配置一致。我踩过一个自认为算得很准的坑当时算出来一个子网可用地址是.65到.126结果忘了广播地址把.127配给了打印机同样出现了间歇性中断。工具的输出是实打实的不和你的自信讲道理。6. 一个多部门办公网的完整规划从需求表到路由汇总落地方案6.1 需求盘点与地址段预算用案例把所有内容串起来。假设我们要规划一栋三层办公楼共四个主要网段办公区、无线访客区、监控与物联网设备区、服务器区外加办公区到核心设备的互联链路。需求初步盘点如下区域预计设备数量备注办公区有线终端300台左右未来扩展到350台无线访客区120台左右独立隔离监控摄像头/门禁70台左右分布在整栋楼服务器区30台左右预留虚拟化扩展核心到楼栋互联2个地址点对点链路整体地址段我建议从10.10.0.0/22开始规划总共1022个可用地址不仅能覆盖当前需求将来加一层楼也不慌。10.10.0.0/22的地址范围是10.10.0.0到10.10.3.255所有子网都从这块地址里切。6.2 VLSM分配明细表按照“先大块后小块”的顺序分配用途地址段掩码可用主机数网关地址办公区有线10.10.0.0/23255.255.254.051010.10.0.1无线访客区10.10.2.0/24255.255.255.025410.10.2.1监控与物联网10.10.3.0/25255.255.255.12812610.10.3.1服务器区10.10.3.128/26255.255.255.1926210.10.3.129核心到楼栋互联10.10.3.192/30255.255.255.252210.10.3.193这样分配的好处是办公区占/23刚好覆盖10.10.0.0到10.10.1.255后续几组从10.10.2.0开始连续排下去整个10.10.0.0/22的空间使用得严丝合缝没有任何跳空碎片。将来如果真要扩容把10.10.2.0/24剩余部分或10.10.3.0/25的剩余部分拿过来调整即可不需要动主干地址体系。6.3 路由汇总配置示意在核心交换机上我们要让所有前往这栋楼的流量都走同一方向。由于规划的地址段整体落在10.10.0.0/22内所以在核心设备上只需要一条汇总路由。下面以常见的命令行风格示意逻辑在各类设备上通用。# 核心设备上配置到办公楼汇总路由 ip route 10.10.0.0 255.255.252.0 10.20.0.254其中10.20.0.254是办公楼出口设备在核心侧的接口地址。以后就算办公楼内部增加一个/26网段只要地址规划仍然落在10.10.0.0/22范围内核心设备这边不需要做任何修改一条汇总路由全搞定。这就是规划阶段的“对齐优势”兑现的时刻。如果你用的是OSPF、BGP这类动态路由协议也能实现自动汇总或手工区域汇总但原理都一样——先有连续可对齐的地址规划才有漂亮的路由聚合。地址规划乱七八糟用什么协议都救不回来。6.4 验证清单配置后必须检查的四件事每次配置完子网划分和汇总路由我都会按下面清单过一遍缺一项都觉得不踏实第一逐台测试各网段网关的连通性从办公区ping服务器网关从无线访客区ping办公区网关确认VLAN间路由生效。第二查看核心设备路由表确认汇总路由生效且明细路由数量没有异常膨胀。用show ip route或者在华为设备上display ip routing-table查看和规划表对照一遍。第三让一台终端从办公楼内部访问服务器区和外网重点观察是否存在“能通但丢包”的边界情况这在子网划分后最容易暴露出来。第四检查广播域隔离效果比如在办公区发起一个广播ping看监控网段是否有响应。没有响应才是正常结果说明子网隔离真正起了作用。6.5 我个人做规划的两个习惯第一个习惯是“把地址规划当资产来管理”一个网段只用一张Excel表记录表里包含用途、地址段、掩码、网关、维护人、启用日期。地址改变时同步更新表格绝不搞“头脑里的地址库”。没有文档的网络半年后就是灾难再资深的工程师也扛不住自己创造的混乱。第二个习惯是“合并和拆分之前先画二进制”不拿着十进制地址直接拍脑袋。十进制让你感觉很快但二进制才是真正的裁判。一个段能不能合并、另一个段从哪个边界开始二进制一目了然。我见过太多规划方案十进制看起来整整齐齐转到二进制以后才发现完全对不齐只能返工。提前花两分钟画二进制能省下后面几小时的排障时间。子网划分和路由汇总这两件事说到底就是网络工程师手上的标准尺。把尺子用熟练了规划内网时心里不慌排查故障时思路也清晰。希望这份内容能帮你少走一些我走过的弯路。
阅读完成 · 觉得有帮助?
咨询建站