Linux 子网掩码(netmask)配置攻略:从原理到实战的子网划分指南

Linux 网络配置详解:netmask 设置实战操作指南

Linux 网络配置中,子网掩码(netmask)是划分 IP 地址网络部分与主机部分的核心参数。例如,IP 地址192.168.1.100搭配子网掩码255.255.255.0时,系统会识别网络部分为192.168.1.0,主机部分为100。这一机制直接影响局域网通信、路由表生成和访问控制等核心功能。本文通过 Debian/Ubuntu、CentOS/RHEL 两大发行版的实战案例,解析子网掩码的配置方法与故障排查技巧。

一、子网掩码基础原理

1.1 二进制本质

子网掩码由 32 位二进制数组成,连续的1代表网络位,连续的0代表主机位:
  • 255.255.255.0 → 二进制11111111.11111111.11111111.00000000(前 24 位为网络位,即/24
  • 255.255.0.0 → 二进制11111111.11111111.00000000.00000000(前 16 位为网络位,即/16

1.2 核心作用

  • 网络隔离:划分不同子网(如研发部192.168.1.0/24与财务部192.168.2.0/24
  • 路由优化:帮助路由器计算最短路径
  • 访问控制防火墙基于子网掩码匹配特定流量

1.3 典型场景

场景类型 示例配置 适用环境
小型局域网 192.168.1.0/24 家庭 / 办公室(≤254 台设备)
多子网隔离 10.1.1.0/24 中型企业网络
路由器互联 172.16.0.1/30 点对点链路(仅需 2 个 IP)

二、Debian/Ubuntu 系统配置

2.1 临时修改(重启失效)

# 方法1:ip命令(推荐)
sudo ip addr add 192.168.1.100/24 dev eth0  # 同时设置IP和掩码
sudo ip addr show eth0 | grep inet  # 验证配置

# 方法2:ifconfig命令
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

2.2 永久配置

2.2.1 传统/etc/network/interfaces方式

# 编辑配置文件
sudo nano /etc/network/interfaces

# 添加静态IP配置
auto eth0
iface eth0 inet static
  address 192.168.1.100
  netmask 255.255.255.0  # 或用network 192.168.1.0/24
  gateway 192.168.1.1
  dns-nameservers 8.8.8.8 8.8.4.4

# 应用配置
sudo systemctl restart networking

2.2.2 Netplan(Ubuntu 17.10 + 默认)

# 编辑YAML配置文件
sudo nano /etc/netplan/01-netcfg.yaml

# 配置内容
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.100/24]  # CIDR格式掩码
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

# 应用配置
sudo netplan apply

三、CentOS/RHEL 系统配置

3.1 临时修改(重启失效)

# 方法1:ifconfig
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

# 方法2:ip命令
sudo ip addr add 192.168.1.100/24 dev eth0

3.2 永久配置

# 编辑网卡配置文件
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

# 关键参数设置
DEVICE=eth0
BOOTPROTO=static  # 静态IP
ONBOOT=yes        # 开机自启
IPADDR=192.168.1.100
NETMASK=255.255.255.0  # 或PREFIX=24(CIDR格式)
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4

# 应用配置
sudo systemctl restart network

四、高级技巧与故障排查

4.1 多 IP 绑定(虚拟接口)

# 临时添加第二个IP
sudo ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0

# Debian永久配置
echo "auto eth0:1
iface eth0:1 inet static
  address 192.168.1.101
  netmask 255.255.255.0" | sudo tee -a /etc/network/interfaces
sudo systemctl restart networking

4.2 常见故障:掩码不匹配

现象:配置192.168.1.100/25后无法访问网关192.168.1.1
原因/25掩码(255.255.255.128)将网络分为0-127128-255,IP 与网关不在同一子网
解决:统一掩码为/24
sudo ip addr change 192.168.1.100/24 dev eth0

4.3 掩码与 CIDR 转换表

十进制掩码 CIDR 表示 可用主机数
255.255.255.0 /24 254
255.255.0.0 /16 65,534
255.255.254.0 /23 510
255.255.255.192 /26 62

五、最佳实践

  1. 禁用临时配置:通过配置文件永久化设置,避免重启失效
  2. 使用 CIDR 格式:如/24代替255.255.255.0,简洁且易维护
  3. 配置前备份
    sudo cp /etc/network/interfaces /etc/network/interfaces.bak
    
  4. 图形化工具:用nmcli快速配置(支持 NetworkManager 的系统)
    nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
    nmcli connection up eth0
    
  5. 定期验证
    ip route show | grep "192.168.1.0/24"  # 检查路由
    ping -c 4 192.168.1.1  # 测试网关连通性
    

结语

子网掩码配置是 Linux 网络的基础,需结合网络规模、隔离需求和扩展性综合设计。掌握本文的配置方法与故障排查技巧,可确保网络通信稳定,为业务系统提供可靠支撑。
阅读剩余