4. ARP问题排查:ARP表项错误、ARP攻击导致路由不可达
说到ARP,我估计不少朋友都吃过它的亏。
ARP这玩意儿,说白了就是IP地址和MAC地址之间的翻译官。路由器要转发数据包,光知道目标IP不行,还得知道下一跳设备的MAC地址。这个翻译过程一旦出错,路由就不可达了。
我遇到过好几次这样的情况:网络配置看着都对,路由表也正常,但就是ping不通。查来查去,最后发现是ARP表项在搞鬼。
4.1 ARP表项错误:最常见的“隐形杀手”
ARP表项错误,通常有两种情况:
- ARP表项老化:设备变更了IP或MAC,但网关的ARP表没更新
- ARP表项冲突:同一个IP对应了多个MAC地址
怎么排查?我个人的习惯是三步走:
- 第一步:查看ARP表
在网关或路由器上执行:
# 查看完整的ARP表
arp -a
# 或者用更详细的命令(Linux环境)
ip neigh show
输出大概长这样:
192.168.1.1 00:1a:2b:3c:4d:5e dynamic
192.168.1.10 00:1a:2b:3c:4d:5f dynamic
192.168.1.20 00:1a:2b:3c:4d:60 stale
注意看状态列。如果出现 stale 或 failed,说明这个表项可能有问题。
- 第二步:验证MAC地址真实性
去目标设备上查一下真实的MAC:
# Windows
ipconfig /all
# Linux
ip link show
对比一下,如果ARP表里的MAC和实际设备对不上,那就是表项错误了。
- 第三步:手动清理并重建ARP表项
# 删除指定IP的ARP表项
arp -d 192.168.1.10
# 或者清空整个ARP表(慎用)
arp -d
# 然后触发重新学习
ping 192.168.1.10
我的经验: 有一次客户说核心交换机到某台服务器不通,我查了半天路由没问题,最后发现是ARP表里那个服务器的MAC地址是00:00:00:00:00:00。你想想看,这怎么可能通?手动删掉后,重新ping一下,立马就恢复了。
4.2 ARP攻击:网络里的“冒名顶替者”
ARP攻击,说白了就是有人伪造ARP应答包,告诉网关“我是那个IP,我的MAC是XX”。网关信了,就把流量发给了攻击者。
典型的症状:
- 部分用户间歇性断网
- 网关的ARP表里,同一个IP对应多个MAC
- 网络延迟忽高忽低
排查方法,我一般这么干:
4.2.1 抓包确认
在网关端口上抓包,过滤ARP流量:
tcpdump -i eth0 arp -nn
正常情况,ARP请求和应答应该是一对一的。如果你看到同一个IP的ARP应答来自不同的MAC地址,那基本可以确定有攻击。
4.2.2 定位攻击源
我曾经遇到过一个案例,整个办公室都在喊网络卡。我抓包一看,好家伙,网关的IP被几十个MAC地址轮番应答。顺着MAC地址查交换机端口,最后发现是一台中了毒的员工电脑。
定位方法:
- 在交换机上查MAC地址对应的端口:
show mac-address-table | include 00:1a:2b:3c:4d:5e - 顺着端口找到接入设备
- 断网隔离,然后杀毒或重装系统
4.2.3 临时防御措施
在找到根源之前,可以先做临时防护:
# 在网关上配置静态ARP(以Linux为例)
arp -s 192.168.1.1 00:1a:2b:3c:4d:5e
# 或者用ip命令
ip neigh add 192.168.1.1 lladdr 00:1a:2b:3c:4d:5e nud permanent
注意: 静态ARP虽然能防攻击,但一旦网关或对端设备更换了网卡,你得手动更新。否则,网络又会不通。我曾经就吃过这个亏,换了核心交换机忘了更新静态ARP,结果半夜被叫起来处理故障。
4.3 实战排查流程总结
嗯,这里我给大家整理一个快速排查清单:
| 步骤 | 操作 | 预期结果 |
|---|---|---|
| 1 | arp -a 查看ARP表 |
表项完整,状态为dynamic或reachable |
| 2 | 对比实际设备MAC | MAC地址一致 |
| 3 | 抓包检查ARP应答 | 每个IP只有唯一MAC应答 |
| 4 | 检查交换机MAC表 | MAC地址对应唯一端口 |
| 5 | 配置静态ARP(临时方案) | 路由可达,ping通 |
核心要点:
- ARP表项错误,先删后重建,简单粗暴
- ARP攻击,先抓包确认,再定位端口,最后隔离源头
- 静态ARP是双刃剑,用得好是防护,用不好是隐患
说实话,ARP问题排查起来并不复杂,但容易被忽略。很多工程师一遇到路由不可达,就盯着路由表看半天,其实回头看一眼ARP表,问题可能就解决了。我个人习惯是,只要遇到“路由可达但ping不通”的情况,第一件事就是查ARP。
好了,这一节就到这里。下一节我们聊聊更隐蔽的MTU问题,那个坑更深。