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. 最佳实践#
- 生产环境优先使用
nmcli或netplan统一管理,避免混用 - 变更前备份配置文件,明确回滚路径
- 关键网卡配置
ONBOOT=yes,防止重启后断网 - 批量变更建议通过 Ansible/SaltStack 自动化执行