arp 表已填满

arp 表已填满

我有一个 CentOS 5 系统,它充当我的网络和几个远程网络之间的 IPSec VPN 连接器。最近它每天都会遇到一两次这个问题,即它的 ARP 缓存被填满。

这个家伙所在的本地网络是 ,10.51.0.0/16它通过 IPSec 连接到10.53.0.0/1610.54.0.0/16。它有 2 个接口,一个eth0连接到互联网,eth1另一个通过 ip 连接到本地网络10.51.1.15

ARP 缓存被类似这样的地址填满10.51.119.x,而且似乎有条不紊地将其完全填满。我在此过程中运行了 tcpdump,看到所有这些不存在的地址的 ARP 请求都来自本地 ip,10.51.1.15所以这几乎就像有人在进行网络扫描,但我如何找出它的来源?它不太可能来自盒子本身,没有人应该从它那里运行这样的扫描,但它可能来自 IPSec 网络?我如何找出它的来源?

问题解决了:卡巴斯基杀毒软件正在我们的网络上进行系统发现。

答案1

扫描器要想获得任何东西(除了发起 DOS 攻击),就必须接收数据包。如果扫描似乎源自本地连接的子网,那么他不可能位于源和源之间的任何路由上,因为 CentOS 机器和 10.51.1.15 之间没有任何内容。

你可以:

  1. tcpdump使用header运行-e。这将告诉您扫描发起者的 MAC 地址。
  2. 在不同时间 ping 10.51.1.15 并查看 arp antry 是否对应于 tcpdump 中保存的链路层头。
  3. 如果您有托管交换机,那么您可以登录它并查看帧来自何处。这将告诉您扫描仪插入的插座。如果扫描仪真的只想淹没您的 ARP 缓存,此方法也将有效。

扫描不太可能源自 10.51.0.0/16 网络之外。典型的防火墙规则会丢弃声称来自本地连接网络但通过错误接口发送的数据包。那么,也许您有非典型的防火墙规则 ;)。

我不确定我是否正确理解了您的问题,但如果 10.51.1.15 是 CentOS 机器的 IP,那么tcpdump -e上述想法就毫无意义了。如果数据包似乎来自本地机器,那么它就有数据包要传送到这些地址。在这种情况下,您可以设置 iptables 规则,将数据包记录到 10.51.0.0/16 网络的无效地址。无效地址是指尚未分配给任何主机的地址。如果某些东西试图访问它们,那么它可能没有正当理由这样做。这样的日志记录规则(带有相应的限制规则以防止日志填充)将告诉您此类数据包的来源 - 如果它来自本地机器或任何远程网络。

如果数据包似乎来自 CentOS 机器本身,您还可以查看ps可疑扫描期间的输出,并将其与ps没有扫描时保存的输出进行比较。也许您会找到一些显而易见的答案。

答案2

我找到了这个邮政在调试类似情况时非常有用。建议执行以下操作:

tcpdump -l -n arp | egrep 'arp who-has' | head -100 | awk '{ print $NF }' |sort | uniq -c | sort -n

这将为您提供过去 100 个 IP 中发出最多“who-has”请求的 IP。这将为您提供查找有问题的系统所需的信息。

答案3

不确定是否适用,但我在 Cisco 路由器上遇到了完全相同的问题,问题是在默认路由上我指定的是接口名称而不是 IP 地址。ARP 表会一直填满,直到路由器瘫痪。只要我指定一个 IP,它就会清除。也许完全不相关,但你永远不知道。

ip route 0.0.0.0 0.0.0.0 FastEthernet0/1 <-wrong
ip route 0.0.0.0 0.0.0.0 192.1668.99.254 <-right

相关内容