Linux:邻居表溢出Neighbour Table Overflow错误和解决方案
时间:2020-01-09 10:34:13 来源:igfitidea点击:
使用了CentOS Linux的Linux服务器,作为网关和防火墙服务器。
但是,我在/var/log/messages日志文件中收到以下消息:
Dec 20 00:41:01 fw01 kernel: Neighbour table overflow. Dec 20 00:41:01 fw01 last message repeated 20 times
或者
Dec 20 00:41:01 fw03 kernel: [ 8987.821184] Neighbour table overflow. Dec 20 00:41:01 fw03 kernel: [ 8987.860465] printk: 100 messages suppressed.
为什么内核在syslog中抛出Neighbor table溢出消息?
如何在Debian/CentOS/RHEL/Fedora/Ubuntu Linux下解决此问题?
对于繁忙的网络(或网关/防火墙Linux服务器),必须增加内核的内部ARP缓存大小。
使用以下内核变量:
net.ipv4.neigh.default.gc_thresh1 net.ipv4.neigh.default.gc_thresh2 net.ipv4.neigh.default.gc_thresh3
要查看当前值,请键入:
# sysctl net.ipv4.neigh.default.gc_thresh1
输出示例:
net.ipv4.neigh.default.gc_thresh1 = 128
键入以下命令:
# sysctl net.ipv4.neigh.default.gc_thresh2
输出示例:
net.ipv4.neigh.default.gc_thresh2 = 512
键入以下命令:
# sysctl net.ipv4.neigh.default.gc_thresh3
输出示例:
net.ipv4.neigh.default.gc_thresh3 = 1024
因此,您需要确保arp表变得大于上述默认值。
以上限制适用于小型网络或单个服务器。
这也会影响您的DNS流量。
如何修复邻居表溢出错误?
编辑/etc/sysctl.conf文件,输入:
# vi /etc/sysctl.conf
附加以下值(此值来自保护运行MS-Windows,Linux和Apple OS X的200多个台式机的服务器):
## works best with <= 500 client computers ## # Force gc to clean-up quickly net.ipv4.neigh.default.gc_interval = 3600 # Set ARP cache entry timeout net.ipv4.neigh.default.gc_stale_time = 3600 # Setup DNS threshold for arp net.ipv4.neigh.default.gc_thresh3 = 4096 net.ipv4.neigh.default.gc_thresh2 = 2048 net.ipv4.neigh.default.gc_thresh1 = 1024
要加载新更改,请键入以下命令:
# sysctl -p