多网卡同网段IP引发的ARP Flux问题

 更新时间:2026年01月26日 08:49:01   作者:云计算-Security  
ARPFlux是一种网络现象,多宿主主机或代理ARP可能导致同一个IP地址的多个不同MAC地址响应,引起网络通信异常,要避免ARPFlux,应禁用不必要的代理ARP、检查IP冲突并进行网络分段

什么是 ARP Flux?

ARP Flux 是一种网络现象,通常发生在具有多个网络接口(多宿主)的主机上,当主机对同一个 IP 地址的 ARP 请求做出多个不同 MAC 地址的响应时出现。

这种情况可能导致网络通信异常,如数据包被错误地路由或丢弃。

ARP Flux 的原因

1.多宿主主机(Multihomed Host)

  • 如果一台主机有多个网络接口(如多个网卡或 VLAN 接口),并且这些接口位于同一子网,操作系统可能会通过多个接口响应 ARP 请求。
  • 例如,主机有两个网卡(eth0eth1),IP 地址分别是 192.168.1.10192.168.1.11,但 ARP 请求查询 192.168.1.10 时,主机可能同时用 eth0eth1 的 MAC 地址响应。

2.代理 ARP(Proxy ARP)

  • 某些路由器或防火墙可能启用代理 ARP
  • 导致它们代替其他设备响应 ARP 请求,从而产生多个 ARP 响应。

3.IP 地址冲突

  • 如果同一子网内有两个设备使用相同的 IP 地址
  • 它们都会响应 ARP 请求,导致 ARP Flux。

ARP Flux 的影响:

1.网络不稳定

  • 交换机或路由器可能会收到多个 MAC 地址对应同一个 IP,导致数据包被错误地转发。

2.通信中断

  • 某些设备可能缓存错误的 MAC 地址,导致数据包无法到达目标。

3.ARP 表抖动

  • 网络设备的 ARP 表可能频繁变化,影响性能。

ARP Flux 案例分析

A 主机的 IP 配置如下(即存在 ARP Flux 的主机):

[root@ism ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp125s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether b0:4f:a6:7a:23:96 brd ff:ff:ff:ff:ff:ff
    inet 10.1.88.94/24 brd 10.1.88.255 scope global noprefixroute enp125s0f0
       valid_lft forever preferred_lft forever
    inet6 fe80::b4a:6afe:afb9:3cf8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp125s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether b0:4f:a6:7a:23:97 brd ff:ff:ff:ff:ff:ff
    inet 10.1.89.3/24 brd 10.1.89.255 scope global dynamic noprefixroute enp125s0f1
       valid_lft 29975sec preferred_lft 29975sec
    inet 10.1.88.95/24 brd 10.1.88.255 scope global noprefixroute enp125s0f1
       valid_lft forever preferred_lft forever
    inet6 fe80::6115:6f6d:e709:dbaf/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: enp125s0f2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether b0:4f:a6:7a:23:98 brd ff:ff:ff:ff:ff:ff
    inet 172.16.11.5/24 brd 172.16.11.255 scope global dynamic noprefixroute enp125s0f2
       valid_lft 31573sec preferred_lft 31573sec
    inet 172.16.11.94/24 brd 172.16.11.255 scope global secondary noprefixroute enp125s0f2
       valid_lft forever preferred_lft forever
    inet6 fe80::1c1:9d2a:5550:a9b3/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

在 B 主机上验证是否存在 ARP Flux:

[root@arsen ~]# arping -f -I enp125s0f0 10.1.88.94
ARPING 10.1.88.94 from 172.16.11.97 enp125s0f0
Unicast reply from 10.1.88.94 [B0:4F:A6:7A:23:98]  0.604ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
[root@arsen ~]# 
[root@arsen ~]# arping -f -I enp125s0f0 10.1.88.95
ARPING 10.1.88.95 from 172.16.11.97 enp125s0f0
Unicast reply from 10.1.88.95 [B0:4F:A6:7A:23:98]  0.571ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
[root@arsen ~]# 
[root@arsen ~]# arping -f -I enp125s0f0 172.16.11.94
ARPING 172.16.11.94 from 172.16.11.97 enp125s0f0
Unicast reply from 172.16.11.94 [B0:4F:A6:7A:23:98]  0.596ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

从测试结果来看,A 主机存在 ARP Flux 问题,因为:

10.1.88.9410.1.88.95 都返回了相同的 MAC 地址 B0:4F:A6:7A:23:98(属于 enp125s0f2)。

  • 10.1.88.94 本应属于 enp125s0f0(MAC B0:4F:A6:7A:23:96)。
  • 10.1.88.95 本应属于 enp125s0f1(MAC B0:4F:A6:7A:23:97)。

这表明 ARP 响应被错误地代理或劫持。

服务器抓包:

# A主机抓包
tcpdump -i any -nn "arp" -w arp_capture.pcap

# B主机发送探测包
arping -f 10.1.88.94
arping -f 10.1.88.95

包分析:

可见都是返回 b0:4f:a6:7a:23:98 MAC 地址,该地址属于 enp125s0f2,发生了 ARP Flux。

ARP Flux 对业务影响?

原本客户端只想收到来自目标主机 10.1.88.94 对应网卡 enp125s0f0 的 MAC 地址 b0:4f:a6:7a:23:96(ARP 响应),而现在确收到的是 enp125s0f2 的 MAC 地址 b0:4f:a6:7a:23:98(ARP 响应)。

于是:

  • 客户端就认为:10.1.88.94 对应的 MAC 是 enp125s0f2 的 MAC;
  • 接下来所有对 10.1.88.94 的流量都会发给 enp125s0f2
  • 然而服务可能只绑定在 enp125s0f0 上,或者路由表不匹配;
  • 导致请求进来了但服务不处理、或响应从错误网卡出去,最终连接失败或被丢弃。

如何避免 ARP Flux?

调整主机 ARP 行为

# 全局ARP规范
echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf      # 禁止非本机接口IP的ARP响应
echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf    # 始终使用最佳本地IP响应ARP

# 单接口子网隔离,让每个接口只对自己拥有的 IP 发 ARP 回复,防止“越界抢答”(可选)
# echo 'net.ipv4.conf.enp125s0f0.arp_filter = 1' >> /etc/sysctl.conf
# echo 'net.ipv4.conf.enp125s0f1.arp_filter = 1' >> /etc/sysctl.conf

# 使配置生效(实时)
sysctl -p

禁用不必要的代理 ARP

在路由器或防火墙上关闭不必要的代理 ARP 功能。

检查 IP 冲突

确保网络中不存在重复的 IP 地址。

网络分段

如果可能,将多宿主主机放在不同的子网中,避免 ARP 混乱。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux下的守护进程

    linux下的守护进程

    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。同时,守护进程完成许多系统任务。
    2014-11-11
  • CentOS7—HAProxy安装与配置详解

    CentOS7—HAProxy安装与配置详解

    这篇文章主要介绍了CentOS7—HAProxy安装与配置详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • CentOS7 minimal 最小化安装网络设置过程

    CentOS7 minimal 最小化安装网络设置过程

    这篇文章主要介绍了CentOS7 minimal 最小化安装网络设置过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 解决Linux删除文件空间仍然不释放问题

    解决Linux删除文件空间仍然不释放问题

    本文记录了Linux服务器在移动文件过程中出现磁盘空间不足的问题,找到占用磁盘最多的目录或非必要的日志文件删除后,空间仍然不释放,经查证,是因为文件仍然被线程占用,故提出了通过echo清空文件内容或者使用sudolsof+L1找到并清理占用文件的线程的解决方案
    2024-10-10
  • Centos7安装FFmpeg音/视频工具简易文档

    Centos7安装FFmpeg音/视频工具简易文档

    这篇文章主要介绍了Centos7安装FFmpeg音/视频工具简易文档,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • apache下支持asp.net的实现方法

    apache下支持asp.net的实现方法

    让apache支持asp.net的设置步骤。
    2009-12-12
  • Linux统计目录下文件个数的常见命令总结

    Linux统计目录下文件个数的常见命令总结

    在 Linux 系统中,常常需要了解某个目录中包含多少文件,这不仅有助于管理文件,也能够帮助我们分析目录结构、存储空间的使用情况,下面我们就来看看有哪些方法吧
    2025-11-11
  • 在Linux中部署并初始化MySQL的多种方式

    在Linux中部署并初始化MySQL的多种方式

    MySQL是常用的关系型数据库,被广泛用于学习与实际工作中,本篇文章介绍在Linux系统中使用多种方式部署并初始化MySQL数据库,包括源码安装、rpm安装以及yum安装,需要的朋友可以参考下
    2025-11-11
  • vim的一些常用简单操作小结

    vim的一些常用简单操作小结

    大家都知道vim在Linux下使用很多,但是习惯了在Windows下的文本操作,在vim中进行文本操作会觉得很不方便,但是vim是一个很强大的工具,只是还不熟练去使用它,下面是一些常用的vim文本操作方法。
    2016-09-09
  • CentOS修改主机名称的两种方法详解

    CentOS修改主机名称的两种方法详解

    在 Linux 系统管理中,主机名(Hostname)是标识系统身份的重要属性,尤其在多服务器环境中,合理的主机名有助于管理员快速识别设备角色、位置或用途,本文将详细讲解在 CentOS 系统中修改主机名的两种主流方法,需要的朋友可以参考下
    2025-10-10

最新评论