0

0

Linux如何查看网络接口的MAC地址

P粉602998670

P粉602998670

发布时间:2025-09-17 19:11:01

|

1304人浏览过

|

来源于php中文网

原创

在Linux中查看MAC地址可通过ip a或ifconfig命令,也可读取/sys/class/net/接口名/address文件获取;MAC地址是网络设备的唯一硬件标识,用于局域网通信、ARP解析、DHCP分配及安全控制;还可通过ip link或ifconfig修改MAC地址实现隐私保护或绕过过滤,但存在网络冲突和安全风险。

linux如何查看网络接口的mac地址

在Linux系统中,查看网络接口的MAC地址通常可以通过

ip a
ifconfig
命令实现,它们会列出接口的详细信息,其中就包含了MAC地址,也就是我们常说的硬件地址或物理地址。这串独一无二的标识符,对于网络通信来说至关重要,它存在于数据链路层,帮助数据包在局域网内准确找到目标设备。

在Linux系统里,想知道某个网络接口(比如

eth0
enp0s3
)的MAC地址,其实有那么几种方法,但最常用、也最直接的,莫过于使用
ip
命令家族,尤其是
ip a
ip address
的缩写)。当然,老派一点的
ifconfig
也依然管用,尤其在一些旧系统或最小化安装的环境里。

咱们就拿

ip a
来说吧,这是我个人更偏爱的一个命令,因为它功能更强大,也更符合现代Linux网络管理工具的发展趋势。

打开你的终端,输入:

ip a

或者

ip address show

你会看到一大堆输出,每个网络接口(比如

lo
eth0
wlan0
等)都会有一个独立的段落。在每个接口的详细信息里,你会找到一行类似这样的内容:

link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff

其中,

00:1a:2b:3c:4d:5e
就是这个接口的MAC地址了。
brd
后面跟着的是广播地址,通常是全F。

如果你更习惯用

ifconfig
,那也可以:

ifconfig

或者,如果你只想看特定接口的,比如

eth0

ifconfig eth0

ifconfig
的输出中,MAC地址通常显示在
HWaddr
ether
字段后面,比如:

eth0: flags=4163  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 67890 (66.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 54321  bytes 98765 (96.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

这里,

ether 00:1a:2b:3c:4d:5e
就是我们找的MAC地址。

MAC地址在网络配置和故障排除中有何作用?

你可能会好奇,这串地址到底有什么用?说白了,MAC地址在网络世界里扮演着设备“身份证”的角色,尤其是在局域网(LAN)层面。它和IP地址是两个不同层面的概念,IP地址负责在整个互联网上标识设备,而MAC地址则是在物理网络段内,确保数据包能准确地从一个网卡发送到另一个网卡。

在我看来,理解MAC地址的这些细节,对于网络故障排查是极其关键的。举个例子,当你遇到网络不通,或者设备无法获取IP地址时,MAC地址就能提供不少线索。

  • ARP协议的基础: 当一台设备想通过IP地址与局域网内的另一台设备通信时,它需要知道对方的MAC地址。这时候,ARP(地址解析协议)就登场了。它会广播一个请求,询问“谁是这个IP地址的主人?请告诉我你的MAC地址!”。没有MAC地址,ARP就无法完成它的工作。
  • DHCP服务器的识别: 在一些场景下,DHCP服务器会根据设备的MAC地址来分配特定的IP地址,或者拒绝分配。这在网络管理中非常有用,可以实现静态IP分配或简单的访问控制。
  • 网络安全 MAC地址过滤是一种常见的安全措施。路由器或交换机可以配置成只允许特定MAC地址的设备接入网络。虽然这种方式容易被绕过(因为MAC地址可以伪造),但在家庭网络或小型办公环境中,它仍能提供一层基本的防护。
  • 设备识别与资产管理: 每一块网卡都有一个全球唯一的MAC地址(理论上),所以它可以用来识别网络中的具体硬件设备。在大型网络中,通过MAC地址可以追踪设备的物理位置,或者进行资产盘点。
  • 故障诊断: 当网络中出现IP地址冲突时,或者某个设备行为异常时,通过MAC地址可以迅速定位到具体的物理设备,这比单纯依赖IP地址要准确得多,因为IP地址是可变的,而物理网卡的MAC地址是固定的。

除了命令行,还有哪些方法可以找到MAC地址?

除了上面提到的

ip a
ifconfig
这些命令,其实还有一些其他途径可以获取MAC地址,特别是如果你想以编程方式或者从系统底层文件去获取的话。

最直接且可靠的方式,就是通过Linux的

/sys
文件系统。Linux内核将很多硬件信息都映射到了这个虚拟文件系统里,包括网络接口的MAC地址。

你可以通过以下路径找到特定接口的MAC地址文件:

ArrowMancer
ArrowMancer

手机上的宇宙动作RPG,游戏角色和元素均为AI生成

下载
cat /sys/class/net//address

比如,如果你想看

eth0
的MAC地址,就输入:

cat /sys/class/net/eth0/address

这个命令会直接输出

eth0
接口的MAC地址,没有任何多余的信息,非常干净。这种方法在脚本中特别有用,因为它只返回MAC地址字符串,便于后续处理。

此外,在系统启动日志中,有时也能找到网卡初始化时报告的MAC地址。你可以尝试用

dmesg
命令,然后结合
grep
来过滤:

dmesg | grep -i eth | grep -i mac

或者更通用一点:

dmesg | grep -i 'ether\|mac'

不过,

dmesg
显示的是启动时的信息,如果MAC地址后来被修改过(我们后面会聊到),这里看到的不一定是当前生效的MAC地址。所以,
/sys/class/net//address
文件和
ip a
命令才是查看当前MAC地址最准确的方法。

MAC地址可以被修改吗?修改MAC地址有什么场景或风险?

是的,MAC地址是可以被修改的,我们通常称之为“MAC地址欺骗”(MAC spoofing)。尽管每个网卡在出厂时都有一个烧录在硬件中的唯一MAC地址,但操作系统允许我们通过软件方式来改变网卡向外界广播的MAC地址。

这听起来有点意思,对吧?那么,为什么会有人想要修改MAC地址呢?

修改MAC地址的常见场景:

  • 隐私保护: 在公共Wi-Fi网络中,为了避免被追踪,一些用户会定期更改自己的MAC地址。
  • 绕过MAC地址过滤: 如果某个网络设置了MAC地址过滤,只允许特定MAC地址的设备接入,那么通过欺骗MAC地址,理论上可以绕过这种限制。例如,你可能需要模仿一个已知被允许的设备的MAC地址来接入网络。
  • 网络测试与故障排除: 在网络测试环境中,工程师可能会修改MAC地址来模拟不同的设备,或者在故障排除时,通过改变MAC地址来隔离问题。
  • 软件许可问题: 某些软件的许可证可能与MAC地址绑定。当更换硬件但又不想重新激活软件时,用户可能会尝试修改新设备的MAC地址来匹配旧设备。

如何修改MAC地址?

在Linux中,你可以使用

ip link
命令或
ifconfig
命令来修改MAC地址。

使用

ip link
(推荐):

sudo ip link set dev eth0 down  # 先禁用网卡
sudo ip link set dev eth0 address 00:11:22:33:44:55 # 设置新的MAC地址
sudo ip link set dev eth0 up    # 重新启用网卡

使用

ifconfig

sudo ifconfig eth0 down
sudo ifconfig eth0 hw ether 00:11:22:33:44:55
sudo ifconfig eth0 up

请注意,这些修改通常是临时的,重启系统后可能会恢复为原始MAC地址。如果需要永久修改,可能需要编辑网络配置文件或使用特定的服务来在启动时设置。

修改MAC地址的风险:

  • 网络冲突: 如果你将MAC地址修改为一个已经在网络中存在的地址,可能会导致IP地址冲突或网络通信混乱。
  • 法律与道德问题: 在未经授权的情况下,修改MAC地址来绕过安全限制或进行恶意活动,可能涉及法律风险。
  • 难以追踪: 虽然MAC地址欺骗可以保护隐私,但如果发生网络安全事件,追踪源头会变得更加困难。

总的来说,MAC地址修改是一个强大的工具,但需要谨慎使用,理解其背后的原理和潜在影响至关重要。

相关专题

更多
mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

182

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

281

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

255

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

121

2025.08.07

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

258

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

209

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1468

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

620

2023.11.24

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

1

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号