后浪笔记一零二四

当系统出现"neighbour: arp_cache: neighbor table overflow!“报错时,这表明系统的ARP(Address Resolution Protocol)缓存表已经达到或超过了其容量限制,无法存储更多的IP-MAC地址映射关系。

ARP中的neighbor table(邻居表)是Linux内核中用于存储和管理IP地址与MAC地址映射关系的核心数据结构
通过ip neigh命令查看或管理邻居表
IPv6中使用NDP(邻居发现协议)替代ARP,功能更全面且安全性更高
arp缓存表溢出会导致ping 127.0.0.1丢包

邻居表以哈希表(hash_buckets)形式组织,每个表项(struct neighbour)包含以下关键字段:

  • primary_key:哈希主键,通常为IP地址(IPv4为4字节)。
  • ha:邻居的MAC地址。
  • nud_state:邻居状态(如NUD_REACHABLE表示可达,NUD_STALE表示过期)。
  • dev:关联的网络设备接口。
  • arp_queue:等待该邻居MAC地址解析的数据包队列。

Linux内核通过gc_thresh1/2/3参数控制ARP缓存的垃圾回收机制:

  • gc_thresh1:ARP表最小条目数,低于此值不触发GC
  • gc_thresh2:软限制,超过此值5秒后触发GC
  • gc_thresh3:硬限制,超过此值立即触发GC

当不可回收的ARP表项(如处于Reachable状态)数量超过gc_thresh3时,就会报溢出错误

vim /etc/sysctl.conf,添加如下内容:

1
2
3
4
net.ipv4.conf.all.rp_filter=0
net.ipv4.neigh.default.gc_thresh1=1048576
net.ipv4.neigh.default.gc_thresh2=4194304
net.ipv4.neigh.default.gc_thresh3=4194304

本文发表于 0001-01-01,最后修改于 0001-01-01。

本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。


上一篇 « 下一篇 »

赞赏支持

请我吃鸡腿 =^_^=

i ysf

云闪付

i wechat

微信

推荐阅读

Big Image