ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

子网掩码从入门到实战:网段划分、计算与故障排查

子网掩码从入门到实战:网段划分、计算与故障排查 干这行年头久了越发现“子网掩码”这个词被很多同行低估了。搜热搜看到“子网掩码非常简单”这句话的时候我差点笑出声——对老鸟来说确实简单可对刚入门的桌面运维、网络小白来说它往往是第一道坎。我当年也是被“255.255.255.0”这几个数字折磨过的人照抄配置能通但一遇到“掩码填错导致全网变慢”“两台电脑明明连着同一台交换机却互相不通”这种故障就彻底抓瞎。后来把子网掩码的底层逻辑想明白了再回头看它真的就是一层窗户纸。这篇文章不绕弯子直接把这层窗户纸捅破。子网掩码是什么、为什么必须有它、怎么算网络地址和广播地址、怎么取反、桌面运维中掩码填错会闹出什么幺蛾子全部用大白话和真实案例讲清楚。适合刚接触网络的实习生、需要自己配IP的桌面运维以及所有想彻底搞懂网段划分的后端和测试同学。1. 先从根上说清楚子网掩码到底在解决什么问题1.1 IP地址为什么需要“分工”很多人会把IP地址当成一个单纯的门牌号但这不够准确。一个标准的IPv4地址是32位二进制数平时看到的192.168.1.10只是它的十进制“马甲”。要命的是这32位不能全拿来编门牌号因为互联网上的网络实在太多了如果把所有设备都划在一个大网里寻址和广播都会乱套。所以IP地址内部是有分工的一部分位用来表示“你在哪个网络”另一部分位用来表示“你是这个网络里的哪台设备”。前者叫网络位后者叫主机位。可以类比快递地址“北京市海淀区中关村大街”是网络位“3号院2号楼302室”是主机位。没有这个分工快递员根本不知道包裹该往哪个片区送。问题来了IP地址是一串数字光看它本身你怎么知道哪几位是网络位、哪几位是主机位192.168.1.10这个地址网络位是192.168还是192.168.1不同网络规模下答案完全不一样。这时候就需要一个额外的“尺子”来量——这把尺子就是子网掩码。1.2 子网掩码的定义与核心作用子网掩码Netmask也是32位二进制数它的规则简单到令人发指写成二进制后左边必须是连续的1右边必须是连续的0。连续的1对应的IP位就是网络位连续的0对应的IP位就是主机位。拿最常见的255.255.255.0举例它转成二进制长这样11111111.11111111.11111111.00000000前24位全是1后8位全是0。那么当它和IP地址配合使用时就表示这个IP的前24位是网络号后8位是主机号。为什么必须是“连续的1”和“连续的0”因为只有这样网络位才能形成一个连续的前缀路由器才能快速按前缀查表不可能出现“网络位和主机位交错”的混乱状态。子网掩码的核心作用就是让每一台设备都能快速判断出两件事第一自己属于哪个网络第二目标主机和自己是否在同一个网络。这个判断是网络通信所有决策的基础。1.3 路由器那一秒在想什么当你往另一台设备发包时你的电脑要做一个简单的数学题。它先用自己的IP和子网掩码做“按位与”运算算出自己的网络号。然后拿目标IP和自己这台机器的子网掩码再做一次“按位与”运算算出目标网络号。两个网络号一样说明目标就在同一个网络里电脑直接通过ARP广播找对方MAC地址二层通信搞定两个网络号不一样说明目标在别的网络电脑就把包丢给默认网关让路由器去转发。这个判断每发一个包就要做一次在数据量大的时候是巨大的计算量。但好在这计算不复杂——子网掩码的价值也正在于此用一个简单的规则让所有设备对“网段边界”达成一致通信才不会乱套。所以很多老运维常说一句话子网掩码不是用来“限制”你的它是用来让所有设备“对齐认知”的。2. 三张表掌握子网掩码的常用表示法2.1 二进制看本质十进制只是马甲子网掩码之所以看起来难是因为平时都写成十进制点分格式一堆255看得人眼晕。但只要你咬咬牙看一次二进制立刻就会通透。255.255.255.0不是“四个数字”它是“24个1后面跟8个0”。255.255.255.192呢是“26个1后面跟6个0”。192这个数在二进制里是11000000刚好两个1六个0。所以在心里每个合法的子网掩码段都只可能是这九个数之一0、128、192、224、240、248、252、254、255。它们对应的二进制分别是0个、1个、2个……8个连续的1。记住这个规律后面很多计算和排查速度会快得飞起。实际配置中Windows、Linux、路由器上都接受点分十进制写法但如果你看到/24、/26这种写法那是CIDR前缀长度表示法后面的数字直接表示“网络位占了几个1”。它和点分十进制一一对应只是更简洁。很多工程师交流时直接说“24位掩码”“26位掩码”指的就是这个。2.2 默认子网掩码速查初学网络时老师会讲A类、B类、C类地址对应有一套“默认子网掩码”。这套东西现在虽然不严格按类来用了但作为基础桌面运维必须烂熟于心。地址类别首段范围默认子网掩码CIDR写法A类1-126255.0.0.0/8B类128-191255.255.0.0/16C类192-223255.255.255.0/24私有网段也顺便回顾一下10.0.0.0/8、172.16.0.0/12掩码255.240.0.0、192.168.0.0/16掩码255.255.0.0。大多数公司局域网用的是192.168.x.x搭配255.255.255.0也就是一个标准的C类子网——这也是很多人最熟悉、最不会出错的组合。但如果你的网络规模较大超过254台设备那就要考虑更大的网段规划至少要懂这个概念。2.3 子网掩码取反到底怎么取“子网掩码取反怎么取”能上热搜说明这确实是新手集中翻车点。其实取反这件事二进制层面一句话就能说清楚每一位0变1、1变0。问题在于十进制点分格式下很多人不知道如何快速心算。二进制层面取反把255.255.255.0写成二进制是24个1加8个0逐位取反后变成8个1加24个0十进制表示就是0.0.0.255。这是最根本的算法。但更快的实战心算法是因为合法掩码每一段只有九种取值取反的结果就是“255减去这一段的值”。255.255.255.248 取反 第一段255 - 255 0 第二段255 - 255 0 第三段255 - 255 0 第四段255 - 248 7 结果0.0.0.7255.255.255.0取反是0.0.0.255255.255.0.0取反是0.0.255.0255.255.255.192取反是0.0.0.63。很多朋友刚学的时候会把取反和“取网络号”搞混。取网络号是拿IP和掩码做“按位与”取反是得到掩码本身的“反码”用途完全不同。取反在实际工作中至少有两大用途。第一快速计算广播地址——网络地址和取反后的掩码做按位或运算结果就是广播地址。第二用来理解通配符掩码——很多网络设备配置ACL时用的wildcard mask其实就是子网掩码取反比如要匹配192.168.1.0/24这个网段通配符掩码就写0.0.0.255。搞懂取反这一步就再也难不住你。3. 实战算网络地址、广播地址和可用主机数3.1 网络地址计算一套按位与就搞定网络地址是一台设备所在网段的“起始地址”它的主机位全是0。计算网络地址的方法非常机械把IP地址和子网掩码都转成二进制然后逐位做“与”运算。与运算的规则只有一条两个都是1结果才是1否则结果就是0。我手头随便拿一个地址举例IP是192.168.1.130掩码是255.255.255.192。直接把十进制就位运算不方便看关键的最后一段。130的二进制是10000010掩码最后一段192的二进制是11000000。两者相与10000010 (130) 11000000 (192) -------- 10000000 (128)前三位原192、168、1和掩码前三段255相与不变所以网络地址是192.168.1.128。这个结果说明IP地址192.168.1.130所在网段是从192.168.1.128开始的。网段里所有主机的主机位都落在最后的6位因为掩码的1有26位主机位是6位。3.2 广播地址计算主机位全置1广播地址是一个网段里的“最后收件人”发到广播地址的数据包同一网段内所有主机都能收到。计算广播地址的方法把网络地址的主机位全部改成1。还是上面这个例子网络地址192.168.1.128掩码255.255.255.192主机位是6位。192.168.1.128的最后一字节10000000把后6位全置1变成10111111也就是191。所以广播地址是192.168.1.191。想用取反的思路也可以网络地址192.168.1.128和“掩码取反后的0.0.0.63”做按位或128的二进制1000000063的二进制00111111按位或结果是10111111即191结果一致。两条路都能走通但实际工作中我更喜欢“主机位全置1”这个方法因为对二进制足够熟练后心算速度极快。3.3 可用主机数记住减2的概念一个网段里能分配给主机使用的IP数量是有上限的。可用主机数的公式是2的“主机位位数”次方减2。为什么要减2因为主机位全0是网络地址本身主机位全1是广播地址这两个都不能分配给任何一台主机。以/26这个网段为例主机位是6位2的6次方等于64减2就是62。也就是说255.255.255.192掩码下每个子网最多放62台设备。可用IP范围是从网络地址加1到广播地址减1即192.168.1.129到192.168.1.190。这套计算在规划办公室网络、配置DHCP地址池、估算VLAN容量时天天用。我见过不少刚入行的同事在给客户做方案时把网络地址和广播地址也算进了可用IP里结果地址不够用分配的时候IP冲突、网关被占用等问题全冒出来了。所以减2这个习惯要刻进肌肉记忆里。3.4 子网划分实操把一个网段切成多个小段子网划分的本质就是向主机位“借位”变成网络位。借1位能分出2个子网借2位能分出4个子网借n位能分出2的n次方个子网。子网越多每个子网里的可用主机数越少这是一笔需要算计的账。举个例子公司只有一个192.168.1.0/24的网段现在有4个部门要隔离每个部门不超过50台设备。那就从主机位借2位掩码从/24变成/26也就是255.255.255.192。4个子网划分结果如下子网网络地址子网掩码可用IP范围广播地址第1个192.168.1.0255.255.255.192192.168.1.1 - 192.168.1.62192.168.1.63第2个192.168.1.64255.255.255.192192.168.1.65 - 192.168.1.126192.168.1.127第3个192.168.1.128255.255.255.192192.168.1.129 - 192.168.1.190192.168.1.191第4个192.168.1.192255.255.255.192192.168.1.193 - 192.168.1.254192.168.1.255每个子网间隔64因为2的6次方等于64。子网1的广播地址192.168.1.63紧接着子网2的网络地址192.168.1.64两者是紧挨着的——这个衔接关系很关键很多人在默认网关和VLAN接口IP规划时搞错边界就是把这两个地址弄混了。划分完后每个部门各自独立网段广播域隔离管理也清爽。这基本就是子网划分最标准的套路把套路练熟了VLSM、超网这些概念只是在这个基础上做加减法而已。4. 桌面运维实战掩码填错会闹出什么幺蛾子4.1 典型故障一掩码写大广播风暴悄悄吃带宽桌面运维最常遇到的经典故障就是有人手动配置IP时把255.255.255.0填成了255.255.0.0。表面上看只是掩码多个0但对网络的影响是灾难级的。通信时每台设备仍然拿自己的掩码和对方IP计算网络号。如果一台机器的掩码是255.255.0.0它会把192.168.1.10和192.168.2.20判断成“同一个网段”于是不发包给网关直接发ARP广播去寻找对方。而你的交换机和网络环境可能根本不支持这么大的二层广播域大量ARP请求会在网络上疯传占满带宽。症状就是网络越来越慢丢包率飙升甚至出现“Ping网关通但访问别的部门时好时坏”的诡异现象。我排查过好几次这种故障最后发现都是有人动过网卡属性里的手动配置或者某些临时搭建的调试机填错了掩码。处理方式倒也不难找到那台机器把掩码改回255.255.255.0全网立刻恢复。关键是要有“先怀疑掩码”的意识别一上来就重装系统、换交换机。4.2 典型故障二掩码写小网关直接失联方向相反也出问题。如果你把掩码填成了255.255.255.255也就是/32那相当于告诉系统全世界只有我自己一个网段。这时候哪怕网关就在旁边系统也会认为网关不在同一网络所有外发数据都成了“无头苍蝇”。表现就是本机能开机网卡状态显示已连接但Ping任何外部地址都不通。在Windows下遇到这种问题用ipconfig看一眼就能发现掩码不对。但很多新手不看ipconfig只知道去“禁用再启用网卡”、重启路由折腾大半天。其实原因非常简单/32掩码只适合点对点链路或环回接口绝对不该出现在普通终端的以太网适配器上。顺便提一个检测技巧在填错掩码的机器上执行ping如果连自己的网关都Ping不通优先级最高的怀疑项就是掩码和IP的组合不匹配。把掩码改回正确值再试大概率立竿见影。4.3 手动配置IP时三步核对法桌面运维每天都要给人配IP、调网络养成一套固定核对流程能少踩很多坑。我自己习惯的三步走第一步确认IP地址和掩码算出的网络号要跟网关所在的网络号一致。比如网关是192.168.1.1IP是192.168.1.100掩码255.255.255.0三者都在192.168.1.0/24这个网段这才是一个合法的组合。第二步确认网关IP不是网络地址或广播地址。曾经有同事把网关配成了192.168.1.255配置界面不报警实际却完全不通因为广播地址不能当网关用。第三步确认没有和其他设备IP冲突。特别是掩码改小之后两台原本在不同“子网”里的机器可能突然认为自己同处一个网段IP冲突的排查难度会成倍增加。建议用ARP表、DHCP租约记录辅助检查。4.4 查看和修改掩码的实用命令不同系统查看掩码的命令不太一样但都不复杂。Windows下用ipconfig可以看到IPv4地址、子网掩码和默认网关三项。Linux下用ip addr或ifconfig注意新版系统更推荐ip addr因为ifconfig可能没装。macOS下用ifconfig或者到系统设置里看也能看到子网掩码。修改掩码Windows图形界面在“网络和共享中心-更改适配器设置-属性-Internet协议版本4”里手动填写Linux用nmcli或者直接改配置文件取决于发行版和网络管理方式。不管用什么命令修改完一定记得验证。验证方法就是Ping网关、Ping同网段另一台机器、Ping一个外网地址三步都通基本就没问题。我个人的习惯是任何一次改动都做好记录几台机器、改了什么、为什么改写清楚。不然几天后网络出问题你根本想不起来是自己哪次手滑埋的雷。5. 常见问题与排查技巧实录5.1 新手最容易踩的四个坑第一个坑把255.255.255.1当成掩码。有朋友觉得掩码和IP长得很像随手填了255.255.255.1。这根本不是一个合法的连续掩码因为最后一段1的二进制是00000001后面还有1破坏了“左边连续1、右边连续0”的规则会导致网络位和主机位混乱通信时计算出错。第二个坑以为掩码越大越安全。掩码越大网络号越长主机位越少广播域确实变小但可用IP也急剧减少。如果一个小网段里要放200台设备却配了/28的掩码那只有14个可用地址浪费和错误是必然的。掩码选择要按实际设备数量来算不是越大越好。第三个坑忽略网络地址和广播地址。这是最容易被忽视的问题。规划地址池、写DHCP配置时一定要把这两个地址排除掉。不然某些设备拿到网络地址或广播地址后表面上配置成功实际无法正常通信排查起来极其折磨人。第四个坑ACL写通配符掩码时不会取反。配置防火墙或交换机ACL时通配符掩码写错会让规则完全不生效或反向生效。记住通配符掩码就是子网掩码取反这就能避免一大批低级错误。5.2 常用子网掩码速查对照表把平时最常用的几种掩码整理成一张表工作中随时对照快速心里有数CIDR子网掩码可用主机数适用场景/8255.0.0.016777214超大规模网络一般不直接用于终端/16255.255.0.065534大型园区网、公司私网/24255.255.255.0254最常见适合小部门、家庭网络/25255.255.255.128126一分为二时用/26255.255.255.19262中小部门4个子网场景/27255.255.255.22430少量设备的小网段/28255.255.255.24014小型办公组/29255.255.255.2486点对点链路、小型专线/30255.255.255.2522路由器间互联链路/32255.255.255.2551本机环回单播标识表里第二列是掩码第三列是可用主机数。每往下一行数量级一目了然配IP之前先看一眼这张表基本能避免“网段里塞不下设备”或“空了一大片地址”的尴尬。5.3 我的几个实操习惯做运维这些年我养成了几个跟子网掩码有关的习惯不一定多高级但确实帮我少熬了好几次夜。一是在任何环境动手改配置前先确认当前机器的IP、掩码、网关三件套。很多故障重启一下或者换个网口就好了但如果你不记录原值手一抖改错后面想还原都难。二是算网段时尽量自己动手算一遍别完全依赖在线计算器。工具可能算错也可能因为输入格式问题给一个错误结果。自己会算、算得快才能在现场快速判断问题。尤其是“子网掩码取反怎么取”这种操作心算就几秒钟的事在现场比掏出手机查计算器靠谱得多。三是在配置交换机VLAN接口地址时尤其注意掩码合理性。不同VLAN接口之间如果掩码设置成重叠网段路由表会乱数据转发会走岔路。遇到网络不通先看看是不是有人在不同VLAN里配置了相同网段但不同掩码这种问题非常隐蔽。四是能把网段边界算清楚比会背多少命令都重要。我见过太多人把配置命令背得滚瓜烂熟但一遇到“/26的子网广播地址是多少”就卡壳。命令是技巧理解才是内功。子网掩码这东西说穿了就是“1划网络、0划主机”六个字再复杂的划分也逃不开这个基本规则。把这六个字刻在脑子里以后不管遇到VLSM、CIDR还是通配符掩码你都只需要在二进制和十进制之间来回换算心里完全有底。
返回列表