在Linux系统中如何查看网卡的MAC地址?常用命令方法有哪些?

在Linux系统中,MAC地址(Media Access Control Address)是网卡的物理地址,由6组16进制数组成(如00:1A:2B:3C:4D:5E),用于在局域网中唯一标识网络设备,查看MAC地址是网络管理、故障排查和安全配置的常见需求,本文将详细介绍多种查看Linux网卡MAC地址的方法,涵盖命令行工具、系统文件、图形界面及专业硬件检测工具,并总结不同方法的适用场景与注意事项。

如何查看linux的网卡mac地址查询

使用ifconfig命令查看MAC地址

ifconfig是传统的网络配置工具,属于net-tools包,通过它可以快速查看网卡的MAC地址。

操作步骤:

  1. 安装net-tools(若系统未预装):

    • 基于Debian/Ubuntu的系统:sudo apt install net-tools
    • 基于RHEL/CentOS的系统:sudo yum install net-tools
  2. 查看所有网卡的MAC地址:
    执行命令:ifconfig
    输出结果中,每个网卡信息段的ether字段即为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 1000  bytes 150000 (150.0 KB)  
          TX packets 800  bytes 120000 (120.0 KB)  
  3. 查看指定网卡的MAC地址:
    若只想查看特定网卡(如eth0),使用:ifconfig eth0,直接定位ether字段。

注意事项:

  • 部分新Linux发行版(如Ubuntu 20.04+)默认未安装net-tools,需先安装;
  • ifconfig命令已被iproute2包中的ip命令取代,但ifconfig仍因直观性被广泛使用。

使用ip命令查看MAC地址

ip命令是iproute2包的核心工具,现代Linux系统推荐使用,功能更全面且稳定。

操作步骤:

  1. 查看所有网卡的MAC地址:
    执行命令:ip link show
    输出结果中,每块网卡信息段的link/ether字段即为MAC地址,

    2: eth0: <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  
        inet 192.168.1.100/24 scope global eth0  
           valid_lft forever preferred_lft forever  
  2. 查看指定网卡的MAC地址:
    使用ip link show [网卡名],如:ip link show eth0,直接提取link/ether字段。

优势:

  • 无需额外安装(现代系统默认集成);
  • 支持更丰富的网络参数查看(如MTU、队列状态等)。

通过ethtool查看MAC地址

ethtool是用于查询和配置网卡参数的工具,可查看网卡的“永久MAC地址”(Physical Address)。

操作步骤:

  1. 安装ethtool(若未安装):

    如何查看linux的网卡mac地址查询

    • Debian/Ubuntu:sudo apt install ethtool
    • RHEL/CentOS:sudo yum install ethtool
  2. 查看指定网卡的永久MAC地址:
    执行命令:ethtool -P [网卡名],ethtool -P eth0
    输出结果:Permanent address: 00:1A:2B:3C:4D:5E

  3. 查看网卡的完整信息(含MAC地址):
    使用ethtool [网卡名],在输出中找到Permanent address或Current MAC address字段。

适用场景:

  • 需要确认网卡的“固化MAC地址”(如物理标签上的地址);
  • 部分离线网卡或特殊硬件需通过ethtool获取准确信息。

读取系统文件查看MAC地址

Linux内核会将网卡信息存储在/sys/class/net/目录下,通过直接读取文件可获取MAC地址,适合脚本编程。

操作步骤:

  1. 进入网卡目录:
    例如查看eth0的MAC地址,执行:cd /sys/class/net/eth0/

  2. 读取address文件:
    执行命令:cat address
    输出即为MAC地址(小写无冒号,如001a2b3c4d5e),可通过tr格式化:cat address | tr -d ':' | tr 'a-z' 'A-Z'

特点:

  • 无需额外工具,所有Linux系统均支持;
  • 输出为纯文本,便于脚本处理(如批量获取多网卡MAC地址)。

使用nmcli查看MAC地址(NetworkManager环境)

若系统使用NetworkManager管理网络(如桌面版Linux),可通过nmcli命令查看MAC地址。

操作步骤:

  1. 查看所有网卡的MAC地址:
    执行命令:nmcli device status
    输出结果中MAC地址列即为对应网卡的MAC地址,

    DEVICE  TYPE      STATE         CONNECTION  
    eth0    ethernet  connected     eth0  
    MAC地址: 00:1A:2B:3C:4D:5E  
  2. 查看指定网卡的详细信息:
    使用nmcli device show [网卡名],nmcli device show eth0,在输出中查找GENERAL.HWADDR字段。

适用场景:

  • 使用NetworkManager的桌面系统(如Ubuntu、Fedora Workstation);
  • 需结合网络连接配置信息(如IP、DNS)一起查看时。

使用lshw查看硬件级MAC地址

lshw是一款硬件信息检测工具,可查看网卡的物理详细信息,包括MAC地址、厂商、型号等。

如何查看linux的网卡mac地址查询

操作步骤:

  1. 安装lshw:

    • Debian/Ubuntu:sudo apt install lshw
    • RHEL/CentOS:sudo yum install lshw
  2. 查看网卡硬件信息:
    执行命令:lshw -C network
    输出结果中,网卡(如*-network)下的serial:字段即为MAC地址,

    *-network:0  
         description: Ethernet interface  
         product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller  
         vendor: Realtek Semiconductor Co., Ltd.  
         physical id: 0.0.0  
         bus info: pci@0000:02:00.0  
         logical name: eth0  
         version: 06  
         serial: 00:1A:2B:3C:4D:5E  

优势:

  • 可获取网卡的硬件厂商、型号等详细信息;
  • 适用于排查硬件兼容性问题。

图形界面查看MAC地址

对于不习惯命令行的用户,可通过Linux桌面环境的网络设置界面查看MAC地址。

操作步骤(以GNOME为例):

  1. 点击右上角网络图标 → “有线设置”或“Wi-Fi设置”;
  2. 选择对应网络连接(如“以太网”);
  3. 点击“齿轮图标”进入详情页,在“硬件地址”或“MAC地址”字段查看。

其他桌面环境:

  • KDE Plasma:“系统设置”→“连接”→选中网卡→“详细信息”中的“MAC地址”;
  • XFCE:“设置”→“网络”→选中网卡→“编辑”→“MAC地址”。

不同方法对比与总结

为方便选择,以下表格总结各方法的适用场景与特点:

方法 命令/操作示例 适用系统/环境 权限要求 优点 缺点
ifconfig ifconfig eth0 安装net-tools的系统 root/普通 简单直观,传统工具 新系统默认不安装
ip ip link show eth0 现代Linux发行版 root/普通 新版推荐,信息全面 输出稍复杂
ethtool ethtool -P eth0 支持ethtool的网卡 root 可查永久MAC,支持详细网卡 部分离线网卡不支持
/sys/class/net/ cat /sys/class/net/eth0/address 所有Linux系统 普通 适合脚本,无依赖 仅显示当前MAC,无额外信息
nmcli nmcli device show eth0 NetworkManager环境 普通 结合网络配置信息 依赖NetworkManager服务
lshw lshw -C network 需安装lshw的系统 root 硬件信息全面 输出信息量大,需过滤
图形界面 网络设置→硬件地址 桌面版Linux 普通 无需命令,适合新手 依赖图形环境

注意事项

  1. 指定网卡名:若系统有多网卡(如eth0、ens33、wlan0),需明确指定网卡名,避免混淆,可通过ip link或ls /sys/class/net/查看所有网卡名称。
  2. MAC地址随机化:Linux内核3.2以上支持MAC地址随机化(保护隐私),此时通过ip link看到的MAC地址可能是临时地址,永久地址需通过ethtool -P查看。
  3. 虚拟网卡:虚拟机(如VMware、KVM)或容器(Docker)会生成虚拟网卡(如docker0、vethXXX),其MAC地址为虚拟生成,与物理网卡无关。
  4. 权限问题:部分命令(如ifconfig、ethtool、lshw)需root权限执行,可通过sudo提升权限。

相关问答FAQs

Q1:为什么我查到的MAC地址和物理网卡标签上的不一致?
A:可能原因包括:① MAC地址随机化:Linux内核启用了隐私保护功能,临时使用随机MAC地址,可通过sysctl -w net.ipv6.conf.all.use_tempaddr=0关闭(需root);② 虚拟化环境:虚拟机或容器的虚拟网卡MAC地址为动态生成,与物理网卡无关;③ 多网卡绑定:若配置了网卡绑定(如bonding),绑定的虚拟网卡MAC地址可能与物理网卡不同;④ 网卡厂商设置:部分企业级网卡支持虚拟化功能(如SR-IOV),会分配不同的MAC地址。

Q2:如何永久修改Linux网卡的MAC地址?
A:修改MAC地址需root权限,常见方法有两种:

  1. 修改网络配置文件(适用于传统网络管理):
    • Debian/Ubuntu:编辑/etc/network/interfaces,在网卡配置中添加hwaddress ether [新MAC地址],如hwaddress ether 00:11:22:33:44:55,重启网络或系统生效。
    • RHEL/CentOS:编辑/etc/sysconfig/network-scripts/ifcfg-eth0,添加MACADDR=[新MAC地址],重启网络服务(systemctl restart network)。
  2. 使用udev规则(推荐):
    创建udev规则文件:sudo nano /etc/udev/rules.d/10-mac-address.rulesSUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="[原MAC地址]", ATTR{address}="[新MAC地址]",保存后执行sudo udevadm control --reload-rules && sudo udevadm trigger,重启系统生效。

注意:修改MAC地址可能导致网络连接异常,建议仅在必要时操作(如网络管理需求),并确保新MAC地址不与其他设备冲突。

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

赞 (0)
酷番叔酷番叔
上一篇 2025年9月20日 23:42
下一篇 2025年9月21日 00:07

相关推荐

  • CPU支持虚拟化吗?一键检测

    基础硬件准备(性能基石)CPU必须支持虚拟化技术(Intel VT-x / AMD-V),在BIOS/UEFI中启用,建议≥4核处理器(如Intel i5/Ryzen 5以上),多核心分配虚拟机更高效,内存 宿主机内存≥8GB,为虚拟机分配≥4GB(如运行Android 10+),存储使用SSD:比HDD提速5……

    2025年7月25日
    32400
  • 为何必须更新软件源?

    为什么需要升级 Linux 内核?升级内核可获取新硬件支持、安全补丁、性能优化及功能改进(如文件系统增强、虚拟化升级),但生产环境需谨慎:务必提前备份数据,避免不兼容导致系统崩溃,检查当前内核版本uname -r # 示例输出:5.4.0-150-generic主流发行版升级方法(推荐)▶ Ubuntu/Deb……

    2025年7月19日
    25700
  • Linux系统如何设置锁屏时间与自动唤醒时间?

    在Linux系统中,合理设置锁屏时间和系统时间既能保障数据安全,又能避免因时间偏差导致的服务异常,本文将详细介绍不同Linux发行版下锁屏时间和系统时间的设置方法,涵盖图形界面与命令行两种操作方式,帮助用户根据实际需求灵活选择,Linux锁屏时间设置锁屏功能可防止未授权访问系统,设置合理的锁屏时间是安全管理的基……

    2025年9月22日
    24700
  • Linux下如何高效解析JSON数据?

    专用工具:jq(推荐首选)jq 是专为JSON设计的轻量级命令行处理器,支持过滤、转换和格式化,安装方法:sudo apt install jq # Debian/Ubuntusudo yum install jq # CentOS/RHEL常用操作示例:提取字段值(如解析data.json中的name字段……

    2025年6月28日
    29900
  • linux如何输出

    Linux中,可使用echo [内容]命令将信息输出到终端,也可重定向输出到文件,如`echo “test” ˃ file.

    2025年8月13日
    21900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信