Linux 学习笔记(五十一):数据链路层与 ARP 协议——局域网寻址与黑客骗局

📌 核心结论(TL;DR):

  1. IP 与 MAC:IP 是跨网段的终极目标(一般不变),MAC 是局域网内"下一跳"的目标(一直变化)。

  2. MTU:以太网一帧最大 1500 字节,超过会触发 IP 分片,严重损耗性能。

  3. ARP 协议 :已知 IP 求 MAC。通过局域网广播 请求,单播回应,并缓存在本地。

  4. ARP 欺骗:因为 ARP 协议无验证机制,黑客可伪造网关 MAC,充当中间人截获所有数据。

一、 数据链路层的定位

数据链路层负责在**同一个局域网(或同一条链路)**内的相邻节点之间传输数据。它就像一个快递员,只负责自己辖区的配送。

二、 核心概念:MAC 地址与 IP 地址

  • IP 地址:网络层地址。描述的是旅途的"起点和终点"。

  • MAC 地址 :链路层地址。长度为 48 位,烧录在网卡上。描述的是旅途中"每一小段的起点和终点"。

    结论:在数据包跨网段传输时,IP 地址不变,但每经过一个路由器,目标 MAC 地址就会改变。

三、 ARP 协议:已知 IP,求 MAC

  1. 主机 A 想和主机 B(同网段)通信,但在以太网帧中必须填目标 MAC。

  2. A 发起 ARP 广播 :"谁是 192.168.1.2"

  3. B 收到广播后,回一个 ARP 单播 :"我是,我的 MAC 是 xx:xx:xx:xx:xx:xx。"

  4. A 将映射关系存入本机的 ARP 缓存表 (可通过 arp -a 查看)。

四、 致命漏洞:ARP 欺骗与中间人攻击

由于 ARP 协议没有任何认证机制,如果有人伪造 ARP 应答,接收方也会当真。

  • 攻击过程:黑客伪造网关的 ARP 包,广播给局域网内所有用户:"我是网关,我的 MAC 是黑客的 MAC。"

  • 后果:用户的流量全部流向黑客(黑客成为"中间人"),黑客可以窃取密码(甚至篡改数据),再转发给真网关。

  • 防范:在企业网络中,通常使用静态 ARP 绑定,或者部署 DAI(动态 ARP 检测)技术来防御。

五、 实战命令

bash 复制代码
ip link show   # 查看本机 MAC 地址
arp -a         # 查看 ARP 缓存表 (IP 与 MAC 的映射关系)

自我实战操作

咱们不搞复杂的黑客工具,直接通过 Linux 命令看看你本机的 MAC 和 ARP 缓存。

bash 复制代码
cd ~/linux_study/network_test
实战 1:查看你的 MAC 地址
bash 复制代码
# 查看网卡信息 (找 link/ether 后面的就是 MAC 地址)
ip link show
# 或者
ifconfig

👉 现象 :你会看到一串类似 00:16:3e:xx:xx:xx 的字符,这就是你的 MAC。

实战 2:查看你的 ARP 缓存表

很多新手看到密密麻麻的路由表就头晕,其实只需要盯住第一行:

default via 10.0.0.1 dev eth0。

  1. default 表示这是默认路由。

  2. via 后面的 IP 就是你的网关(如 10.0.0.1)。

  3. dev 后面跟的是网卡名称(如 eth0)。

  4. src 后面是你当前网卡的内网 IP。

在云服务器环境中,你还会看到云厂商在底层植入的特定路由(如 183.60.x.x)。这验证了 IP 协议"一跳一跳"找路的过程:目的 IP 如果不在本地局域网,就统统交给网关去处理。

bash 复制代码
# 先 ping 一下网关,强制触发一次 ARP 解析
ping -c 1 你的网关IP(用 ip route 看 default via 后面的 IP)

# 查看 ARP 缓存
arp -a
# 或者用较新的命令
ip neigh

现象 :在云服务器上执行 ping 10.0.0.1(网关)显示 100% packet loss。但执行 arp -a 和 ip neigh 时,网关的状态却是 REACHABLE(可达),且能正确解析出 MAC 地址。

原因分析:

  1. ICMP 被拦截 :云厂商为了保证底层网络设备的安全,通常在网关上屏蔽了 ICMP 协议(即禁 ping)。所以网关不会回应你的 ping 请求。

  2. ARP 层连通 :ip neigh 获取的是二层的 MAC 地址。只要你能解析到网关的 MAC 地址并显示 REACHABLE,就证明你的网卡和网关物理链路是通的。

验证方法 :要测试外网是否通畅,直接 ping www.baidu.com 或 curl -I http://www.baidu.com。只要能访问公网,就说明网关转发完全正常。

总结:网络排错要分层看。二层通(ARP),不代表三层(IP/Ping)一定会回应,云环境下的"禁 ping"是常态。

实战 3:ARP 缓存更新测试
  1. 删掉刚才的 ARP 缓存(需要 root 权限):sudo arp -d 192.168.1.1

  2. 再次执行 ip neigh,你会发现那个 IP 对应的 MAC 变成了 FAILED 或者消失了。

  3. 再次 ping 网关,ARP 缓存就会重新建立(重新广播了一次)。

相关推荐
星恒随风1 小时前
Linux网络编程:彻底理解IO多路复用select!从fd_set位图、读写就绪到手写TCP多客户端字典服务器
linux·服务器·网络
陈布衣2 小时前
MySQL(1)_MySQL 5.7.21 Linux 安装笔记
linux·笔记·mysql
xyzzklk3 小时前
在Open-WebUI中提升向量化速度
网络·人工智能·爬虫·ai·语言模型·自然语言处理·安卓
Oiiouui3 小时前
linux服务器部署Logto后端与对应前端的实现
linux·服务器·前端·后端
ITKEY_4 小时前
用 Emacs Dired 实现 em:退出文件管理器后,让终端自动切换目录
linux·服务器·emacs
wt95274 小时前
VMware 虚拟机磁盘扩容实战文档(Ubuntu 22.04 + LVM)
linux·后端
就像楞次定律4 小时前
【Linux 学习记之二】C++ 构建体系与底层链接机制的深度透视(2)
linux·后端
无足鸟ICT4 小时前
【RHCA+】slabtop命令(查看slab缓存)
linux
且从容.4 小时前
Ubuntu 安装 Docker
linux·ubuntu·docker