Linux查看和修改MAC地址的方法大全

 更新时间:2025年10月10日 10:19:10   作者:ding_zhikai  
MAC地址是网络设备(如网卡、无线网卡等)的唯一识别标识,在Linux系统中,我们可以通过修改MAC地址来实现一些网络方面的需求,比如伪装成其他设备,实现身份隐藏等,本文将介绍在Linux系统下如何查看和修改MAC地址,需要的朋友可以参考下

1. 查看MAC地址

1.1 三个常用命令

  • 命令
ifconfig
ip link show
cat /sys/class/net/eth0/address
  • ifconfig 显示的内容举例
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a00:27ff:fe00:1  prefixlen 64  scopeid 0x20<link>
        ether 00:1a:2b:3c:4d:5e  txqueuelen 1000  (Ethernet)
        RX packets 12345  bytes 12345678 (11.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12345  bytes 12345678 (11.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

1.2 关于 ifconfig 显示的字段的含义

1.2.1 网络端口的名称

  • eth0 、 eth1 (Ethernet Interfaces)
    eth0 、 eth1 等是传统的以太网接口名称。这些名称通常用于表示物理以太网卡。 eth0 通常表示系统中的第一个以太网卡, eth1 表示第二个以太网卡,依此类推。
  • lo 环回接口(Loopback Interface)
    lo 是环回接口(Loopback Interface)的简称。它是一个虚拟网络接口,用于在本机内部进行网络通信。
  • wlan0 、 wlan1 (Wireless Interfaces)
    wlan0 、 wlan1 等是无线网络接口名称。这些名称通常用于表示无线网卡。 wlan0 通常表示系统中的第一个无线网卡, wlan1 表示第二个无线网卡,依此类推。
  • ens33 、 ens34 等(Predictable Network Interface Names)
    从较新的Linux发行版(如Ubuntu 16.04及更高版本)开始,网络接口名称可能采用更可预测的命名方式。这种命名方式旨在解决传统命名方式(如 eth0 、 eth1 )在某些情况下可能会导致接口名称变化的问题。例如, ens33 、 ens34 等名称是基于设备的物理位置和硬件特性生成的。

1.2.2 mtu (Maximum Transmission Unit)

  • 含义
    mtu 表示最大传输单元(Maximum Transmission Unit),是指在网络层上能够通过该接口传输的最大数据包大小(以字节为单位)。它决定了单个网络数据包可以携带的最大数据量。
  • 作用
    如果数据包的大小超过MTU,数据包会被分片(分割成多个较小的数据包)发送。合适的MTU值可以提高网络传输效率,避免不必要的分片和重组。
  • 示例
    在上面的例子中, mtu 1500 表示该接口的最大传输单元为1500字节。

1.2.3 inet (Internet Address)

  • 含义
    inet 表示该接口的IPv4地址。这是接口在IPv4网络中的IP地址。
  • 作用
    用于标识设备在网络中的位置,允许设备在IPv4网络中进行通信。
  • 示例
    在上面的例子中, inet 192.168.1.100 表示该接口的IPv4地址为 192.168.1.100 。

1.2.4 netmask(Network Mask)

  • 含义
    netmask 表示子网掩码(Network Mask)。子网掩码用于区分IP地址中的网络部分和主机部分。
  • 作用
    子网掩码帮助设备确定哪些IP地址属于同一个子网,哪些属于不同的子网。这在路由决策中非常重要。
  • 示例
    在上面的例子中, netmask 255.255.255.0 表示子网掩码为 255.255.255.0 。这意味着该接口所在的子网是 192.168.1.0/24 ,其中 192.168.1.0 是子网的网络地址, 255.255.255.0 表示子网掩码。

1.2.5 broadcast (Broadcast Address)

  • 含义
    broadcast 表示广播地址(Broadcast Address)。广播地址用于将数据包发送到子网中的所有设备。
  • 作用
    当设备需要向子网中的所有设备发送数据时,它会使用广播地址。例如,ARP(地址解析协议)请求通常会发送到广播地址。
  • 示例
    在上面的例子中, broadcast 192.168.1.255 表示该接口的广播地址为 192.168.1.255 。这意味着任何发送到 192.168.1.255 的数据包都会被子网中的所有设备接收。

1.2.6 ether (Ethernet Address)

  • 含义
    ether 表示该接口的以太网地址,也就是MAC地址(Media Access Control Address)。MAC地址是网络接口的唯一标识符,用于在局域网中识别设备。
  • 作用
    MAC地址用于在以太网(Ethernet)层进行设备之间的通信。每个网络接口都有一个唯一的MAC地址,用于在物理网络中区分不同的设备。
  • 示例
    在上面的例子中, ether 00:1a:2b:3c:4d:5e 表示该接口的MAC地址为 00:1a:2b:3c:4d:5e 。

1.2.7 txqueuelen (Transmit Queue Length)

  • 含义
    txqueuelen 表示传输队列长度(Transmit Queue Length)。这是网络接口的传输队列可以容纳的最大数据包数量。
  • 作用
    当网络接口的数据包发送速度超过网络的实际传输速度时,数据包会被暂存到传输队列中。 txqueuelen 值决定了队列的大小,较大的队列可以容纳更多的数据包,但可能会增加延迟。
  • 示例
    在上面的例子中, txqueuelen 1000 表示该接口的传输队列长度为1000。

1.2.8 其他字段

  • flags
    • 含义:flags表示网络接口的状态标志。
    • 示例:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>表示该接口处于以下状态:
      • UP:接口已启用。
      • BROADCAST:接口支持广播。
      • RUNNING:接口正在运行。
      • MULTICAST:接口支持多播。
  • inet6
    • 含义:inet6表示该接口的IPv6地址。
    • 示例:inet6 fe80::a00:27ff:fe00:1表示该接口的IPv6地址为fe80::a00:27ff:fe00:1
  • prefixlen
    • 含义:prefixlen表示IPv6地址的前缀长度。
    • 示例:prefixlen 64表示IPv6地址的前缀长度为64位。
  • scopeid
    • 含义:scopeid表示IPv6地址的作用范围。
    • 示例:scopeid 0x20<link>表示该IPv6地址的作用范围是链路本地(Link-local)。
  • RX packets
    • 含义:RX packets表示接收的数据包数量。
    • 示例:RX packets 12345表示该接口接收了12345个数据包。
  • RX bytes
    • 含义:RX bytes表示接收的数据量(以字节为单位)。
    • 示例:RX bytes 12345678 (11.7 MiB)表示该接口接收了12345678字节的数据,相当于11.7 MiB。
  • RX errors
    • 含义:RX errors表示接收过程中发生的错误数量。
    • 示例:RX errors 0表示没有接收错误。
  • RX dropped
    • 含义:RX dropped表示接收过程中被丢弃的数据包数量。
    • 示例:RX dropped 0表示没有数据包被丢弃。
  • RX overruns
    • 含义:RX overruns表示接收队列溢出的次数。
    • 示例:RX overruns 0表示没有接收队列溢出。
  • RX frame
    • 含义:RX frame表示接收过程中帧对齐错误的数量。
    • 示例:RX frame 0表示没有帧对齐错误。
  • TX packets
    • 含义:TX packets表示发送的数据包数量。
    • 示例:TX packets 12345表示该接口发送了12345个数据包。
  • TX bytes
    • 含义:TX bytes表示发送的数据量(以字节为单位)。
    • 示例:TX bytes 12345678 (11.7 MiB)表示该接口发送了12345678字节的数据,相当于11.7 MiB。
  • TX errors
    • 含义:TX errors表示发送过程中发生的错误数量。
    • 示例:TX errors 0表示没有发送错误。
  • TX dropped
    • 含义:TX dropped表示发送过程中被丢弃的数据包数量。
    • 示例:TX dropped 0表示没有数据包被丢弃。
  • TX overruns
    • 含义:TX overruns表示发送队列溢出的次数。
    • 示例:TX overruns 0表示没有发送队列溢出。
  • TX carrier
    • 含义:TX carrier表示发送过程中检测到的载波丢失次数。
    • 示例:TX carrier 0表示没有载波丢失。
  • TX collisions
    • 含义:TX collisions表示发送过程中发生的碰撞次数。
    • 示例:TX collisions 0表示没有碰撞。

2. 修改 MAC 地址

2.1 方法一:使用ifconfig命令

ifconfig是一个传统的网络配置工具,适用于较旧版本的Linux系统。以下是使用ifconfig命令修改MAC地址的步骤:

  1. 查看当前MAC地址
    • 首先,查看当前网络接口的MAC地址:
     ifconfig eth0
  1. 关闭网络接口
    • 在修改MAC地址之前,需要先关闭网络接口:
     sudo ifconfig eth0 down
  1. 修改MAC地址
    • 使用ifconfig命令修改MAC地址:
     sudo ifconfig eth0 hw ether 00:1A:2B:3C:4D:5F
 其中`00:1A:2B:3C:4D:5F`是新的MAC地址,你可以根据需要替换为其他有效的MAC地址。
  1. 启用网络接口
    • 修改完成后,重新启用网络接口:
     sudo ifconfig eth0 up
  1. 验证修改结果
    • 再次使用ifconfig命令查看网络接口的MAC地址,确认修改是否成功:
     ifconfig eth0
 如果修改成功,输出中的`HWaddr`应该显示为新的MAC地址。

2.2 方法二:使用ip命令

ip命令是一个更现代的网络配置工具,适用于较新版本的Linux系统。以下是使用ip命令修改MAC地址的步骤:

  1. 查看当前MAC地址
    • 首先,查看当前网络接口的MAC地址:
     ip link show eth0
 输出中`link/ether`后面的部分就是当前的MAC地址。
  1. 关闭网络接口
    • 在修改MAC地址之前,需要先关闭网络接口:
     sudo ip link set eth0 down
  1. 修改MAC地址
    • 使用ip命令修改MAC地址:
     sudo ip link set eth0 address 00:1A:2B:3C:4D:5F
 其中`00:1A:2B:3C:4D:5F`是新的MAC地址,你可以根据需要替换为其他有效的MAC地址。
  1. 启用网络接口
    • 修改完成后,重新启用网络接口:
     sudo ip link set eth0 up
  1. 验证修改结果
    • 再次使用ip命令查看网络接口的MAC地址,确认修改是否成功:
     ip link show eth0
 如果修改成功,输出中的`link/ether`应该显示为新的MAC地址。

2.3 方法三:通过修改网络配置文件(适用于需要永久修改的情况)

如果你希望修改后的MAC地址在系统重启后仍然有效,可以通过修改网络配置文件来实现。以下是基于不同Linux发行版的步骤:

对于基于Debian的系统(如Ubuntu)

  1. 编辑网络配置文件
    • 编辑/etc/network/interfaces文件:
     sudo nano /etc/network/interfaces
  1. 添加或修改hwaddress
    • 在对应的网络接口配置部分添加或修改hwaddress行:
     iface eth0 inet dhcp
         hwaddress ether 00:1A:2B:3C:4D:5F
  1. 重启网络服务
    • 重启网络服务以使配置生效:
     sudo /etc/init.d/networking restart

对于基于Red Hat的系统(如CentOS)

  1. 编辑网络配置文件
    • 编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件:
     sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
  1. 添加或修改HWADDR
    • 在文件中添加或修改HWADDR行:
     HWADDR=00:1A:2B:3C:4D:5F
  1. 重启网络服务
    • 重启网络服务以使配置生效:
     sudo systemctl restart network

注意事项

  • 选择合适的MAC地址:确保你选择的MAC地址是有效的,并且不会与网络中的其他设备冲突。
  • 网络连接中断:修改MAC地址可能会导致网络连接暂时中断,因此建议在修改前确保重要数据已经保存。
  • 系统重启后生效:如果你通过修改配置文件来设置MAC地址,需要重启网络服务或系统才能使更改生效。
  • 权限问题:修改网络接口的MAC地址通常需要管理员权限,因此需要使用sudo来执行相关命令。

通过以上方法,你可以修改Linux系统中的MAC地址。

以上就是Linux查看和修改MAC地址的方法大全的详细内容,更多关于Linux查看和修改MAC地址的资料请关注脚本之家其它相关文章!

相关文章

  • 系统讲解Apache Kafka消息管理与异常处理的最佳实践

    系统讲解Apache Kafka消息管理与异常处理的最佳实践

    Apache Kafka 作为分布式流处理平台的核心组件,广泛应用于实时数据管道、日志聚合和事件驱动架构,下面我们就来系统讲解 Kafka 消息管理与异常处理的最佳实践吧
    2025-04-04
  • linux NFS 学习笔记

    linux NFS 学习笔记

    通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件
    2014-07-07
  • Centos6 网络配置的实例详解

    Centos6 网络配置的实例详解

    这篇文章主要介绍了Centos6 网络配置的实例详解的相关资料,希望通过本文大家能够掌握配置网络的知识,需要的朋友可以参考下
    2017-09-09
  • Linux通用java程序启动脚本代码实例

    Linux通用java程序启动脚本代码实例

    这篇文章主要介绍了Linux通用java程序启动脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 解决SSH连接超时的2个配置方法

    解决SSH连接超时的2个配置方法

    用SSH客户端连接linux服务器时,经常会出现与服务器会话连接中断现象,照成这个问题的原因便是SSH服务有自己独特的会话连接机制。
    2014-04-04
  • centos7云主机系统下挂载磁盘的方法

    centos7云主机系统下挂载磁盘的方法

    本篇文章主要介绍了centos7云主机系统下挂载磁盘的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Apache Airflow 快速入门教程应用场景分析

    Apache Airflow 快速入门教程应用场景分析

    ApacheAirflow是一个用于编排、调度和监控工作流的开源平台,适用于ETL和MLOps用例,它通过有向无环图(DAG)定义管道,支持任务依赖关系、调度、错误处理和日志记录,本文介绍Apache Airflow 快速入门教程,感兴趣的朋友一起看看吧
    2024-12-12
  • linxu服务器上nginx启动、关闭、配置检查命令(推荐)

    linxu服务器上nginx启动、关闭、配置检查命令(推荐)

    这篇文章主要介绍了linxu服务器上nginx启动、关闭、配置检查命令,文章内容比较简单,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • Linux运维基础httpd静态网页教程

    Linux运维基础httpd静态网页教程

    这篇文章主要介绍了Linux运维基础中怎样制作httpd静态网页,附含源码及图片示例,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝进步
    2021-09-09
  • Linux系统文件的默认权限和特殊权限

    Linux系统文件的默认权限和特殊权限

    这篇文章主要介绍了Linux系统文件的默认权限和特殊权限的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10

最新评论