2.3.2 IP地址配置与持久化

本节讲解 Linux 主机 IP 地址的临时配置与持久化方法,覆盖主流发行版差异、常见排错步骤与练习,确保重启后网络配置稳定可控。

原理草图:临时与持久化生效路径

文章图片

1. 临时配置(立即生效,重启失效)#

安装与准备(旧系统 ifconfig)
- ifconfig 在新系统可能未安装(需安装 net-tools):

# RHEL/CentOS
yum -y install net-tools

# Debian/Ubuntu
apt -y install net-tools

ip 命令示例(推荐)

# 添加地址
ip addr add 192.168.1.10/24 dev eth0

# 删除地址
ip addr del 192.168.1.10/24 dev eth0

# 查看网卡地址
ip addr show dev eth0

命令解释:
- addr add:向接口追加地址(不会覆盖已有地址)
- /24:CIDR 表示子网掩码 255.255.255.0
- dev eth0:指定网卡接口

ifconfig 示例(旧系统兼容)

ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up

说明:此方式多为老版本脚本调用,新系统优先使用 ip


2. 持久化配置(随系统启动加载)#

2.1 RHEL/CentOS/AlmaLinux/Rocky(NetworkManager)#

nmcli 配置(推荐)

# 新建连接并配置静态IP
nmcli con add type ethernet ifname eth0 con-name eth0 \
  ipv4.addresses 192.168.1.10/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "114.114.114.114 8.8.8.8" \
  ipv4.method manual

# 启用连接
nmcli con up eth0

命令解释:
- con add:创建连接
- ipv4.method manual:静态 IP 模式
- ipv4.dns:同时配置多个 DNS

传统 network-scripts(若启用)

# /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.10
PREFIX=24
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8

应用生效:

systemctl restart network

2.2 Debian/Ubuntu(netplan)#

netplan 示例(Ubuntu 18.04+)

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      addresses: [192.168.1.10/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

应用配置:

netplan apply

老版本 /etc/network/interfaces

auto eth0
iface eth0 inet static
  address 192.168.1.10
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-nameservers 8.8.8.8 1.1.1.1

应用:

systemctl restart networking

3. 多IP与别名配置#

临时多IP

ip addr add 192.168.1.11/24 dev eth0
ip addr add 192.168.1.12/24 dev eth0

持久化多IP(NetworkManager)

nmcli con mod eth0 +ipv4.addresses 192.168.1.11/24
nmcli con mod eth0 +ipv4.addresses 192.168.1.12/24
nmcli con up eth0

持久化多IP(network-scripts)

# /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.1.10
PREFIX=24
IPADDR1=192.168.1.11
PREFIX1=24
IPADDR2=192.168.1.12
PREFIX2=24

4. 生效验证与排错#

验证命令

ip addr show dev eth0
ip route show
ping -c 3 192.168.1.1
ping -c 3 8.8.8.8

常见排错步骤

# 1) 确认网卡状态
ip link show eth0

# 2) 查看 DNS 是否生效
cat /etc/resolv.conf

# 3) 检查是否存在重复/冲突配置
nmcli con show
ls /etc/sysconfig/network-scripts/ifcfg-*

典型错误与处理
- 子网掩码与网关不匹配 → 确认网关在同网段
- nmcli 与 ifcfg 并存冲突 → 统一使用一种方式
- 配置生效但无法解析域名 → 检查 DNS 或 resolv.conf 是否被覆盖


5. 练习与自检#

练习 1:临时配置并验证

ip addr add 10.10.10.10/24 dev eth0
ip addr show dev eth0
ping -c 2 10.10.10.1

预期:地址出现于 ip addr 输出,能 ping 通网关(若网关存在)。

练习 2:持久化配置回滚

# 备份配置
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0.bak

# 修改 IP 后重启网络
systemctl restart network

# 失败时回滚
cp /tmp/ifcfg-eth0.bak /etc/sysconfig/network-scripts/ifcfg-eth0
systemctl restart network

预期:网络恢复到原配置。


6. 最佳实践#

  • 生产环境优先使用 nmclinetplan 统一管理,避免混用
  • 变更前备份配置文件,明确回滚路径
  • 关键网卡配置 ONBOOT=yes,防止重启后断网
  • 批量变更建议通过 Ansible/SaltStack 自动化执行