ARTICLE DETAIL

资讯详情

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

IP地址与子网划分:从掩码原理到Linux静态IP配置与排障

IP地址与子网划分:从掩码原理到Linux静态IP配置与排障 IP地址与子网划分这个题目看起来是网络基础里最“基础”的一篇但每次线上出问题排查到最后八成是地址和掩码的锅。这一篇作为系列的第二部分我会把IPv4地址结构、私网范围、子网掩码、CIDR、手算子网、VLSM再到虚拟机里Linux静态IP配置和排障完整走一遍。适合刚入行的运维、备考网络认证的人也适合自己搭homelab折腾NAS和虚拟机的玩家。我会尽量用踩过坑的视角来写不只把公式摆出来而是告诉你公式背后到底在干什么。1. IP地址到底在解决什么问题先建立一张正确的“网络地图”1.1 没有门牌号的网络是不可想象的先问一个问题计算机网络为什么需要IP地址你把两台电脑用网线直接连起来通信的本职工作其实是靠MAC地址完成的。MAC地址是网卡出厂时烧录的全球唯一的物理标识理论上每个网络接口都有一个。但MAC地址有个致命问题它是平铺的没有任何层级信息就像全世界每个人都有身份证号但你没法根据身份证号判断一个人住在哪个城市、哪条街。IP地址解决的就是这个“门牌号”问题。它用一套统一的编址规则给每个网络接口一个逻辑位置让路由器可以根据目标地址决定“往哪个方向投递”。一个节点要正常通信IP地址必须满足两个条件一是编址体系得统一大家都用同一套规则二是同一广播域内地址必须唯一否则数据不知道该投递给谁。IPv4把地址长度定为32位分成四个八位组每个八位组取值0到255所以平时看到的192.168.1.1、202.106.0.20这类地址本质就是四个0到255的数字用点号连接起来。真正让我觉得必须先把IP地址看明白的是很多新手把“IP地址”和“网络位置”混为一谈。IP地址不只是给设备一个编号它还要回答一个问题这台设备和我是不是同一个院子里的如果是直接隔墙喊话二层广播和ARP如果不是就得通过门口的门卫网关转交。这个“同院子还是不同院子”的判断完全依靠子网掩码完成。所以只要掩码写错了哪怕IP地址写得再漂亮网络也可能完全不通或者时好时坏。1.2 IPv4与IPv6两种门牌系统的共存刚接触网络的人可能会问IPv4都这么多年了为什么还要搞IPv6答案很简单IPv4地址空间只有2的32次方约43亿个地址虽然看上去很多但互联网设备数量早就远远超过这个数。2011年前后国际地址分配机构手里的IPv4地址池就基本分完了。运营商、云厂商和设备厂商大多靠NAT让大量内网设备共享少量公网地址才把IPv4的生命延续到现在。IPv6则是128位地址2的128次方这个数量级已经没有直观可比性了它用冒号分段十六进制表示比如2408:8208:xxxx:xxxx::1这种写法。这看起来和子网划分没关系但等你以后配置IPv6防火墙规则、双栈网络时会发现IPv6的前缀长度就是CIDR写法的同一套逻辑只是从32位变成了128位。所以先把IPv4的掩码和CIDR吃透IPv6那一套基本可以无缝迁移理解。1.3 公网地址与私网地址的分工还有一个概念必须先分清公网地址和私网地址。公网地址是在互联网上全局可路由的地址必须全球唯一私网地址则是一组预留给内网使用的地址段永远不会出现在公网路由表里。RFC 1918规定了三段经典的私网范围地址段范围前缀10.0.0.0/810.0.0.0 – 10.255.255.255大型内网172.16.0.0/12172.16.0.0 – 172.31.255.255中型内网192.168.0.0/16192.168.0.0 – 192.168.255.255家庭和小型企业这三段对应了国内家庭和企业最常见的网段。你家路由器管理地址多半是192.168.1.1或192.168.0.1公司内网常见172.16.0.0/12里的某一段云厂商VPC默认也可能给你分配10.0.0.0/8里的一段。私网地址怎么上网靠网关做NAT网络地址转换把成千上万的内网地址映射成出口的少量公网地址。这也是为什么外网设备通常主动访问不到内网设备的原因——内网设备的“门牌号”在外网地图上根本不存在。日常排查时要记住这个常识看到IP是10.x、172.16-31.x、192.168.x第一反应就是内网私网地址家里宽带出口现在很多还是动态公网IPv4出口地址会不时变化这也会影响你远程访问家里服务的稳定性。2. 有类编址老底子规则还有多少在起作用2.1 A/B/C三类地址是早期网络的分层设计早年互联网规模小设计者按规模把IPv4地址分成了A、B、C等几个固定类别这叫有类编址。判断一个地址属于哪一类只需要看第一个八位组的数字范围类别第一字节范围默认掩码可用主机数A类1 – 127255.0.0.0 (/8)约1677万B类128 – 191255.255.0.0 (/16)约6.5万C类192 – 223255.255.255.0 (/24)254D类224 – 239组播地址不用于单播E类240 – 255保留未定义这套规则足够简单路由表看到目标地址的第一个数字就知道它属于哪一类、默认掩码是多少、该往哪个大方向路由。但它的缺点也很明显一家公司需要300个地址给它一个B类那意味着6万多个地址浪费巨大给它一个C类又只有254个不够用。类的概念把地址空间切成固定大小的块根本没法做精细化分配。到后来实际网络中几乎没有谁还严格按照A/B/C类来分配和路由了路由表里清一色是CIDR前缀。但网工考试、老文档、还有某些老旧设备上你还会碰到“这是C类地址”这类说法。了解它是为了能听懂历史包袱真正干活时请切换到CIDR思维。2.2 那些永远不能乱用的特殊地址段有几类特殊地址在规划时要特别小心它们不是一个“正常服务器”该用的地址127.0.0.0/8回环地址127.0.0.1永远代表本机。任何发给127.x的包都不会出网卡用来测试本地协议栈是否正常。169.254.0.0/16链路本地地址Windows主机如果没拿到DHCP分配的地址会自动给自己配一个169.254.x.x。一旦看到网卡是这个段的第一反应应该是DHCP出问题了而不是去改这个自动地址。0.0.0.0在配置语境里表示“任意地址”或“默认”常用于路由表里的默认路由、DHCP请求的源地址。255.255.255.255是有限广播地址只在当前网络内广播。224.0.0.0/4是组播地址段OSPF、VRRP、mDNS这类协议都在用。240.0.0.0/4是保留段部分设备实现里根本不允许配置。这些段不该出现在业务服务器规划表里但排查时经常碰到能认出来能少走很多弯路。2.3 为什么有类编址会被CIDR取代有类编址没撑多久就被无类域间路由CIDR取代了。CIDR的核心是允许掩码不固定在8、16、24而是任意长度比如/23、/25、/30都能用。这样地址块就能按需切分可以把两个相邻的/24合并成一个/23也可以把一个/24精确切成你要的子网。你还会经常看到VLSM这个词可变的子网掩码本质上是CIDR理念的延伸。从这一节开始我建议你彻底忘记“什么类用什么掩码”的框框统一用“前缀长度”来思考网络也就是斜杠后面那个数字。后面所有的网络规划、路由汇总、防火墙规则现在都是按这个逻辑来写的。3. 子网掩码一把切开网络位与主机位的刻度尺3.1 掩码的二进制本质子网掩码用一句话概括它是一串连续的二进制1表示“这些位是网络位”后面跟着一长串0表示“这些位是主机位”。把IP地址和掩码做按位与运算就能得到网络地址。为什么掩码必须是连续的1加连续的0因为网络位必须从最高位开始一路往下走中间不能有空洞否则主机和路由器无法用一次与运算切出清晰的前缀边界。这是CIDR的底层约束也是所有子网计算的基石。看两个例子掩码255.255.255.0对应二进制11111111.11111111.11111111.00000000前24位是网络位所以写成/24掩码255.255.255.128对应11111111.11111111.11111111.10000000前25位是网络位写成/25。你会发现十进制的掩码只是二进制形态的一种“人类友好包装”真正参与运算的是那一串二进制位。3.2 斜杠记法与十进制掩码的换算以下这张表建议收藏平时配置、排障都会反复用到前缀十进制掩码可用主机数适用场景/8255.0.0.0约1677万A类大网段/16255.255.0.0约6.5万B类大内网/24255.255.255.0254最常见的标准网段/25255.255.255.128126半个/24/26255.255.255.192621/4个/24/27255.255.255.224301/8个/24/28255.255.255.24014小规模网段/29255.255.255.2486极小的业务网段/30255.255.255.2522点对点链路专用/31255.255.255.2542可用点对点链路RFC 3021/32255.255.255.2551单个主机地址/30和/31经常出现在路由器之间的互联链路、云厂商负载均衡的VIP配置里。 /32则常见于防火墙规则里表示“就这一台主机”。3.3 一次AND运算算出网络地址、广播、可用主机数拿到一个IP和掩码第一步永远是算出网络地址。方法就是把IP和掩码逐位进行AND运算1和1得1其余都得0。举例192.168.1.88/26。掩码最后一段是192二进制是1100000088的二进制是01011000。两者AND01011000 11000000 01000000也就是64。所以网络地址是192.168.1.64。广播地址怎么算把网络位不变主机位全部置1。这个子网有32-266个主机位网络地址的主机位部分是000000全部置1得到01111111即127。所以广播地址是192.168.1.127。可用主机范围就是从网络地址加1到广播地址减1也就是192.168.1.65到192.168.1.126一共126-65162个可用地址正好等于2的6次方减2。为什么要减2因为网络地址和广播地址都不能分配给主机使用这就是子网划分的基本代价。4. 手算子网划分别急着打开计算器4.1 把一个/24网段切成四份的完整推演现在反过来给你一个网段要求切成若干子网。经典题目把192.168.1.0/24均匀切成4个子网。切4个子网需要从主机位借2位作为子网位因为2的2次方等于4。原来的/24就变成了/26。每个子网剩下32-266个主机位可用主机数是2的6次方减2等于62。具体切法如下表子网编号网络地址广播地址可用范围可用主机数1192.168.1.0/26192.168.1.63192.168.1.1 – 192.168.1.62622192.168.1.64/26192.168.1.127192.168.1.65 – 192.168.1.126623192.168.1.128/26192.168.1.191192.168.1.129 – 192.168.1.190624192.168.1.192/26192.168.1.255192.168.1.193 – 192.168.1.25462注意一个细节四个子网的可用主机数加起来是248比原来/24的254少了6个。原因就是每个子网都要牺牲一个网络地址和一个广播地址4个子网总共牺牲8个加上原有全局的广播地址减少了一个合计少了6个可用地址。这是子网化的必然代价规划时心里要有数。4.2 VLSM变长子网划分按需分配才是真节约实际项目里很少完全等分因为部门人数不一样。这时候就该VLSM上场。假设手里有192.168.88.0/24需求是部门A需要50个地址部门B需要25个部门C需要10个还有一段点到点链路只需要2个地址。步骤就一个原则需求大的先分子网从小到大切。部门A50台主机加2个保留需要52个地址向上取整到2的6次方64也就是/26。分配192.168.88.0/26可用范围.1到.62。部门B25台加2个保留需要27个地址向上取整到2的5次方32也就是/27。从.64开始分配192.168.88.64/27可用范围.65到.94。部门C10台加2个保留需要12个地址向上取整到2的4次方16也就是/28。分配192.168.88.96/28可用范围.97到.110。点到点链路2个地址用/30分配192.168.88.112/30可用.113和.114两个地址。分完之后192.168.88.116到192.168.88.255这段空间还留着可以继续精细化利用。这就是VLSM的意义不同子网使用不同长度的掩码把地址空间用到极致。如果都用等分/26四个子网也只能服务4乘以62等于248台设备而VLSM方式在同样空间里规划出了远超这个数的容量。4.3 快速心算技巧和常用二进制对照分享几个我平时手算子网的心算技巧能大幅提速块大小等于256减去掩码最后一段的十进制值。比如/26掩码255.255.255.192256减192等于64子网块就是64。网络地址一定是块大小的整数倍。判断一个地址属于哪个子网先算出块大小再找到小于等于该地址、且是块大小整数倍的那个值即可。可用主机数等于2的(32减前缀)次方减2。广播地址等于下一个子网网络地址减1。比如192.168.1.64/26的广播就是下一个子网起点192.168.1.128减1得到192.168.1.127。拿一个练习确认192.168.5.187/28。掩码255.255.255.240块大小256减240等于16187介于176和192之间而176是16的整数倍所以网络地址是192.168.5.176广播是191可用范围177到190主机数2的4次方减2等于14。几秒钟就能心算出来。5. 实操给虚拟机里的Linux配一个静态IP5.1 虚拟机网络模式怎么选前面算得再熟最终都要落到操作系统上。这一节用虚拟机Linux来演示因为虚拟机的网络配置比物理机更简单、更适合反复折腾也是新手最常碰到的场景。虚拟机的三种常见网络模式NAT模式虚拟机通过宿主机NAT上网通常自动拿到一个192.168.x.0/24内的地址。好处是宿主机能上网虚拟机就能上网坏处是外部设备很难直接访问虚拟机。桥接模式虚拟机直接挂在宿主机所在局域网像一台独立设备能拿到和宿主机同一网段的地址融进真实局域网。仅主机模式/自定义虚拟网络虚拟机和宿主机组成一个隔离的虚拟网络适合做纯实验不会污染物理网络环境。我的建议是学习子网划分时用自定义虚拟网络手动规划一个独立网段。比如在VMware里定义一个192.168.56.0/24的仅主机网络宿主机对应的虚拟网卡用192.168.56.1虚拟机用192.168.56.10。这样整个子网完全由你掌控实验效果最清晰也不会和家里真实网络冲突。5.2 nmcli配置静态IP的完整步骤以CentOS这类使用NetworkManager的发行版为例新版基本都是它配置静态IP最稳的方式是nmcli。先看清楚接口名nmcli device status ip -4 addr show假设接口叫ens33把它配置成192.168.56.10/24、网关192.168.56.1、DNS用两个公共DNSnmcli connection modify ens33 ipv4.addresses 192.168.56.10/24 nmcli connection modify ens33 ipv4.gateway 192.168.56.1 nmcli connection modify ens33 ipv4.dns 223.5.5.5 8.8.8.8 nmcli connection modify ens33 ipv4.method manual nmcli connection up ens33为什么强调用nmcli而不是直接编辑配置文件因为从RHEL/CentOS 8开始NetworkManager接管了网络配置你手工改/etc/sysconfig/network-scripts/ifcfg-*文件经常会被NetworkManager下一次刷新覆盖或者出现配置文件与运行状态不一致的诡异问题。nmcli的修改会同时写入配置文件和运行状态而且失败时能直接看到报错适合反复调整场景。如果你用的是Ubuntu/Debian对应方式是编辑/etc/netplan/下的YAML文件核心字段是addresses、gateway4新版是routes、nameservers理念完全一样。CentOS 10这类面向未来版本的系统同样优先走nmcli。5.3 配置完成后的验证三板斧配完别急着高兴按这三步验证看地址是否生效ip addr show ens33。确认inet那一行是192.168.56.10/24而不是旧的自动获取地址。看路由是否正常ip route。至少应该有一条default via 192.168.56.1 dev ens33的默认路由。由近及远ping先ping网关192.168.56.1通了说明二层和三层本地链路没问题再ping一个外网IP比如223.5.5.5通了说明出网没问题最后ping域名比如ping www.example.com通了说明DNS解析正常。哪一步不通问题就集中在哪一段。这个由近及远的思路是网络排障的基本方法论后面排障章节还会反复用到。6. 踩坑记录掩码和网关配错后的连锁反应6.1 掩码不一致导致的非对称通信先讲一个最典型的隐蔽故障掩码写错导致互通时好时坏。假设两个子网隔着路由器A在192.168.1.10/24B在192.168.2.10/16本应为/24误写成/16。B用自己的/16掩码一算认为192.168.1.0/24也在自己这个“192.168.0.0/16”的大院子里于是B访问A时直接向二层广播发ARP请求找A的MAC地址。但ARP是二层协议广播跨不过路由器结果没有任何设备应答B到A的流量全部丢失。反过来A按正确的/24知道B在另一个子网访问B时会把流量交给网关网关再转发给B所以A到B是通的。两边访问同一个目标方向不同结果完全不同这就是掩码错误导致的非对称通信。直观感受就是“有时候能连上有时候连不上”。还有另一种同网段内掩码不一致的情况比如一个/24配成/26此时通信往往依赖网关兜底转发一旦网关策略或交换机隔离设置严格问题立刻暴露。排查这类问题用同一套子网参数去核对每一台设备尤其警惕自动获取和手工配置混用的环境。6.2 网关、IP冲突、DNS三类高频故障除了掩码下面几类问题也高频出现网关配错或没配典型现象是同子网内互访正常ping网关也通但访问其他网段或互联网全部失败。先检查路由表里默认路由是否指向正确网关。IP冲突两台设备配了相同IP表现为时通时断ping一会儿通一会儿超时。在交换机上抓包或查看ARP表能看到同一个IP对应多个MAC地址反复横跳。家里如果让路由器DHCP分配范围和NAS的手工静态IP重了就会出现这种情况。DNS配置不对能ping通IP但访问域名失败。先用nslookup或dig查解析重点关注DNS服务器地址是否可达、是否写错。6.3 一套可复用的排查顺序最后给出我一直在用的排查顺序你可以直接照抄ip addr确认自己这台设备的IP、掩码、网关是否和预期一致先排除“配置了但没生效”的情况。ip route查路由表确认默认路由存在且指向正确网关。ping默认网关不通就排查物理链路、虚拟网卡模式和二层问题。ping一个外网IP比如223.5.5.5不通说明出网方向有问题。ping域名不通则是DNS解析问题。以上都通但业务还是不行才去检查防火墙、服务监听和ARP表。每一步都要看“通不通”和“不通时丢在哪一跳”不要一上来就抓包。抓包能解决复杂问题但简单问题用抓包反而浪费时间。6.4 预防永远比排查更值钱长期实践下来我觉得子网划分这块最值得投资的不是背公式而是建立一份网络地址规划表。哪怕家里只有一台路由器、一台NAS、几台虚拟机也建议把每台设备、预期IP、掩码、网关写进一张表里。等遇到故障时这张表能帮你十分钟定位否则就是在黑灯瞎火里猜。最后再分享一个小习惯凡是手工配置静态IP的地方我都顺手把掩码写成CIDR形式比如192.168.56.10/24而不是把IP和掩码分开两行写。因为CIDR直接暴露了网络位长度复核配置时人不容易看走眼。这个习惯帮我避开了至少五次掩码乌龙事故也希望你能用上。
返回列表