
1. 从一个让人头大的场景说起为什么IP和子网划分绕不过去刚入行那会儿我接手过一个特别典型的小项目给一个办公区做网络规划。当时觉得这事儿能有多难不就是给每台机器配个IP、插上网线能通就行了吗结果第一天就被现实狠狠教育了一顿——两个部门的人互相访问不了对方的共享盘打印机在A网段、电脑在B网段跨过去死活连不上。折腾了大半天最后发现问题出在子网掩码配错了把本来该分开的两个网段硬是划成了一个广播域大得离谱ARP请求满天飞。这件事让我彻底明白一个道理IP地址和子网划分不是网络工程师的专属技能而是任何碰网络的人迟早都要迈过去的一道坎。不管你是做运维、搞开发、搭家庭实验室还是单纯想把自己家里的设备管明白只要涉及到“谁能跟谁通、谁跟谁不通”这个问题就绕不开IP和子网。这篇文章我想聊的就是把IP地址和子网划分这件事从头到尾讲透。不是那种教科书式的定义堆砌而是从一个实际动手的人的角度把IP地址的结构、子网掩码的作用、网段划分的计算方法、以及实际配置中容易踩的坑一层一层拆开来讲。适合刚接触网络的新手也适合那些“用了很多年但一直是照着模板填”的老手——很多时候我们缺的不是操作能力而是对背后逻辑的清晰理解。核心关键词就三个IP地址、子网掩码、网段划分。这三个东西是绑在一起的理解了它们之间的关系后面不管是配路由器、划VLAN还是做防火墙策略都会顺畅很多。2. IP地址到底是什么别被那串数字吓住2.1 点分十进制只是给人看的我们平时看到的IP地址长这样192.168.1.100。四个数字用点隔开每个数字范围是0到255。这个写法叫点分十进制纯粹是为了方便人读写。计算机内部看到的其实是一串32位的二进制数比如上面那个地址展开就是192 . 168 . 1 . 100 11000000.10101000.00000001.01100100四个数字每个占8位加起来正好32位。这就是IPv4地址的本质——一个32位的二进制数总共能表示约43亿个不同的地址。43亿听起来很多但全球设备数量早就超过这个数了这也是为什么后来要搞IPv6。不过IPv6是另一个话题今天先把IPv4这套逻辑吃透。为什么每个数字最大是255因为8位二进制最大就是11111111换算成十进制就是255。这个换算关系是理解后面所有计算的基础记住它8位二进制 1个字节 0到255。2.2 网络部分和主机部分IP地址的两段式结构一个IP地址其实被分成了两部分网络部分和主机部分。网络部分标识“你在哪个网络里”主机部分标识“你是这个网络里的哪台设备”。打个比方IP地址就像门牌号。“朝阳区某街道某小区”是网络部分“3号楼502室”是主机部分。同一个小区里的住户网络部分相同主机部分不同不同小区的住户网络部分就不同了。那问题来了怎么知道前多少位是网络部分后多少位是主机部分这就轮到子网掩码登场了。2.3 子网掩码划分网络和主机的尺子子网掩码也是一个32位的二进制数长得跟IP地址一模一样。它的规则很简单网络部分对应的位全是1主机部分对应的位全是0。最常见的子网掩码是255.255.255.0展开成二进制255 . 255 . 255 . 0 11111111.11111111.11111111.00000000前24位是1后8位是0。这就意味着前24位是网络部分后8位是主机部分。所以192.168.1.100配上255.255.255.0网络部分就是192.168.1主机部分是100。这里有个关键点子网掩码必须和IP地址成对出现才有意义。单独说一个IP地址是哪个网段是没法回答的必须知道掩码。192.168.1.100配255.255.255.0属于192.168.1.0网段但如果配255.255.0.0它就属于192.168.0.0网段了。同一个IP掩码不同归属的网段完全不同。2.4 CIDR表示法更简洁的写法每次写255.255.255.0太啰嗦所以有了CIDR表示法无类别域间路由。写法是在IP地址后面加一个斜杠和数字数字表示网络部分的位数。比如192.168.1.100/24等价于192.168.1.100配255.255.255.010.0.0.5/8等价于10.0.0.5配255.255.0.0172.16.5.10/16等价于172.16.5.10配255.255.0.0这个斜杠后面的数字就是子网掩码里1的个数。/24就是24个1/16就是16个1。实际工作中CIDR写法比点分十进制掩码用得更频繁尤其是在配置路由和防火墙规则的时候。下面这张表把常见的CIDR值和对应的掩码、可用主机数整理了一下建议收藏CIDR子网掩码网络位数主机位数可用主机数/8255.0.0.082416,777,214/16255.255.0.0161665,534/24255.255.255.0248254/25255.255.255.128257126/26255.255.255.19226662/27255.255.255.22427530/28255.255.255.24028414/29255.255.255.2482936/30255.255.255.2523022注意“可用主机数”那一列为什么/24是254而不是256因为每个网段里有两个地址是保留的网络地址主机位全0和广播地址主机位全1。这两个地址不能分配给设备。所以可用主机数 2的主机位数次方 - 2。3. 子网划分的核心逻辑借位与计算3.1 为什么要划分子网不划分子网行不行理论上行但实际会出大问题。假设一个公司有500台设备全放在一个192.168.0.0/16的大网段里。这意味着什么意味着任何一台设备发一个广播包比如ARP请求“谁是192.168.5.20”这500台设备全都要收到并处理。广播域太大网络性能会被拖垮而且安全性也差——谁都能嗅探到谁的流量。划分子网的目的就是把一个大网络切成若干个小网络每个小网络是一个独立的广播域。广播包只在自己子网内传播不会跨子网。跨子网通信必须经过路由器或三层交换机这样就实现了隔离和管控。3.2 借位子网划分的本质操作划分子网的本质是从主机部分借位给网络部分。原来/24的掩码主机部分有8位。如果我从这8位里借2位给网络部分掩码就变成了/26主机部分只剩6位。借位带来的变化网络位数从24变成26多出来的2位可以组合出4种情况00、01、10、11也就是划分出4个子网主机位数从8变成6每个子网可用主机数从254变成62借的位越多子网数量越多但每个子网能容纳的主机越少。这是一个此消彼长的关系划分子网时要在“需要多少个子网”和“每个子网需要多少台设备”之间找平衡。3.3 子网划分的完整计算过程拿一个具体例子走一遍。假设有一个192.168.10.0/24的网段现在要划分成4个子网每个子网至少能容纳50台设备。第一步确定借几位要4个子网2的2次方等于4所以借2位。掩码从/24变成/26。第二步计算每个子网的主机数主机位数 32 - 26 6位。可用主机数 2^6 - 2 62台。62大于50满足需求。第三步列出所有子网借的2位在原来主机部分的最高两位组合如下子网借位组合网络地址可用地址范围广播地址子网100192.168.10.0/26192.168.10.1 - 192.168.10.62192.168.10.63子网201192.168.10.64/26192.168.10.65 - 192.168.10.126192.168.10.127子网310192.168.10.128/26192.168.10.129 - 192.168.10.190192.168.10.191子网411192.168.10.192/26192.168.10.193 - 192.168.10.254192.168.10.255每个子网的块大小是642的6次方所以网络地址依次是0、64、128、192。这个规律很好记块大小 256 - 掩码最后一段的值。/26的掩码最后一段是192256 - 192 64块大小就是64。3.4 快速心算技巧不用每次都展开二进制实际工作中不可能每次都拿纸笔展开二进制算。我总结了一个快速心算的方法方法一看掩码最后一段掩码最后一段的值决定了块大小。常见对应关系掩码255.255.255.0/24块大小256掩码255.255.255.128/25块大小128掩码255.255.255.192/26块大小64掩码255.255.255.224/27块大小32掩码255.255.255.240/28块大小16掩码255.255.255.248/29块大小8掩码255.255.255.252/30块大小4块大小 256 - 掩码最后一段的值。知道块大小后网络地址就是块大小的整数倍。方法二从需求反推掩码如果知道需要多少台主机可以反推掩码。比如需要100台主机2的7次方是128减去2等于126够用。所以主机位需要7位掩码就是32 - 7 25位即/25。如果需要30台主机2的5次方是32减2等于30刚好够。主机位5位掩码/27。注意算主机数时一定要记得减2网络地址和广播地址不能分配给设备。我见过有人算出来“需要64台那就用/26”结果实际只能放62台差两台设备没地方放最后只能重新规划。4. 实操配置从理论到能通4.1 给一台设备配IP以Linux为例在Linux上临时给网卡配IP用ip命令# 给eth0配IP 192.168.10.5掩码/26 ip addr add 192.168.10.5/26 dev eth0 # 启用网卡 ip link set eth0 up # 查看配置结果 ip addr show eth0配完之后系统会自动计算出这个IP所属的网络地址是192.168.10.0广播地址是192.168.10.63。你可以用ip route查看系统自动生成的路由ip route show # 输出中会有一行 # 192.168.10.0/26 dev eth0 proto kernel scope link src 192.168.10.5这行路由的意思是要去192.168.10.0/26这个网段直接从eth0出去源地址用192.168.10.5。这就是直连路由系统根据IP和掩码自动算出来的不需要手动配。如果要永久生效在大多数现代Linux发行版上可以用nmcli或者直接编辑网络配置文件。以NetworkManager为例nmcli con mod eth0 ipv4.addresses 192.168.10.5/26 nmcli con mod eth0 ipv4.method manual nmcli con up eth04.2 跨子网通信路由表怎么配假设有两台设备设备A192.168.10.5/26属于192.168.10.0/26网段设备B192.168.10.70/26属于192.168.10.64/26网段这两个设备虽然IP看起来很像但掩码是/26所以它们其实在不同的子网里。设备A直接ping设备B是ping不通的因为设备A发现目标IP不在自己的直连网段内会把包发给网关如果配了的话没配网关就直接丢弃。要让它们通中间需要一个路由器路由器上配两个接口分别接两个子网# 路由器接口1 ip addr add 192.168.10.1/26 dev eth0 # 路由器接口2 ip addr add 192.168.10.65/26 dev eth1然后设备A的网关指向192.168.10.1设备B的网关指向192.168.10.65。这样设备A发给设备B的包会先到路由器路由器查路由表发现192.168.10.64/26是直连的从eth1转发出去设备B就收到了。# 在设备A上配默认网关 ip route add default via 192.168.10.1 # 在设备B上配默认网关 ip route add default via 192.168.10.654.3 用ping和traceroute验证连通性配完之后一定要验证。最常用的两个工具# 测试连通性 ping -c 4 192.168.10.70 # 查看路径确认经过哪些跳 traceroute 192.168.10.70如果ping不通按这个顺序排查本机IP和掩码配对了没有ip addr show网关配了没有ip route show网关本身能不能ping通对端设备的防火墙有没有放行ICMP中间路由器的转发功能开了没有sysctl net.ipv4.ip_forward实操心得Linux默认是不转发IP包的net.ipv4.ip_forward默认是0。如果你拿一台Linux当路由器用一定要记得开转发否则包到了路由器就被丢掉了。这个坑我踩过不止一次排查半天才发现是转发没开。4.4 一张表看清常见配置错误现象可能原因排查方法同网段设备ping不通掩码配错实际不在同一网段对比两台设备的IP和掩码算出网络地址跨网段ping不通没配网关或网关配错ip route show检查默认路由能ping通IP但ping不通域名DNS没配检查/etc/resolv.conf时通时不通IP地址冲突用arping检测是否有重复IP网关能ping通但外网不通网关本身没有到外网的路由在网关上检查路由表和NAT配置5. 进阶话题VLSM和实际规划思路5.1 变长子网掩码不同子网用不同大小前面举的例子都是把所有子网划成一样大。但实际场景中不同部门需要的设备数量往往不一样。比如技术部有100台设备财务部只有10台。如果都划成/25每个126台财务部就浪费了大量地址。VLSM变长子网掩码就是解决这个问题的根据不同子网的实际需求分配不同大小的子网。规划思路是从大到小分配先满足最大的子网需求在剩余空间里满足次大的需求依次类推举个例子有一个192.168.20.0/24的网段需求如下技术部100台市场部50台财务部20台管理层5台第一步技术部需要100台2的7次方是128减2等于126够用。分配192.168.20.0/25可用范围192.168.20.1 - 192.168.20.126。第二步市场部需要50台2的6次方是64减2等于62够用。在剩下的192.168.20.128 - 192.168.20.255里分配192.168.20.128/26可用范围192.168.20.129 - 192.168.20.190。第三步财务部需要20台2的5次方是32减2等于30够用。在剩下的192.168.20.192 - 192.168.20.255里分配192.168.20.192/27可用范围192.168.20.193 - 192.168.20.222。第四步管理层需要5台2的3次方是8减2等于6够用。在剩下的192.168.20.224 - 192.168.20.255里分配192.168.20.224/29可用范围192.168.20.225 - 192.168.20.230。这样分配下来地址利用率比平均划分高得多。5.2 私有地址范围内网规划的首选做内网规划时一般不会用公网地址而是用私有地址。私有地址是专门保留给内部网络使用的不会在公网上路由。三个私有地址段地址段CIDR可用地址数常见用途10.0.0.0 - 10.255.255.25510.0.0.0/8约1677万大型企业内网172.16.0.0 - 172.31.255.255172.16.0.0/12约104万中型网络192.168.0.0 - 192.168.255.255192.168.0.0/16约6.5万家庭和小型办公家庭网络几乎清一色用192.168.1.0/24或192.168.0.0/24。企业内网如果设备多通常用10.0.0.0/8空间大随便划。注意私有地址不能直接上公网必须经过NAT转换。如果你在家里用192.168.1.0/24公司内网也用192.168.1.0/24当你通过某种方式连回公司时就会出现地址冲突——你的电脑分不清192.168.1.50是本地的还是公司的。所以规划内网时尽量避开家里常用的网段比如用10.10.0.0/16这种。5.3 子网划分的规划原则做了这么多年的网络规划我总结了几条实用原则预留扩展空间。每个子网不要卡着需求划留20%到30%的余量。今天50台设备明天可能就80台了。如果一开始划得刚刚好扩展时就要重新规划很麻烦。按功能或部门划分。不要把不同部门的设备混在一个子网里按部门或功能划分便于做访问控制。比如服务器区、办公区、访客区各一个子网访客区限制访问服务器区一条防火墙规则就搞定。管理地址单独划。网络设备交换机、路由器、防火墙的管理地址单独划一个小子网比如10.0.99.0/24方便统一管理和限制访问。文档记录。每划一个子网记下来网段、掩码、网关、用途、已用地址数。时间一长没有文档根本记不住。我见过太多“这个网段是干嘛的没人知道”的情况。6. 常见问题与排查实录6.1 为什么两台电脑IP很像却ping不通这是最经典的问题。两台电脑一台192.168.1.10一台192.168.1.200掩码都是255.255.255.0能通。但如果掩码改成255.255.255.128/25192.168.1.10属于192.168.1.0/25192.168.1.200属于192.168.1.128/25它们就不在同一网段了ping不通。排查方法把两台设备的IP和掩码拿出来分别算出网络地址。网络地址相同才能直接通信不同就需要网关。6.2 网关到底该配哪个地址网关必须是本网段内的一个可用地址。比如192.168.10.0/26网段可用地址是192.168.10.1到192.168.10.62网关只能从这个范围里选。通常选第一个可用地址192.168.10.1也可以选其他的但一定要在网段内。我见过有人把网关配成192.168.10.65但设备在192.168.10.0/26网段里结果设备发现网关不在自己网段内根本不往网关发包直接丢弃。6.3 子网划分后广播地址变了划分子网后每个子网有自己的广播地址。192.168.10.0/24的广播地址是192.168.10.255但划成/26后第一个子网的广播地址变成了192.168.10.63。如果有程序或配置里硬编码了广播地址划分子网后就会失效。6.4 常见问题速查表问题原因解决方法同网段ping不通掩码不一致统一掩码或确认是否真的同网段跨网段ping不通网关未配或配错检查默认路由确认网关在本网段内IP冲突手动配了重复IP用DHCP或做好IP地址管理子网划分后部分设备掉线掩码改了但网关没改同步更新所有设备的网关配置能通内网不通外网NAT未配或网关无外网路由检查网关的NAT规则和路由表地址不够用子网划得太小重新规划或改用VLSM避坑技巧改掩码比改IP更容易出问题。因为改IP后设备会重新计算网段但改掩码如果忘了改网关设备会认为网关不在本网段直接不通。所以改掩码时一定要同步检查网关。7. 我个人的一些实操体会子网划分这件事理论看一遍就懂但真正熟练需要动手算、动手配。我刚开始学的时候也是拿纸笔一遍遍展开二进制算多了就有感觉了现在看到IP和掩码基本能秒算出网段范围。实际工作中我建议养成两个习惯。一是画拓扑图把网段、网关、设备数量标清楚一目了然。二是做地址规划表每个子网的用途、已用地址、剩余地址都记下来扩展时不用重新算。还有一点现在很多工具可以帮你算子网比如ipcalc这个命令行工具ipcalc 192.168.10.5/26输出会直接告诉你网络地址、广播地址、可用范围非常方便。但工具归工具底层逻辑还是要懂不然出了问题连排查方向都没有。最后说一个我踩过的坑有一次给一个网段划了/28算下来14个可用地址觉得够用了。结果忘了网络设备本身也要占地址——交换机管理地址、路由器接口地址、防火墙接口地址加起来又占了好几个最后只剩不到10个给终端设备差点不够。所以规划时一定要把网络设备自身的地址也算进去别只算终端。