neighbour table overflow 问题解决

接到保障,说某来机器服务没法访问,于是,准备连接到机器上去看个究竟.

尼玛居然连不上,连ping都ping不通,无奈只能求助机房. 机房人员检查, 发现报 neighbour table overflow 错误. 无奈让机房的人员重启了服务器.


查找原因,搜索得到如下说法:


第一种说法:

内核维护的arp表过于庞大, 发生抖动, 因此导致了这种情况,几个内核ARP参数:
=================================
gc_stale_time
决定检查一次相邻层记录的有效性的周期。当相邻层记录失效时,将在给它发送数据前,再解析一次。缺省值是60秒。
gc_thresh1
存在于ARP高速缓存中的最少层数,如果少于这个数,垃圾收集器将不会运行。缺省值是128。
gc_thresh2
保存在 ARP 高速缓存中的最多的记录软限制。垃圾收集器在开始收集前,允许记录数超过这个数字 5 秒。缺省值是 512。
gc_thresh3
保存在 ARP 高速缓存中的最多记录的硬限制,一旦高速缓存中的数目高于此,垃圾收集器将马上运行。缺省值是1024。
=================================
比如arp -an|wc -l的结果是300左右, 那么应当调高gc_thresh各项数值,防止抖动的发生:
echo "net.ipv4.neigh.default.gc_thresh1 = 512" >> sysctl.conf
echo "net.ipv4.neigh.default.gc_thresh2 = 2048" >> sysctl.conf
echo "net.ipv4.neigh.default.gc_thresh3 = 4096" >> sysctl.conf

或者

echo 120 > /proc/sys/net/ipv4/neigh/default/gc_stale_time
echo 512 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 2048 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

第二种说法:
默认路由或者子网掩码设置错误,检查

第三种说法:
内核编译错误

第四种说法:
原来那台机器的iptables没有开,不知道开了以后会不会好了,等等看吧。


于是查看了下 ARP 表,发现ARP表不断的在增长.一度增长到730多条记录.理论上来说,机器应该只会保存一条ARP记录,就是网关的.而现在保存了很多条记录,都是公网IP对应网关MAC地址的记录.以为是机器被人入侵了,种下了ARP欺骗神马的程序. 通过 tcpdump 抓包发现,确实是本机不断的在发送ARP请求包. 找了一个多小时,硬是没找到原因.

后来通过访问本机上的某个服务,ARP表中立即就增加了一条ARP记录. 是我的出口的IP,对应的服务器网关的MAC.

于是,理了一下思绪,为什么ARP表中的记录不是网关的MAC,而是直接对应我用户的公网IP和服务器网关的MAC地址.看一下网络通信的流程:


1. 用户请求服务器的服务到达服务器

2. 服务器响应请求,首先查找本机的路由表,如果有路由,直接通过该接口将数据丢过去.如果没有路由,则将数据丢给默认网关.

3. 丢数据出去,得解析ARP,将IP转换为MAC地址. 二层都是通过MAC地址通信的嘛

4. 于是查找本地的MAC地址表,有记录则发送过去.没记录,则广播ARP. 问谁是 x.x.x.x .

5. 现在的问题很显然是服务器在不断的广播ARP,而响应的则是服务器网关.而服务器网关是交换机.顺便查了下,交换机的代理ARP功能. 而这个功能交换机一般默认都是开启的.

6. 于是不断的添加ARP记录到ARP表中,都是用户的访问IP和网关的MAC地址

6. 尼玛去查了一下路由表,震惊了. 网关居然配置的自己本身的接口IP地址,而不是网关的IP. 怪不得.

7. 默认路由是自己的接口IP,为嘛还能与外界通信? 因为服务器是跟网关直连的呀! 我勒个擦


所以, 我这个问题,验证了第二种方法,默认路由或者子网掩码设置错误!

而这个错误,导致了ARP记录过于庞大,最终服务器挂了.




  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<p> <span style="font-family:-apple-system, system-ui, 'PingFang SC', Helvetica, Tahoma, Arial, 'Microsoft YaHei', 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, serif;font-size:12px;background-color:#ffffff;">1、系统全面介绍了Python的基础语法 </span> </p> <p> <span style="font-family:-apple-system, system-ui, 'PingFang SC', Helvetica, Tahoma, Arial, 'Microsoft YaHei', 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, serif;font-size:12px;background-color:#ffffff;">2、在课程中融入了算法思想 </span> </p> <p> <span style="font-family:-apple-system, system-ui, 'PingFang SC', Helvetica, Tahoma, Arial, 'Microsoft YaHei', 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, serif;font-size:12px;background-color:#ffffff;">3、帮助初学者厘清逻辑,掌握Python的主体脉络 </span> </p> <p> <span style="font-family:-apple-system, system-ui, 'PingFang SC', Helvetica, Tahoma, Arial, 'Microsoft YaHei', 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, serif;font-size:12px;background-color:#ffffff;">4、从全方位立体角度解析知识点 </span> </p> <p> <span style="font-family:-apple-system, system-ui, 'PingFang SC', Helvetica, Tahoma, Arial, 'Microsoft YaHei', 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, serif;font-size:12px;background-color:#ffffff;">5、实战案例驱动、课程包含近200个相关案例、边讲解边实操</span> </p> <p> <span style="font-family:-apple-system, system-ui, 'PingFang SC', Helvetica, Tahoma, Arial, 'Microsoft YaHei', 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, serif;font-size:12px;background-color:#ffffff;"><br /> </span> </p> <p> <span style="font-family:-apple-system, system-ui, 'PingFang SC', Helvetica, Tahoma, Arial, 'Microsoft YaHei', 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, serif;font-size:12px;background-color:#ffffff;"><img src="https://img-bss.csdnimg.cn/202107120808123109.png" alt="" /><br /> </span> </p>
<p style="font-size:16px;"> 涉及内容: </p> <p style="font-size:16px;"> 注意,学习此视频必须有一定基础的同学 </p> <p style="font-size:16px;"> 区块链相关知识、钱包相关知识、p2p相关知识、uniapp相关知识 </p> <p style="font-size:16px;">     01前言 </p> <p style="font-size:16px;">     02成果展示 </p> <p style="font-size:16px;">     03前言区块链概念和六层模型介绍 </p> <p style="font-size:16px;">     04翻译一个带币的js简单例子原理介绍 </p> <p style="font-size:16px;">     05区块链springboot工程搭建和区块相关实现 </p> <p style="font-size:16px;">     06区块链中加密算法相关介绍以及实现 </p> <p style="font-size:16px;">     07钱包相关实体类介绍 </p> <p style="font-size:16px;">     08redis数据库等配置和工具类的介绍 </p> <p style="font-size:16px;">     09区块链相关实体类介绍 </p> <p style="font-size:16px;">     10挖矿相关实体类和POW相关的介绍 </p> <p style="font-size:16px;">     11 p2p 点对点 server和client代码 </p> <p style="font-size:16px;">     12 p2p 原理的简单介绍 </p> <p style="font-size:16px;">     13 节点钱包相关启动实现 </p> <p style="font-size:16px;">     14 web控制层逻辑基础代码 </p> <p style="font-size:16px;">     15 web功能的整体介绍 </p> <p style="font-size:16px;">     16 web钱包功能-创建钱包账户的完整功能实现 </p> <p style="font-size:16px;">     17 web钱包功能-获取挖矿钱包信息和根据钱包地址获取信息 </p> <p style="font-size:16px;">     18 web钱包功能-获取当前节点所有钱包 </p> <p style="font-size:16px;">     19 全节点钱包轻钱包中心化钱包的概念 </p> <p style="font-size:16px;">     20 p2p三个节点的相关配置并启动 </p> <p style="font-size:16px;">     21 p2p 节点添加相关流程 </p> <p style="font-size:16px;">     22 p2p 节点列表相关实现 </p> <p style="font-size:16px;">     23 区块相关挖矿与挖矿奖励等讲解 </p> <p style="font-size:16px;">     24 区块链相关的查询操作 </p> <p style="font-size:16px;">     25 交易转账相关逻辑 </p> <p style="font-size:16px;">     26 三台机器节点运行 uniapp开发前准备 </p> <p style="font-size:16px;">     27 uniapp首页和我的页面实现 </p> <p style="font-size:16px;">     28 uniapp 节点钱包和节点钱包列表展示 </p> <p style="font-size:16px;">     29 uniapp添加节点,节点列表挖矿区块链查询等 </p> <p style="font-size:16px;">     30 uniapp我的钱包转账查询交易等 </p> <p style="font-size:16px;">     31 课程总结以及代码资料等相关说明 </p> <div> <br /></div>
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值