054 数据链路层

数据链路层

数据链路层协议 ——— 以太网协议 | CSDN

「网络编程」数据链路层协议_ 以太网协议学习 | CSDN

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,数据链路层和网络层的分工清晰可见:

  1. 网络层先干活
    • 电脑先把 “ping 请求” 封装成 IP 数据包,目的 IP 是百度服务器的 IP(比如 180.101.49.12)。
    • 电脑问本地路由器:“怎么把这个数据包送到百度?” 路由器用路由协议查 “路线表”,确定下一个转发节点(比如运营商的网关)。
  2. 数据链路层再封装
    • 电脑把 “IP 数据包” 再封装成 以太网帧,目的 MAC 地址是 “本地路由器的 MAC 地址”(不是百度的 MAC!因为 MAC 只在本地有效)。
    • 帧通过 WiFi / 网线传到路由器,路由器拆开帧,取出里面的 IP 数据包,再给这个数据包套上 “新的帧”(目的 MAC 是下一个网关的 MAC),继续转发。
  3. 到百度服务器后反向操作
    • 百度的路由器收到数据包,拆帧取包,再用 “百度服务器的 MAC” 封装成帧,送到百度服务器。
    • 百度服务器返回 “ping 响应”,重复上述过程,最终回到你的电脑。

2. 认识以太网

  • IP 层:决定“送给谁”,类似“写信的收件人地址”;
  • 以太网层(链路层):决定“信封怎么送到下一个邮局(下一跳)”;
  • ARP 协议:负责查“邮递员的住址(MAC)”;
  • 路由器:相当于中转邮局,负责转运到不同地区。

1. 以太网是什么?

以太网的本质:局域网(LAN)的“物理 + 数据链路”实现。它只负责“一跳”通信 —— 即从当前主机到下一跳(通常是网关或目标主机),不关心跨网、路由、可靠性。

以太网(Ethernet)是目前最常用的 局域网通信技术,它解决 同一局域网内 多台主机之间的 点对点或广播通信。它定义了:

  • 物理层:用什么电缆/光纤/网卡等连接主机。
  • 数据链路层:如何封装、发送、识别、接收帧。
  • 寻址机制:用 MAC 地址(48 位,每个网卡的唯一标识)来区分不同主机。

2. 以太网通信的核心原理

以太网采用的基本通信方式是:广播 + 识别 + 过滤

  1. 发送过程: 主机 A 想发数据给主机 B(同网段),A 封装以太网帧:目的 MAC = B 的 MAC,源 MAC = A 的 MAC,将帧广播到整个局域网(通过交换机或集线器)。

  2. 接收过程:局域网内 所有主机都收到该帧,每台主机检查目的 MAC:

    • 匹配自己 → 去掉以太网头,将 payload(如 IP 包)交给上层。

    • 不匹配直接丢弃(不向上交付)。

这就是之前说的:在局域网中,每个主机都能看到所有帧,但只会“认领”发给自己的那部分。

交换机的作用:学习 MAC 地址表,只转发帧到目标端口(不是广播),减少冲突和带宽浪费。

3. 路由器在以太网通信中的作用

以太网通信范围是一个局域网(即一个广播域),不同网段之间 的通信必须经过路由器。当主机 A 发现目标 IP 不在本地网段时,它会:

1
查路由表 → 发现下一跳是默认网关(路由器)→ 使用 ARP 找到网关的 MAC 地址 → 将帧发给网关 → 路由器接收后,剥去旧帧头,重新封装成新帧(目标是下一跳或目标主机)

所以每跨一个路由器,就意味着一次“去掉旧帧头 + 加上新帧头”的过程。那么以太网又是如何与 IP 协作的呢?—— 封装与解封装:

  1. 发送端(主机 A): 应用数据 → TCP/UDP 封装(加端口号) → IP 封装(加源/目的 IP) → 以太网封装(加源/目的 MAC) → 发送。
  2. 转发中(路由器): 收到帧 → 去掉以太网头 → 查 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. 以太网帧格式

一个标准的以太网帧结构如下:

PixPin_2025-10-08_20-43-21

字段长度(字节)作用
目标 MAC 地址6标识接收方设备(帧要发给谁)
源 MAC 地址6标识发送方设备(谁发的)
类型字段2指明上层协议(如 0x0800 = IPv4,0x86DD = IPv6,0x0806 = ARP,现已基本被 DHCP 取代,极少在现代网络中使用:0x8035 = RARP)
数据载荷46~1500实际承载的上层数据(通常是 IP 报文)
FCS(帧校验序列)4CRC32 校验,检查传输过程中是否出错

特点:

  • 帧头固定 14 字节(6 + 6 + 2)。
  • 帧尾固定 4 字节(CRC)。
  • 有效载荷部分可变,最小 46 字节,最大 1500 字节。
  • 类型字段(Type) 是关键:用于区分上层协议。
  • 最小帧 64 字节(含头尾)→ 数据不足 46 字节时会填充。
  • 最大帧 1518 字节 → 对应 IP 层 MTU = 1500 。

注意:MAC 地址 是硬件层面的标识,和 IP 地址完全不同,工作范围只限于局域网。对比理解 MAC 地址和 IP 地址:

  • IP 地址描述的是路途总体的起点和终点。
  • MAC 地址描述的是路途上的每一个区间的起点和终点。

2. MAC 帧的分离原理(如何提取报头和有效载荷)

MAC 帧的报头和帧尾长度是固定的,所以“定长分离”即可取出有效载荷。只要看类型字段,就能知道“有效载荷”该交给哪个上层协议。

因为以太网帧的 帧头和帧尾长度固定,所以在接收端处理非常简单:

  1. 底层网卡驱动 收到原始比特流;
  2. 按帧结构解析出:前 14 字节 → 报头(含源 MAC、目的 MAC、类型字段),后 4 字节 → CRC 校验码,中间部分 → 有效载荷(上层协议的数据)。
  3. 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 收到后执行以下步骤:

  1. CRC 校验通过
  2. 目的 MAC 地址匹配自己
  3. 读取 类型字段(0x0800),得知上层协议是 IP。
  4. 将“有效载荷部分”交给上层 IP 协议模块
  5. 上层 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
2
3
[第1片] 1480字节(MF=1)
[第2片] 1480字节(MF=1)
[第3片] 1040字节(MF=0)

接收方 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
2
MSS = MTU - IP头长度 - TCP头长度
例如:MSS = 1500 - 20 - 20 = 1460

TCP 在三次握手阶段交换 MSS:

1
2
3
4
SYN 报文:
Kind=2(MSS选项)
Length=4
Value=1460

双方协商后取较小值作为实际 MSS,这样 TCP 可以 避免触发 IP 分片,直接分段发送。

5. Linux 中查看硬件地址与 MTU

1
2
ifconfig
ip addr show # 更现代

输出示例:

说明:

  • 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 字节)

PixPin_2025-10-08_22-44-15

字段名称长度(字节)含义说明
硬件类型(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
  1. 发送过程: ARP 请求封装进以太网帧:以太网 目的地址FF:FF:FF:FF:FF:FF(广播),以太网 源地址:A 的 MAC 地址,帧类型:0x0806,然后广播发送到整个局域网。
  2. 各主机的处理: 每台主机都能收到该广播帧,所有主机的 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(请求中带有)
  1. 发送过程: ARP 应答封装成以太网帧:以太网 目的地址:D 的 MAC 地址(单播),以太网 源地址:B 的 MAC 地址,帧类型:0x0806
  2. 接收与更新: 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
    6
    arp -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 层再判断是否是给自己的),但这会带来:

  1. 大量无关主机都要交给内核处理(浪费 CPU/内存资源)。
  2. 破坏单播/广播的语义。
  3. 极大降低局域网效率(广播风暴)。

所以我们必须依赖 ARP,在底层就精确确定目标 MAC。

6. ARP 欺骗

以下操作 仅限授权测试(如自己搭建的实验环境),在他人网络中实施 ARP 欺骗属于 违法行为(违反《网络安全法》)。

1. 推荐工具:arpspoof(来自 dsniff 套件)

Centos 7.6 中安装:

1
2
3
4
5
6
7
sudo yum install -y epel-release		# 启用 EPEL 仓库(多数网络工具在 EPEL)
sudo yum makecache # 更新缓存(可选)
sudo yum install -y nmap dsniff # 安装 nmap 与 dsniff

# 验证安装
nmap --version
which dsniff || rpm -qa | grep dsniff

Ubuntu 22.04 中安装:

1
2
3
4
5
6
7
sudo apt update				# 更新包索引(可选但推荐)
sudo apt install -y nmap # 安装 nmap(APT 版本)

# 或者用 snap(若你偏好 snap 版本)
# sudo snap install nmap

nmap --version # 安装后验证

2. arpspoof 命令参数含义(不是固定的,必须根据目标改!)

命令格式:

1
sudo arpspoof -i <网卡名> -t <目标主机IP> <欺骗对象IP>

各参数解释:

参数说明必须改吗?
-i eth0你当前联网的网卡(可能是 wlan0ens33 等)必须改成你自己的网卡
-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 协议与攻击防护) | B 站

⚠️ 重要法律与道德声明 ⚠️

本指南仅用于 网络安全学习、实验环境搭建及授权渗透测试

未经授权 的情况下,对他人网络、设备或服务实施 ARP 欺骗、流量劫持、数据嗅探等行为,属于 严重违法行为,违反《中华人民共和国网络安全法》、《刑法》第 285 条(非法侵入计算机信息系统罪)及第 286 条(破坏计算机信息系统罪)。

请务必在以下场景中使用本指南:

  • 自己搭建的虚拟机环境(如 VirtualBox/VMware)
  • 经过明确书面授权的渗透测试项目
  • 教学机构提供的实验平台

禁止在公共网络、公司内网、云服务器或任何非授权环境中进行此类操作。

学习安全技术的目的是为了更好地保护网络,而非攻击。请遵守法律法规,做一名负责任的安全从业者。

前提条件:设备需要处于同一个子网下,如:同一 WiFi、热点等。云服务器存在限制,大概率是不行的。效果:目标主机断网。

  1. 查自己的网卡名和网关(只需做一次):
1
2
ip a                    # 看网卡名(如 eth0、ens33、wlan0)
ip route show default # 看网关 IP(如 192.31.0.1)
  1. 如果不知道目标 IP,就用 nmap 扫描同网段找活跃主机(可选):
1
nmap -sn 192.31.0.0/20   # 把 192.31.0.0/20 换成你的真实子网,从结果里选一个目标 IP,不想计算可以直接选择 ip a 的结果,或者使用其他工具进行计算
  1. 开启 IP 转发(让流量经过你再转发出去):
1
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
  1. 发起 ARP 欺骗:
1
sudo arpspoof -i 网卡名 -t 目标IP 网关IP
  1. 在目标机上进行验证:
1
arp -a | grep 网关IP
  1. 停止攻击并恢复网络:
1
2
3
# 1. 停止 arpspoof (按 Ctrl+C)
# 2. 关闭 IP 转发
echo 0 | sudo tee /proc/sys/net/ipv4/ip_forward

在 kali 中感觉会容易一点:注意虚拟机中要把网络适配器改成 NAT 模式 或者 桥接模式(勾选复制物理网络连接状态) 直连真实的物理网络。

  1. 先切换到 root,执行:ifconfig 拿到 IP,用 route -n 拿到网关(”default” 或 “0.0.0.0” 行对应的就是默认网关,或者看 Flags 项:UG 标志中的 G 表示这是一个网关)。
  2. fping -g 自己的 IP 或者 nmap -sn 自己的IP 找到当前局域网下所有活跃、活着的 IP(alive)。
  3. 开启 IP 转发(让流量能经 Kali 转发):echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
  4. 开始攻击:arpspoof -i 网卡名 -t 目标IP 要冒充的IP/网关IP,比如:arpspoof -i eth0 -t 192.168.72.130 192.168.72.2
  5. 停止攻击:echo 0 | sudo tee /proc/sys/net/ipv4/ip_forward