Linux 学习笔记(五十一):数据链路层与 ARP 协议——局域网寻址与黑客骗局
📌 核心结论(TL;DR):
IP 与 MAC:IP 是跨网段的终极目标(一般不变),MAC 是局域网内“下一跳”的目标(一直变化)。
MTU:以太网一帧最大 1500 字节,超过会触发 IP 分片,严重损耗性能。
ARP 协议:已知 IP 求 MAC。通过局域网广播请求,单播回应,并缓存在本地。
ARP 欺骗:因为 ARP 协议无验证机制,黑客可伪造网关 MAC,充当中间人截获所有数据。
一、 数据链路层的定位
数据链路层负责在同一个局域网(或同一条链路)内的相邻节点之间传输数据。它就像一个快递员,只负责自己辖区的配送。
二、 核心概念:MAC 地址与 IP 地址
IP 地址:网络层地址。描述的是旅途的“起点和终点”。
MAC 地址:链路层地址。长度为 48 位,烧录在网卡上。描述的是旅途中“每一小段的起点和终点”。
结论:在数据包跨网段传输时,IP 地址不变,但每经过一个路由器,目标 MAC 地址就会改变。
三、 ARP 协议:已知 IP,求 MAC
主机 A 想和主机 B(同网段)通信,但在以太网帧中必须填目标 MAC。
A 发起ARP 广播:“谁是
192.168.1.2”B 收到广播后,回一个ARP 单播:“我是,我的 MAC 是
xx:xx:xx:xx:xx:xx。”A 将映射关系存入本机的ARP 缓存表(可通过
arp -a查看)。
四、 致命漏洞:ARP 欺骗与中间人攻击
由于 ARP 协议没有任何认证机制,如果有人伪造 ARP 应答,接收方也会当真。
攻击过程:黑客伪造网关的 ARP 包,广播给局域网内所有用户:“我是网关,我的 MAC 是黑客的 MAC。”
后果:用户的流量全部流向黑客(黑客成为“中间人”),黑客可以窃取密码(甚至篡改数据),再转发给真网关。
防范:在企业网络中,通常使用静态 ARP 绑定,或者部署 DAI(动态 ARP 检测)技术来防御。
五、 实战命令
ip link show # 查看本机 MAC 地址 arp -a # 查看 ARP 缓存表 (IP 与 MAC 的映射关系)自我实战操作
咱们不搞复杂的黑客工具,直接通过 Linux 命令看看你本机的 MAC 和 ARP 缓存。
cd ~/linux_study/network_test实战 1:查看你的 MAC 地址
# 查看网卡信息 (找 link/ether 后面的就是 MAC 地址) ip link show # 或者 ifconfig👉现象:你会看到一串类似00:16:3e:xx:xx:xx的字符,这就是你的 MAC。
实战 2:查看你的 ARP 缓存表
很多新手看到密密麻麻的路由表就头晕,其实只需要盯住第一行:default via 10.0.0.1 dev eth0。
default表示这是默认路由。via后面的 IP 就是你的网关(如10.0.0.1)。dev后面跟的是网卡名称(如eth0)。src后面是你当前网卡的内网 IP。
在云服务器环境中,你还会看到云厂商在底层植入的特定路由(如183.60.x.x)。这验证了 IP 协议“一跳一跳”找路的过程:目的 IP 如果不在本地局域网,就统统交给网关去处理。
# 先 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 地址。
原因分析:
ICMP 被拦截:云厂商为了保证底层网络设备的安全,通常在网关上屏蔽了 ICMP 协议(即禁 ping)。所以网关不会回应你的
ping请求。ARP 层连通:
ip neigh获取的是二层的 MAC 地址。只要你能解析到网关的 MAC 地址并显示REACHABLE,就证明你的网卡和网关物理链路是通的。
验证方法:要测试外网是否通畅,直接ping www.baidu.com或curl -I http://www.baidu.com。只要能访问公网,就说明网关转发完全正常。
总结:网络排错要分层看。二层通(ARP),不代表三层(IP/Ping)一定会回应,云环境下的“禁 ping”是常态。
实战 3:ARP 缓存更新测试
删掉刚才的 ARP 缓存(需要 root 权限):
sudo arp -d 192.168.1.1再次执行
ip neigh,你会发现那个 IP 对应的 MAC 变成了FAILED或者消失了。再次 ping 网关,ARP 缓存就会重新建立(重新广播了一次)。