返回顶部
首页 > 资讯 > 精选 >nf_conntrack中table full, dropping packet问题的解决思路是怎样的
  • 802
分享到

nf_conntrack中table full, dropping packet问题的解决思路是怎样的

2023-06-13 04:06:14 802人浏览 独家记忆
摘要

本篇文章为大家展示了nf_conntrack中table full, dropping packet问题的解决思路是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。介绍:nf_conntrack

本篇文章为大家展示了nf_conntrack中table full, dropping packet问题的解决思路是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

介绍:nf_conntrack 工作在 3 层,支持 IPv4 和 IPv6,而 ip_conntrack 只支持 IPv4。目前,大多的 ip_conntrack_* 已被 nf_conntrack_* 取代,很多 ip_conntrack_* 仅仅是个 alias,原先的 ip_conntrack 的 /proc/sys/net/ipv4/netfilter/ 依然存在,但是新的 nf_conntrack 在 /proc/sys/net/netfilter/ 中,这个应该是做个向下的兼容:

代码如下:

$ pwd
/proc/sys/net/ipv4/netfilter
$ ls
ip_conntrack_buckets          ip_conntrack_tcp_loose                ip_conntrack_tcp_timeout_syn_recv
ip_conntrack_checksum         ip_conntrack_tcp_max_retrans          ip_conntrack_tcp_timeout_syn_sent
ip_conntrack_count            ip_conntrack_tcp_timeout_close        ip_conntrack_tcp_timeout_syn_sent2
ip_conntrack_generic_timeout  ip_conntrack_tcp_timeout_close_wait   ip_conntrack_tcp_timeout_time_wait
ip_conntrack_icmp_timeout     ip_conntrack_tcp_timeout_established  ip_conntrack_udp_timeout
ip_conntrack_log_invalid      ip_conntrack_tcp_timeout_fin_wait     ip_conntrack_udp_timeout_stream
ip_conntrack_max              ip_conntrack_tcp_timeout_last_ack
ip_conntrack_tcp_be_liberal   ip_conntrack_tcp_timeout_max_retrans
$ pwd
/proc/sys/net/netfilter
$ ls
nf_conntrack_acct                  nf_conntrack_tcp_timeout_close
nf_conntrack_buckets               nf_conntrack_tcp_timeout_close_wait
nf_conntrack_checksum              nf_conntrack_tcp_timeout_established
nf_conntrack_count                 nf_conntrack_tcp_timeout_fin_wait
nf_conntrack_events                nf_conntrack_tcp_timeout_last_ack
nf_conntrack_events_retry_timeout  nf_conntrack_tcp_timeout_max_retrans
nf_conntrack_expect_max            nf_conntrack_tcp_timeout_syn_recv
nf_conntrack_generic_timeout       nf_conntrack_tcp_timeout_syn_sent
nf_conntrack_icmp_timeout          nf_conntrack_tcp_timeout_time_wait
nf_conntrack_log_invalid           nf_conntrack_tcp_timeout_unacknowledged
nf_conntrack_max                   nf_conntrack_udp_timeout
nf_conntrack_tcp_be_liberal        nf_conntrack_udp_timeout_stream
nf_conntrack_tcp_loose             nf_log/
conntrack_tcp_max_retrans

查看当前的连接数:

代码如下:

# grep ip_conntrack /proc/slabinfo
ip_conntrack       38358  64324    304   13    1 : tunables   54   27    8 : slabdata   4948   4948    216

查出目前 ip_conntrack 的排名:

代码如下:

$ cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10

nf_conntrack/ip_conntrack 跟 nat 有关,用来跟踪连接条目,它会使用一个哈希表来记录 established 的记录。nf_conntrack 在 2.6.15 被引入,而 ip_conntrack 在 2.6.22 被移除,如果该哈希表满了,就会出现:

代码如下:

nf_conntrack: table full, dropping packet

解决此问题有如下几种思路。

不使用 nf_conntrack 模块
首先要移除 state 模块,因为使用该模块需要加载 nf_conntrack。确保 iptables 规则中没有出现类似 state 模块的规则,如果有的话将其移除:
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

注释 /etc/sysconfig/iptables-config 中的:
 

代码如下:

IPTABLES_MODULES="ip_conntrack_netbiOS_ns"


移除 nf_conntrack 模块:

代码如下:

$ sudo modprobe -r xt_NOTRACK nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_state
$ sudo modprobe -r nf_conntrack

现在 /proc/net/ 下面应该没有 nf_conntrack 了。

调整 /proc/ 下面的参数
可以增大 conntrack 的条目(sessions, connection tracking entries) CONNTRACK_MAX 或者增加存储 conntrack 条目哈希表的大小 HASHSIZE
默认情况下,CONNTRACK_MAX 和 HASHSIZE 会根据系统内存大小计算出一个比较合理的值:
对于 CONNTRACK_MAX,其计算公式:
CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (ARCH / 32)
比如一个 64 位 48G 的机器可以同时处理 48*1024^3/16384/2 = 1572864 条 netfilter 连接。对于大于 1G 内存的系统,默认的 CONNTRACK_MAX 是 65535。

对于 HASHSIZE,默认的有这样的转换关系:
CONNTRACK_MAX = HASHSIZE * 8
这表示每个链接列表里面平均有 8 个 conntrack 条目。其真正的计算公式如下:
HASHSIZE = CONNTRACK_MAX / 8 = RAMSIZE (in bytes) / 131072 / (ARCH / 32)
比如一个 64 位 48G 的机器可以存储 48*1024^3/131072/2 = 196608 的buckets(连接列表)。对于大于 1G 内存的系统,默认的 HASHSIZE 是 8192。

可以通过 echo 直接修改目前系统 CONNTRACK_MAX 以及 HASHSIZE 的值:

代码如下:

$ sudo su -c "echo 100000 > /proc/sys/net/netfilter/nf_conntrack_max"
$ sudo su -c "echo 50000 > /proc/sys/net/netfilter/nf_conntrack_buckets"


还可以缩短 timeout 的值:

代码如下:

$ sudo su -c "echo 600 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established"

使用 raw 表,不跟踪连接
iptables 中的 raw 表跟包的跟踪有关,基本就是用来干一件事,通过 NOTRACK 给不需要被连接跟踪的包打标记,也就是说,如果一个连接遇到了 -j NOTRACK,conntrack 就不会跟踪该连接,raw 的优先级大于 mangle, nat, filter,包含 PREROUTING 和 OUTPUT 链。
当执行 -t raw 时,系统会自动加载 iptable_raw 模块(需要该模块存在)。raw 在 2.4 以及 2.6 早期的内核中不存在,除非打了 patch,目前的系统应该都有支持:
$ sudo iptables -A FORWARD -m state --state UNTRACKED -j ACCEPT
$ sudo iptables -t raw -A PREROUTING -p tcp -m multiport --dport 80,81,82 -j NOTRACK
$ sudo iptables -t raw -A OUTPUT -p tcp -m multiport --sport 80,81,82 -j NOTRACK

上面三种方式,最有效的是 1 跟 3,第二种治标不治本。

上述内容就是nf_conntrack中table full, dropping packet问题的解决思路是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: nf_conntrack中table full, dropping packet问题的解决思路是怎样的

本文链接: https://lsjlt.com/news/265258.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • nf_conntrack中table full, dropping packet问题的解决思路是怎样的
    本篇文章为大家展示了nf_conntrack中table full, dropping packet问题的解决思路是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。介绍:nf_conntrack...
    99+
    2023-06-13
  • 解决Nginx 400 Bad Request问题的思路是怎样的
    解决Nginx 400 Bad Request问题的思路是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。400 Bad Request是一种HTTP错误状态码。HTT...
    99+
    2023-06-04
  • MySQL在并发场景下的问题及解决思路是怎样的
    本篇文章为大家展示了MySQL在并发场景下的问题及解决思路是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、背景对于数据库系统来说在多用户并发条件下提高并发...
    99+
    2024-04-02
  • Redis中的BigKey问题排查与解决思路详解
    目录摘要Big Key问题介绍Big Key问题排查使用BIGKEYS命令Debug Objectmemory usageRedis-rdb-toolsBig Key问题解决思路分割大key对象压缩直接删除总结摘要 Re...
    99+
    2023-03-31
    Redis BigKey问题 Redis BigKey
  • ORA-06512 问题解决是怎样的呢
    这期内容当中小编将会给大家带来有关ORA-06512 问题解决是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 在执行存储过程时,有动态执行SQL时,有时报错O...
    99+
    2024-04-02
  • 怎样解决Redis的问题
    怎样解决Redis的问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Redis 本质上是一个 Key-Value 类型的内存...
    99+
    2024-04-02
  • Redis主从复制问题和扩容问题的解决思路
    一、解决主从复制问题 当使用Redis作为存储引擎的时候,并且使用Redis读写分离,从机作为读的情况,从机宕机或者和主机断开连接都需要重新连接主机,重新连接主机都会触发全量的主从复制,这时候主机会生成内存...
    99+
    2022-06-04
    主从 思路 Redis
  • ActiveMQ问题分析和解决是怎样的
    ActiveMQ问题分析和解决是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1)KahaDb和AMQ Message Store两种持久方式如何选择?官方:From...
    99+
    2023-06-04
  • 常见JavaScript问题的解决方案是怎样的
    这期内容当中小编将会给大家带来有关常见JavaScript问题的解决方案是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用JavaScript使窗口全屏显示我们可...
    99+
    2024-04-02
  • ajax的 IE cache 相关问题解决是怎样的
    本篇文章给大家分享的是有关ajax的 IE cache 相关问题解决是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 ...
    99+
    2024-04-02
  • JAVA常见中文问题的解决方案是怎样的呢
    JAVA常见中文问题的解决方案是怎样的呢,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JAVA常见中文问题的解决方法以下解决方案是笔者在日常生活中遇到的,希望能...
    99+
    2023-06-03
  • JAVA中文比较问题的分析和解决是怎样的
    这篇文章将为大家详细讲解有关JAVA中文比较问题的分析和解决是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 Java的中文问题由来已久,前不久需要做内存中的中文比较排序,对字符串进行...
    99+
    2023-06-03
  • 服务器租用中常见的问题是怎样解决
    这篇文章给大家介绍服务器租用中常见的问题是怎样解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。现在虽然说大家对于服务器已经有一些了解,但是对于服务器租用和托管,我们还不太熟悉,选择服务器租用的企业一般都是中小企业,服...
    99+
    2023-06-07
  • CentOS系统中英文问题解决方案是怎样的
    今天就跟大家聊聊有关CentOS系统中英文问题解决方案是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在CentOS系统中,文字一直是困扰我们的一个大问题。由于CentOS系统...
    99+
    2023-06-16
  • Log4j中相对路径的问题怎么解决
    本篇内容介绍了“Log4j中相对路径的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、properties文件中:log4j....
    99+
    2023-06-03
  • python中的路径拼接问题怎么解决
    本篇内容介绍了“python中的路径拼接问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python路径拼接使用:os.path....
    99+
    2023-07-05
  • 怎么解决数据导入报错Got a packet bigger than‘max_allowed_packet’的问题
    本篇文章为大家展示了怎么解决数据导入报错Got a packet bigger than‘max_allowed_packet’的问题,内容简明扼要并且容易理解,绝对能使你眼前...
    99+
    2024-04-02
  • 怎样解决Mysql乱码的问题
    本篇内容主要讲解“怎样解决Mysql乱码的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎样解决Mysql乱码的问题”吧! 系统是Fedora15,通过s...
    99+
    2024-04-02
  • SecureCRT中文显示乱码问题的解决方法是怎样的
    本篇文章为大家展示了SecureCRT中文显示乱码问题的解决方法是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 修改远程linux机器的配置 vim /etc/sysconfig/i18n ...
    99+
    2023-06-13
  • LeetCode中Java路径问题的解决方案是什么?
    LeetCode是一个著名的面试题库和算法题库,主要提供各种编程语言的算法题目,其中Java是其中一个主要支持的编程语言。在LeetCode中,路径问题是一个非常常见的问题,包括二叉树路径、图的路径、字符串路径等等,而这些问题的解决方案也非...
    99+
    2023-09-20
    path leetcode 响应
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作