Linux如何查询MAC地址?

在Linux系统中,MAC地址(Media Access Control Address)是网卡的物理地址,用于在网络中唯一标识网络接口设备,查询MAC地址是网络配置、故障排查、安全审计等场景中的常见操作,Linux提供了多种命令和工具来查询MAC地址,本文将详细介绍这些方法,包括它们的适用场景、具体用法及示例输出,帮助用户根据实际需求选择合适的查询方式。

linux如何查询mac地址

使用ifconfig命令查询MAC地址

ifconfig是传统的网络配置工具,属于net-tools软件包,通过它可以查看和配置网络接口信息,包括MAC地址。

基本语法

ifconfig [网络接口名称]

若不指定接口名称,则显示所有已启用网络接口的信息。

示例操作

假设要查询以太网接口eth0的MAC地址,执行:

ifconfig eth0

输出结果中,HWaddrether字段后的值即为MAC地址,

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:1a:2b:3c:4d:5e  txqueuelen 1000  (Ethernet)
        RX packets 12345  bytes 1234567 (1.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6789  bytes 654321 (638.9 KiB)
        TX errors 0  dropped 0  overruns 0  carrier 0  collisions 0

其中ether 00:1a:2b:3c:4d:5e即为eth0的MAC地址。

注意事项

  • 部分Linux发行版(如Ubuntu 18.04+、CentOS 7+)默认未安装net-tools,需手动安装:
    sudo apt install net-tools  # Debian/Ubuntu
    sudo yum install net-tools  # RHEL/CentOS
  • ifconfig命令逐渐被ip命令取代,建议优先使用ip命令(后文介绍)。

使用ip命令查询MAC地址

ip命令是iproute2软件包的核心工具,功能更强大且高效,是现代Linux系统中推荐的网络配置工具。

基本语法

ip link show [网络接口名称]
# 或简写为
ip a [网络接口名称]

不指定接口名称时,显示所有网络接口的详细信息。

示例操作

查询eth0接口的MAC地址:

ip link show eth0

输出结果中,link/ether字段后的值即为MAC地址:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::21a:2bff:fe3c:4d5e/64 scope link 
       valid_lft forever preferred_lft forever

若需快速提取MAC地址,可结合grepawk命令:

ip link show eth0 | grep -o 'link/ether [^ ]*' | awk '{print $2}'

适用场景

  • 支持更多网络接口类型(如VLAN、Bonding等),输出信息更结构化。
  • 可直接查看接口状态(如UP/DOWN)、MTU值等,无需额外命令。

通过/sys/class/net/目录查询MAC地址

Linux系统将网络设备信息暴露在/sys/class/net/目录下,每个子目录对应一个网络接口,其中address文件存储了该接口的MAC地址。

linux如何查询mac地址

基本语法

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

示例操作

查询eth0的MAC地址:

cat /sys/class/net/eth0/address

输出结果为:

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

适用场景

  • 适用于脚本编程,无需调用外部命令,直接读取文件即可获取MAC地址,效率较高。
  • 可批量查询所有接口的MAC地址,
    for interface in /sys/class/net/*; do
        echo "$(basename $interface): $(cat $interface/address)"
    done

使用ethtool工具查询MAC地址

ethtool是一个用于查询和配置网卡参数的工具,可获取网卡的详细信息,包括MAC地址、速率、双工模式等。

基本语法

ethtool -P [网络接口名称]  # 查询永久MAC地址
ethtool [网络接口名称]      # 查询当前MAC地址(包含详细信息)

示例操作

查询eth0的永久MAC地址:

ethtool -P eth0

输出结果为:

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

注意事项

  • 部分系统默认未安装ethtool,需手动安装:
    sudo apt install ethtool  # Debian/Ubuntu
    sudo yum install ethtool  # RHEL/CentOS
  • 永久MAC地址是网卡的物理地址,通常不可修改,而当前MAC地址可能通过软件临时更改。

使用arp命令查询局域网内设备的MAC地址

arp命令用于查看和管理系统的ARP(地址解析协议)缓存,记录了局域网内IP地址与MAC地址的映射关系,可用于查询其他设备的MAC地址。

基本语法

arp -a [IP地址]  # 查询指定IP对应的MAC地址
arp -n           # 以数字形式显示,避免域名解析

示例操作

查询局域网内IP地址168.1.1对应的MAC地址:

arp -a 192.168.1.1

输出结果为:

? (192.168.1.1) at 00:11:22:33:44:55 [ether] on eth0

其中00:11:22:33:44:55即为目标设备的MAC地址。

适用场景

  • 适用于排查局域网内设备连通性问题,或识别未知设备。
  • 需目标设备与当前主机处于同一网段且已通信(ARP缓存条目存在)。

使用硬件信息工具查询MAC地址

lshw工具

lshw(List Hardware)是一款硬件信息查看工具,可显示详细的硬件配置,包括网卡的MAC地址。

基本语法

sudo lshw -C network

示例输出

*-network:0
     description: Ethernet interface
     product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
     vendor: Realtek Semiconductor Co., Ltd.
     physical id: 0.0.0.0
     bus info: pci@0000:02:00.0
     logical name: eth0
     version: 06
     serial: 00:1a:2b:3c:4d:5e
     size: 1Gbit/s
     capacity: 1Gbit/s
     width: 64 bits
     clock: 33MHz
     capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
     configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3lk-NAPI duplex=full ip=192.168.1.100 latency=0 link=yes multicast=yes speed=1Gbit/s
     resources: irq:41 ioport:3000(size=256) memory:dfffc000-dfffffff memory:fe200000-fe203fff

其中serial:字段即为MAC地址。

linux如何查询mac地址

dmidecode工具

dmidecode用于读取DMI(Desktop Management Interface)表中的硬件信息,通常需要root权限。

基本语法

sudo dmidecode -s baseboard-serial-number  # 部分主板将MAC地址存储在序列号中

注意事项

  • 输出结果可能不直接包含MAC地址,需结合lshwip命令确认。
  • 不同主板的DMI表结构可能不同,需根据实际输出判断。

查询MAC地址的方法对比

为方便用户快速选择合适的方法,以下是常用查询方式的对比:

命令/工具 适用场景 是否需安装额外工具 输出特点 示例命令
ifconfig 传统网络配置,查看所有接口信息 是(net-tools) 显示HWaddr/ether字段 ifconfig eth0
ip link show 现代Linux推荐,结构化输出 否(默认安装) 显示link/ether字段 ip link show eth0
/sys/class/net/ 脚本编程,批量查询 否(默认安装) 直接输出MAC地址,无冗余信息 cat /sys/class/net/eth0/address
ethtool -P 查询网卡永久MAC地址 是(ethtool) 显示Permanent address字段 ethtool -P eth0
arp -a 查询局域网内其他设备的MAC地址 否(默认安装) 显示IP与MAC的映射关系 arp -a 192.168.1.1
lshw 查看硬件详细信息,含MAC地址 是(lshw) 输出完整硬件配置,需过滤字段 sudo lshw -C network

特殊场景处理

查询所有网卡的MAC地址

结合ipawk命令,可一次性输出所有接口的MAC地址:

ip link show | grep -E '^[0-9]+:' -A1 | grep ether | awk '{print $2}'

虚拟机MAC地址查询

虚拟机(如VirtualBox、VMware)的MAC地址可通过虚拟机管理器查看,也可通过Linux命令查询:

ip link show | grep -E '^(2|3):'  # 虚拟网卡通常为eth1、ens33等

过滤特定状态的接口

仅查询已启用接口的MAC地址:

ip link show | grep 'state UP' -A1 | grep ether | awk '{print $2}'

相关问答FAQs

问题1:为什么执行ifconfigip link时,某些网卡的MAC地址显示为“00:00:00:00:00:00”?
解答:出现这种情况通常有以下原因:

  • 网卡未启用:可通过sudo ip link set [接口名] up启用接口;
  • 驱动未正确加载:检查dmesg | grep [接口名]查看驱动加载日志,或尝试重新加载驱动(如sudo modprobe [驱动名]);
  • 虚拟网卡配置错误:在虚拟机管理器中检查网卡模式(如NAT、桥接)是否正确;
  • 硬件故障:更换网卡或主板后仍无法解决,可能是硬件损坏。

问题2:如何永久修改Linux系统的MAC地址?
解答:永久修改MAC地址需根据网络管理工具选择方法,以Ubuntu(NetworkManager)和CentOS(NetworkScripts)为例:

  • Ubuntu(NetworkManager)

    1. 编辑网络连接配置文件:
      sudo nano /etc/NetworkManager/systemconnections/[连接名].nmconnection
    2. [ethernet]部分添加mac-address=新的MAC地址(如mac-address=00:11:22:33:44:55);
    3. 重启NetworkManager服务:
      sudo systemctl restart NetworkManager
  • CentOS(NetworkScripts)

    1. 编辑ifcfg-eth0文件:
      sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
    2. 添加或修改HWADDR=新的MAC地址
    3. 重启网络服务:
      sudo systemctl restart network

注意:修改MAC地址可能导致网络策略冲突,建议在测试环境验证后再操作。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/23995.html

(0)
酷番叔酷番叔
上一篇 2小时前
下一篇 2小时前

相关推荐

  • 针对Linux系统,攻击者如何利用漏洞?入侵手段与防范方法有哪些?

    Linux系统因其稳定性、灵活性和开源特性,被广泛应用于服务器、嵌入式设备及桌面环境,但同时也成为攻击者的目标,攻击Linux系统通常涉及多个阶段,从信息收集到权限维持,每个环节都可能利用系统配置漏洞、软件缺陷或用户行为疏忽,本文将从攻击者的视角拆解常见攻击路径,并重点阐述防御策略,帮助理解系统安全防护的核心逻……

    2025年8月26日
    1600
  • Linux能运行exe程序吗?

    使用Wine(推荐)原理:Wine(Wine Is Not an Emulator)是一个兼容层,通过转换Windows API调用为Linux可执行指令来运行.exe文件,无需安装Windows系统,步骤:安装WineUbuntu/Debian系: sudo apt update && sud……

    2025年8月7日
    2100
  • Linux如何获取图片?

    在Linux系统中,获取图片的方式多种多样,涵盖命令行工具、图形界面操作、网络下载及设备导入等场景,无论是日常截图、从网络获取资源,还是连接相机/扫描仪导入图片,Linux都能提供灵活高效的解决方案,以下从不同场景详细介绍具体操作方法,命令行工具截图获取Linux命令行下有多种轻量级截图工具,适合快速捕获屏幕或……

    10分钟前
    000
  • linux系统如何配置网络

    Linux 系统中,可通过修改网络配置文件、使用命令行工具(如 ifconfig、ip)

    2025年8月17日
    1300
  • 如何刻录光盘安装linux

    刻录软件,如 Nero,将 Linux 镜像文件载入,选择刻录到光盘,设置

    2025年8月18日
    1300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信