Linux虚拟机掩码设置的核心原则是:先规划子网,再定掩码,最后配网关;掩码必须与网关处于同一子网,否则网络不通。很多新手在装完虚拟机后,卡在“网络不可达”这一步,往往就是掩码和网关“打架”了,下面直接拆解具体的配置思路、操作命令和常见坑点。
掩码、网关和子网划分的基本关系
掩码到底管什么
掩码(Netmask)的作用是划分“网络位”和“主机位”,比如常见的255.255.0,表示前24位是网络号,后8位是主机号,所以一个168.1.x的地址,在24位掩码下,能用的主机范围是168.1.1到168.1.254。
行业共识是,掩码越长,子网越小,可用IP越少。
255.255.0(/24):254个可用地址255.255.128(/25):126个可用地址255.255.192(/26):62个可用地址
网关的本质是“出口”
网关是虚拟机和外部网络通信的“门”。网关IP必须落在当前子网的可用范围内,子网是168.1.0/24,网关通常是168.1.1;如果掩码改成255.255.240,子网变成168.1.0/28,可用范围是168.1.1-14,此时网关必须在这个范围内,否则数据包根本出不去。
Linux虚拟机常见的网络模式与掩码选择
桥接模式:掩码看物理局域网
桥接模式下,虚拟机直接“挂”在物理网络上,掩码、网关、DNS都应当与宿主机所在局域网保持一致。
具体操作步骤:
- 在物理机上执行
ipconfig(Windows)或ip addr(Linux)查看真实网络的掩码和网关 - 虚拟机里用
nmtui或vim /etc/network/interfaces(Debian系)或/etc/sysconfig/network-scripts/ifcfg-ens33(CentOS/RHEL)设置相同掩码和网关 - 网卡模式选“桥接”,并指定正确物理网卡
常见错误:把桥接模式当成NAT模式,填了VMnet8的网关,导致能ping通虚拟机却上不了外网。
NAT模式:掩码和网关由VMware/VirtualBox固定
NAT模式下,虚拟机的掩码和网关通常由虚拟化软件统一分配,以VMware为例:
- 默认子网为
168.xxx.0,掩码是255.255.0 - 网关固定为
168.xxx.2(VMware)或168.xxx.1(VirtualBox) - 虚拟机IP需要手动设置时,掩码必须用这个默认值,网关必须填虚拟网卡对应的地址
如果改乱了,可以在虚拟网络编辑器中恢复默认设置,具体路径:VMware菜单栏“编辑”->“虚拟网络编辑器”->选择VMnet8->“还原默认设置”。
仅主机模式:掩码可能不是24位
仅主机模式不与外网互通,掩码和子网可以自定义,但有个前提:宿主机和虚拟机的IP必须在同一子网,比如自定义子网168.200.0/24,那么宿主机vnet1网卡和虚拟机IP都要用这个子网。
子网划分实战:让掩码和网关不冲突
从需求出发反推掩码
假设局域网中需要划分100台设备,
- 2^7 – 2 = 126(借1位主机位),所以用
255.255.128(/25)正好 - 子网起始地址从
168.1.0开始,广播地址是168.1.127 - 网关一般设为
168.1.1(第一个可用地址)
如果主机需要200台,则255.255.0(/24)才够用。一律不要用0.0.0这类A类默认掩码,除非你确定整个超大子网未分段。
用ipcalc工具快速验证
在Linux虚拟机里,可以装ipcalc来验证掩码和网关是否匹配:
sudo apt install ipcalc ipcalc 192.168.1.100/24
输出结果会明确显示网络地址、广播地址、可用主机范围,如果网关节点的IP不在范围内,就是配置错误。
检查路由表的正确姿势
配置完成后,用ip route查看默认网关是否生效,正常输出类似:
default via 192.168.1.1 dev ens33
如果没有这行,说明网关没配上或掩码导致子网不匹配,此时手动添加:
sudo ip route add default via 192.168.1.1
掩码设置错误的典型症状和处理方法
能ping通局域网,但上不了外网
这种情况90%是网关配置错误,其中又有一半是掩码写大了或写小了,例如掩码应为255.255.0,却写成255.255.128,导致系统认为网关在另一个子网,直接把数据包丢弃。
排查步骤:
ip addr查看当前IP和掩码- 对比网卡配置文件中的
NETMASK值 - 修改后执行
systemctl restart network(CentOS)或sudo systemctl restart networking(Ubuntu)
能上外网但局域网内找不到其他机器
掩码过小(比如用255.255.255)时,系统只认本机地址,广播包发不出去,这时应该把掩码改回与局域网一致的255.255.0。
虚拟机IP和宿主机冲突
查看宿主机当前网段的IP占用情况,为虚拟机分配一个离主机较远的地址,比如宿主机是168.1.100,虚拟机可用168.1.150,掩码同为255.255.0。
Linux镜像购买后再设置掩码要注意什么
部分用户会先挑选合适的Linux镜像再开始配置,比如在云市场或虚拟机镜像站下载的CentOS 7模板,这类镜像的网卡配置往往默认DHCP,如果改成静态IP,需要同时修改以下四个参数:
BOOTPROTO=none(或static)IPADDR=<你的固定IP>NETMASK=<正确的掩码>GATEWAY=<同一子网的网关>
改成静态IP后,建议顺手注释掉UUID相关行,并删除重复的DEVICE条目,避免NetworkManager抢占配置导致重启后掩码被重置。
掩码和网关在安全组规则中的联动
讨论虚拟机子网划分时,还需要把宿主机安全组或防火墙规则考虑进去,即使掩码和网关匹配,防火墙策略也会拦截数据,例如在酷番云或简米云的虚拟机安全组中,入站规则需要放行源IP为虚拟机子网的流量。
这里给出一个常用对比:
| 配置项 | NAT模式 |
桥接模式 | 仅主机模式 |
|---|---|---|---|
| 默认掩码 | 255.255.0 | 物理局域网掩码 | 可自定义 |
| 网关来源 | VMware/VirtualBox自动指定 | 物理路由器地址 | 宿主机vnet接口 |
| 对外通信 | 通过宿主机转发 | 直连局域网 | 仅宿主主机 |
| 典型场景 | 虚拟机上网下载软件包 | 局域网内服务互通 | 测试隔离环境 |
掩码设置错了如何快速恢复
如果配置文件已经改乱,可以用IQN命令快速重置为DHCP方式:
sudo dhclient ens33
或者删除网卡配置文件后重启网络服务:
sudo rm /etc/sysconfig/network-scripts/ifcfg-ens33 sudo systemctl restart network
需要注意的是,恢复DHCP后,掩码和网关都由路由器自动分配,虚拟机IP可能变化,影响SSH连接。
Q&A:Linux虚拟机掩码设置常见疑问
问题1:Linux虚拟机掩码设置教程里,为什么有的写255.255.255.0有的写255.255.255.128?
因为子网划分粒度不同,如果地址段是168.1.0/24,掩码是24位;如果把该段切成两个/25子网,掩码就变成25位。具体用哪个掩码取决于网关所在子网的划分方式,查看路由器或交换机配置即可确定。
问题2:虚拟机子网划分网关配置方法,是先设IP还是先设掩码?
建议按“子网规划 -> 掩码 -> IP -> 网关”的顺序,先确定子网范围,掩码自然确定,然后再分配一个不冲突的IP,最后把网关设在子网的首个或末个可用地址,反过来先设IP再填掩码,容易出现IP地址不归属该掩码子网的问题。
问题3:同一个物理机上有多个虚拟机,掩码必须一致吗?
不一定,NAT模式下,同网段的虚拟机掩码必须一致;桥接模式下,只要网关在同一子网,掩码可以不同,但跨度较大的掩码设置会导致ARP广播范围增大,影响通信效率,多数情况下建议保持统一的24位掩码,简化管理。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/755992.html





