服务器测评网
我们一直在努力

linux 查看网卡mac

在Linux系统中,MAC地址(媒体访问控制地址)是网卡的唯一标识符,用于在网络中精确识别设备,无论是网络配置、故障排查,还是安全策略制定,查看网卡MAC地址都是一项基础且重要的操作,本文将详细介绍在Linux系统中查看网卡MAC地址的多种方法、适用场景及常见问题解决,帮助用户高效掌握这一技能。

linux 查看网卡mac

MAC地址基础与Linux网卡概述

MAC地址是固化在网卡ROM中的物理地址,由48位二进制数组成,通常表示为6组16进制数(如00:1A:2B:3C:4D:5E),是全球唯一的硬件标识,在Linux中,网卡以网络接口的形式存在,常见的命名方式包括传统命名(如eth0、eth1)和一致性命名(如ens33、ens34),后者基于硬件拓扑结构,命名更稳定,每个网络接口(包括物理网卡、虚拟网卡、回环接口)都可能对应一个MAC地址,其中物理网卡的MAC地址是固定的,而虚拟网卡可能使用随机或手动指定的MAC地址。

命令行查看MAC地址的常用方法

Linux提供了多种命令行工具查看MAC地址,用户可根据系统环境、需求灵活选择,以下是五种最常用的方法,涵盖不同场景和工具。

使用ifconfig命令:传统且直观的查看方式

ifconfig是Linux中经典的网络配置工具,用于显示或配置网络接口信息,虽然在新版系统中逐渐被ip命令替代,但许多发行版仍默认安装或可通过包管理器获取。

命令格式

ifconfig [网络接口名]

若不指定接口名,则显示所有网络接口信息。

示例操作

ifconfig eth0

输出解读
在输出结果中,ether字段对应的即为MAC地址,

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:1a:2b:3c:4d:5e  txqueuelen 1000  (Ethernet)
        ...  

注意事项

  • 若提示command not found,需安装net-tools包(如Ubuntu/Debian:sudo apt install net-tools;CentOS/RHEL:sudo yum install net-tools)。
  • 此命令需要root权限或普通用户对/sbin/ifconfig的执行权限。

使用ip addr命令:现代Linux系统的推荐工具

ip命令是iproute2包的一部分,功能更强大且逐渐取代ifconfig,是现代Linux发行版(如Ubuntu 18.04+、CentOS 7+)的默认网络工具。

命令格式

ip addr show [网络接口名]

可简化为ip a [接口名]

示例操作

ip addr show ens33

输出解读
在输出结果中,link/ether字段对应的MAC地址,

linux 查看网卡mac

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
    ...  

优势

  • 支持更丰富的网络参数显示(如IPv4/IPv6地址、子网掩码、MTU等)。
  • 命令格式更规范,适合脚本编写。

使用ethtool命令:获取网卡硬件详细信息

ethtool用于查看和配置网卡参数,不仅能显示MAC地址,还能获取网卡速率、双工模式、驱动信息等硬件级数据。

命令格式

ethtool [网络接口名]

示例操作

ethtool eth0

输出解读
在输出结果的Permanent addressCurrent address字段中可找到MAC地址,

Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full  
    ...  
    Permanent address: 00:1a:2b:3c:4d:5e
    Current address: 00:1a:2b:3c:4d:5e
    ...  

适用场景

  • 需要排查网卡硬件问题时(如连接不稳定、速率异常)。
  • 查看网卡的“永久MAC地址”(即固化的物理地址,区别于临时修改的MAC地址)。

读取/sys/class/net/目录下的文件:底层信息的直接访问

Linux内核将网络接口信息以文件形式存储在/sys/class/net/目录下,通过读取对应接口的address文件,可直接获取MAC地址,无需额外安装工具,适合脚本自动化处理。

命令格式

cat /sys/class/net/[网络接口名]/address

示例操作

cat /sys/class/net/ens33/address

输出解读
直接输出MAC地址,无其他信息,

00:1a:2b:3c:4d:5e

注意事项

  • 输出的MAC地址为小写,且无冒号分隔(部分系统可能保留冒号,需以实际输出为准)。
  • 此方法无需root权限,但需确保用户对目录有读取权限。

使用nmcli命令:NetworkManager环境下的便捷工具

nmcli是NetworkManager的命令行工具,适用于使用NetworkManager管理网络的系统(如Ubuntu Desktop、Fedora等),可查看网络连接的详细信息,包括MAC地址。

命令格式

linux 查看网卡mac

nmcli connection show [连接名] | grep "mac-address"

或直接查看接口状态:

nmcli device show [网络接口名]

示例操作

nmcli device show ens33

输出解读
在输出结果的MAC ADDRESS字段中可找到MAC地址,

GENERAL.DEVICE:                         ens33
GENERAL.TYPE:                           ethernet
GENERAL.MAC-ADDRESS:                    00:1a:2b:3c:4d:5e
...  

适用场景

  • 使用NetworkManager管理网络,且需要关联连接配置(如静态IP、VLAN等)的场景。

不同场景下的MAC地址查看技巧

批量查看所有网卡的MAC地址

若需一次性查看系统所有网卡的MAC地址,可结合grep命令过滤输出:

  • 使用ip命令:
    ip addr show | grep -E "^[0-9]+:" -A1 | grep "link/ether" | awk '{print $2}'

    输出结果为每行一个MAC地址,对应顺序显示的接口。

  • 使用ifconfig命令:
    ifconfig -a | grep "ether" | awk '{print $2}'

查看特定类型网卡的MAC地址

  • 仅查看物理网卡:排除回环接口(lo)和虚拟接口(如docker0、virbr0):
    ip addr show | grep -v "lo:" | grep -E "^[0-9]+:" -A1 | grep "link/ether" | awk '{print $2}'
  • 查看无线网卡MAC地址:
    ip addr show wlan0 | grep "link/ether" | awk '{print $2}'

远程服务器查看MAC地址

通过SSH远程登录服务器时,可直接使用上述命令,若需快速获取,可结合ssh和管道:

ssh user@remote_server "ip addr show eth0 | grep 'link/ether' | awk '{print $2}'"

常见问题排查与解决

提示“命令未找到”

  • ifconfig未安装,可通过包管理器安装:
    # Ubuntu/Debian
    sudo apt install net-tools
    # CentOS/RHEL
    sudo yum install net-tools
  • ip命令不可用(极少数情况),安装iproute2
    sudo apt install iproute2  # Ubuntu/Debian
    sudo yum install iproute  # CentOS/RHEL

MAC地址显示为00:00:00:00:00:00或无效值

可能原因及解决方法:

  • 网卡未启用:使用ifup [接口名]ip link set [接口名] up启用网卡。
  • 驱动问题:检查驱动是否加载正常(lsmod | grep [驱动名]),尝试重新加载驱动(modprobe [驱动名])。
  • 虚拟网卡:部分虚拟网卡(如Docker默认网桥)可能使用随机MAC,需检查容器或虚拟机配置。

MAC地址被修改(非预期情况)

若发现MAC地址与硬件固化的地址不符,可能是手动修改或软件配置导致:

  • 使用ethtool查看“Permanent address”确认原始MAC地址。
  • 检查是否有网络配置工具(如NetworkManager、ifcfg文件)设置了MAC地址克隆。

进阶:自动化脚本与批量处理

通过编写简单脚本,可批量查看多台服务器或多个网卡的MAC地址,提高运维效率,以下脚本可遍历所有网卡并输出接口名与MAC地址:

#!/bin/bash
echo "Interface Name\tMAC Address"
echo "--------------------------------"
for interface in /sys/class/net/*; do
    iface_name=$(basename "$interface")
    mac=$(cat "$interface/address" 2>/dev/null)
    if [ -n "$mac" ]; then
        echo -e "$iface_name\t\t$mac"
    fi
done

保存为show_mac.sh,赋予执行权限(chmod +x show_mac.sh)后运行,即可输出格式化的结果。

在Linux系统中查看网卡MAC地址是网络管理的基础技能,本文从ifconfigip addrethtool/sys/class/net/nmcli,详细介绍了五种常用方法,并覆盖了批量查看、远程操作、问题排查等场景,用户可根据实际需求选择合适的工具,结合脚本实现自动化处理,从而高效完成网络配置与故障排查任务,掌握这些方法,不仅能提升Linux操作能力,还能为后续的网络管理打下坚实基础。

赞(0)
未经允许不得转载:好主机测评网 » linux 查看网卡mac