在Linux系统中,网络接口是设备与外部网络通信的核心桥梁,而准确标识和管理这些接口对于网络配置、故障排查及自动化运维至关重要,传统上,Linux网络接口常通过名称(如eth0、ens33)进行识别,但这些名称可能因硬件变动(如更换网卡、驱动加载顺序改变)而发生变化,导致配置失效,为此,Linux引入了更稳定的标识方式——UUID(Universally Unique Identifier),即通用唯一标识符,网卡UUID通常用于网络连接配置、防火墙规则绑定及脚本编写中,确保即使接口名称变化,相关配置仍能正确关联,本文将详细介绍Linux系统中查看网卡UUID的多种方法、适用场景及注意事项,帮助读者高效掌握这一实用技能。

理解网卡UUID的本质与用途
网卡UUID并非指网卡硬件本身的唯一标识(硬件标识通常为MAC地址),而是NetworkManager等网络管理工具为每个“网络连接配置”生成的逻辑标识符,一个物理网卡可以对应多个连接配置(如静态IP、DHCP、桥接等),每个配置都会被赋予一个唯一的UUID,确保配置间的独立性,在Ubuntu、CentOS等现代发行版中,通过NetworkManager创建的网络连接(如“以太网连接”),其配置文件会以UUID命名并存储于特定目录,便于系统快速定位和应用。
查看网卡UUID的主要场景包括:
- 网络配置管理:修改静态IP、DNS或网关时,需通过UUID准确定位目标连接;
- 自动化脚本编写:在Shell或Python脚本中,通过UUID动态获取或修改网络配置,避免依赖易变的接口名;
- 故障排查:通过日志或配置文件中的UUID,快速定位问题连接的详细参数;
- 防火墙与安全策略:将防火墙规则绑定至特定连接UUID,确保策略随连接持久生效。
使用nmcli命令查看网卡UUID(推荐方法)
nmcli(NetworkManager Command-Line Interface)是NetworkManager官方提供的命令行工具,现代Linux发行版(如Ubuntu 18.04+、CentOS 7+)默认集成,通过nmcli可以直观查看所有网络连接及其UUID,操作简单且信息全面。
查看所有连接及其UUID
执行以下命令,将列出系统中的所有网络连接(包括活跃和非活跃连接),并显示对应的名称、UUID、类型及状态:
nmcli connection show
输出示例:
NAME UUID TYPE DEVICE
Wired connection 1 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet ens33
virbr0 77777777-4444-8888-9999-aaaaaaaaaaaa bridge virbr0
UUID列即为连接的唯一标识符,NAME为用户自定义的连接名称(如“Wired connection 1”),DEVICE为当前绑定的网络接口名(如ens33)。
查看特定连接的UUID
若需查询某个指定连接的UUID,可通过连接名称过滤:
nmcli connection show "Wired connection 1" | grep UUID
或直接提取UUID字段:
nmcli -g UUID connection show "Wired connection 1"
输出结果为纯UUID字符串(如5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03),适合脚本调用。
查看活跃连接的UUID
若仅关注当前正在使用的网络连接,可添加--active参数:

nmcli connection show --active
此命令仅显示已激活的连接(如正在上网的有线或无线连接),便于快速定位当前生效的配置。
通过NetworkManager配置文件查看UUID
NetworkManager将网络连接的配置文件存储在/etc/NetworkManager/system-connections/目录下,每个文件对应一个连接,且文件名即为该连接的UUID(.nmconnection后缀),通过直接查看文件列表或内容,可获取UUID信息。
列出所有配置文件(即UUID列表)
ls /etc/NetworkManager/system-connections/
输出示例:
5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03.nmconnection
77777777-4444-8888-9999-aaaaaaaaaaaa.nmconnection
文件名中的长字符串即为UUID,适用于需要直接操作配置文件的场景(如手动备份或修改连接参数)。
查看配置文件中的UUID字段
若需确认文件内容与UUID的对应关系,可使用cat或grep命令查看配置文件:
cat /etc/NetworkManager/system-connections/5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03.nmconnection
在[connection]部分,会明确显示uuid字段:
[connection]
id=Wired connection 1
uuid=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
type=ethernet
interface-name=ens33
此方法适合需要验证UUID或修改配置细节的高级用户。
使用ip命令关联查看接口与连接UUID
ip命令是Linux系统中网络管理的基础工具,虽不直接显示连接UUID,但可通过接口名称关联到NetworkManager中的连接,进而获取UUID。
查看所有网络接口名称
ip link show
输出示例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:ab:cd:ef brd ff:ff:ff:ff:ff:ff
ens33为当前活跃的有线接口名称。

通过接口名称获取连接UUID
结合nmcli和ip命令,可通过接口名称反向查找对应的连接UUID:
nmcli -g UUID connection show "$(nmcli -g NAME connection show --active | grep -m1 "$(ip -o link show | awk '/state UP/ {print $2}' | cut -d: -f1)")"
命令解析:
ip -o link show | awk '/state UP/ {print $2}' | cut -d: -f1:获取当前状态为UP的接口名称(如ens33);grep -m1 "$(...)":从活跃连接中匹配该接口名称;nmcli -g NAME connection show --active:获取活跃连接的名称;nmcli -g UUID connection show "$(...)":最终输出对应连接的UUID。
此方法适合在脚本中通过接口动态获取UUID,实现自动化配置。
传统工具:ifconfig与udev规则(兼容旧系统)
对于较老的Linux发行版(如CentOS 6、Ubuntu 14.04)或未使用NetworkManager的系统,可通过传统工具查看网络信息,但需注意这些方法通常不直接显示UUID,需结合其他方式间接获取。
使用ifconfig查看接口信息
ifconfig
输出示例:
ens33 Link encap:Ethernet HWaddr 00:0c:29:ab:cd:ef
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
ifconfig仅显示接口名称和MAC地址,不涉及UUID,需结合/etc/sysconfig/network-scripts/目录下的ifcfg-*文件(如ifcfg-ens33)查找UUID字段(若存在),但需注意,旧系统中UUID字段并非标准配置,可能需手动添加。
通过udev规则查看持久化接口标识
udev是Linux设备管理器,可通过规则文件为接口分配持久化名称(如ens33),但本身不生成UUID,若需通过udev关联UUID,可查看/etc/udev/rules.d/70-persistent-net.rules文件(旧版Ubuntu/CentOS),其中会记录接口MAC地址与对应名称的映射,但UUID仍需依赖NetworkManager配置文件。
方法对比与选择建议
上述方法各有优劣,可根据实际场景选择:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
nmcli命令 |
直观、信息全面、支持过滤,适合所有现代系统 | 依赖NetworkManager服务 | 日常查看、脚本编写、图形化管理 |
| NetworkManager配置文件 | 直接获取UUID,适合手动修改配置 | 需 root 权限访问目录,文件名较长 | 配置备份、手动编辑网络参数 |
ip命令关联 |
通过接口动态获取UUID,适合自动化 | 命令较复杂,需多步组合 | 脚本中通过接口名定位连接 |
传统工具(ifconfig) |
兼容旧系统,无需额外服务 | 不直接显示UUID,信息有限 | 旧系统维护、无NetworkManager的环境 |
推荐优先级:nmcli命令 > NetworkManager配置文件 > ip命令关联 > 传统工具,对于现代Linux系统,nmcli是查看网卡UUID的首选方法,操作简单且功能完善。
注意事项
- 权限要求:
nmcli普通用户可查看连接信息,但修改配置或访问/etc/NetworkManager/system-connections/目录需 root 权限(sudo)。 - 服务状态:
nmcli依赖NetworkManager服务运行,可通过systemctl status NetworkManager检查服务状态,未启动时需执行systemctl start NetworkManager。 - 发行版差异:Ubuntu、CentOS、RHEL等发行版默认使用NetworkManager,而Debian minimal、Arch Linux等可能默认使用
netplan或ifcfg,需根据实际情况调整方法。 - UUID格式:标准UUID为32位十六进制数,包含5组字符(如
5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03),脚本中可通过正则表达式验证格式正确性。
网卡UUID作为Linux网络连接的稳定标识符,在网络管理和自动化运维中扮演着重要角色,通过nmcli命令、NetworkManager配置文件等方法,可高效获取UUID信息,满足不同场景下的需求,掌握这些方法不仅能提升网络配置的准确性,还能为编写健壮的自动化脚本奠定基础,在实际操作中,建议优先使用nmcli工具,并结合系统环境灵活选择其他方法,确保高效、准确地完成网卡UUID的查看与管理。