Administrator
Published on 2025-07-02 / 1 Visits
0
0

ifcfg 文件语法大全 + 自动生成 UUID 工具

——掌控传统与现代 Linux 网络配置的桥梁之钥!


一、前言:为什么 ifcfg-* 文件依然重要?

尽管现代 Linux 以 nmclinmtui 为主,但 ifcfg-* 文件作为底层配置文件,仍然在以下场景中发挥作用:

  • 初始部署中脚本静默配置网卡

  • 和 Anaconda 安装器配合预设网络

  • 与 kickstart 文件结合实现无人值守安装

  • 麒麟V10/UOS中,某些运维软件仍依赖该格式进行网络检测

精通 ifcfg-*,是国产服务器环境中“人手必备”的技能。


二、ifcfg-* 文件的存放路径和命名规则

路径:

/etc/sysconfig/network-scripts/

命名方式:

  • 单网卡:ifcfg-eth0

  • Bond 接口:ifcfg-bond0

  • VLAN 接口:ifcfg-eth0.100

  • Bridge 接口:ifcfg-br0

ℹ️ 注意:银河麒麟 V10 SP3 中默认同时支持 ifcfg 和 NetworkManager .nmconnection 文件,但推荐只保留一种方式配置网络。


三、语法字段大全

以下为 ifcfg 文件中支持的字段及其含义,已按照用途分类整理:

基础标识字段

字段

示例

含义

DEVICE

eth0

网卡接口名,必须与系统识别一致

NAME

eth0

NetworkManager 显示名称(可与 DEVICE 相同)

UUID

自动生成

唯一标识连接配置

TYPE

Ethernet

接口类型(Ethernet、Bridge、Bond、Vlan等)

ONBOOT

yes

开机自动启动该连接

BOOTPROTO

static/dhcp

启动时获取 IP 的方式


静态 IP 配置

字段

示例

说明

IPADDR

192.168.10.100

设置静态 IP 地址

NETMASK

255.255.255.0

子网掩码(传统)

PREFIX

24

子网掩码前缀(推荐)

GATEWAY

192.168.10.1

默认网关

DNS1DNS2

114.114.114.114

DNS 服务器地址


高级配置

字段

示例

说明

DEFROUTE

yes/no

是否为默认路由接口

MTU

1500

最大传输单元

HWADDR

MAC 地址

指定物理地址绑定

NM_CONTROLLED

yes/no

是否受 NetworkManager 控制(默认 yes)

PEERDNS

yes/no

是否使用上游 DHCP 提供的 DNS

IPV6INIT

yes/no

启用 IPv6 配置


Bond/VLAN 示例字段

Bond 主接口:

DEVICE=bond0
NAME=bond0
TYPE=Bond
ONBOOT=yes
BOOTPROTO=none
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"

从属网卡(Slave):

DEVICE=eth1
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
ONBOOT=yes

VLAN 接口:

DEVICE=eth0.100
VLAN=yes
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.100.10
PREFIX=24

四、如何生成唯一的 UUID?

每个 ifcfg-* 配置文件推荐包含 UUID 字段以避免 NetworkManager 冲突。

自动生成方法一:使用 nmcli 命令

nmcli connection add type ethernet ifname eth0 con-name my-eth0
nmcli connection show my-eth0 | grep UUID

然后将该 UUID 填入 ifcfg-eth0 文件中。


自动生成方法二:使用 uuidgen 命令

uuidgen

示例输出:

a13f89b1-7fcd-42ea-bae5-bcbe1e2f2124

然后手动写入:

UUID=a13f89b1-7fcd-42ea-bae5-bcbe1e2f2124

推荐方式:使用 uuidgen 配合脚本统一分配,适合 DevOps 场景。


五、实战案例:银河麒麟 V10 SP3 初始网络脚本

#!/bin/bash
NIC=eth0
IP=192.168.10.100
GW=192.168.10.1
MASK=24
UUID=$(uuidgen)

cat > /etc/sysconfig/network-scripts/ifcfg-$NIC <<EOF
DEVICE=$NIC
NAME=$NIC
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=$IP
PREFIX=$MASK
GATEWAY=$GW
DNS1=114.114.114.114
UUID=$UUID
EOF

# 激活网卡
nmcli con reload
nmcli con up $NIC

六、与 nmcli 的配置兼容性说明

  • nmcli 会自动生成对应的 ifcfg-* 文件(或 .nmconnection 文件,取决于配置)

  • 修改 ifcfg-* 后需执行:

nmcli con reload
nmcli con up eth0
  • 若使用 nmtui 进行图形配置,也会更新 ifcfg 文件内容(在受控条件下)


七、常见坑点避雷

问题

原因

解决方法

配置不生效

ONBOOT=no 或缺失

设置为 yes 并重启网络服务

UUID 重复

多文件复制未更新 UUID

使用 uuidgen 重新生成

DNS 无效

PEERDNS=no 且未设定 DNS1

手动添加 DNS1 字段

NM 不识别

NM_CONTROLLED=no

改为 yes 或统一使用 nmcli 管理


八、总结:掌握 ifcfg,打通传统与现代网络配置之桥

能力

收益

熟练书写 ifcfg 语法

无惧裸机部署、恢复、初始化

配合 UUID 管理

避免冲突,提升 NetworkManager 兼容性

脚本化配置

实现大规模服务器的标准化运维


结语:网络的世界,从一个文件开始……

"DEVICE=eth0" 不仅仅是配置,它是一台服务器的呼吸开始。
"UUID=" 是她的身份证,而 "ONBOOT=yes" 是她每天睁眼的方式。

你是否已准备好,从 ifcfg 开始掌控你的网络?


Comment