031-老男孩教育每日一题-如何解决 kernel: nf_conntrack: table full, dropping packet.
问题:dmesg或/var/log/messages 出现 kernel: nf_conntrack: table full, dropping packet.
什么问题?如何解决?
解答:nf_conntrack: table full, dropping packet.意思为网络过滤器连接跟踪器netfilter connect tracker的跟踪表满了table full 无法跟踪连接,kernel内核就只能丢弃无法计入跟踪表的包
上述状况会让业务访问很慢!各种网络服务耗时大幅上升,各种 timed out,各种丢包,完全无法正常提供服务。排除收到攻击 的情况。大并发业务场景下,开防火墙很容易出现这种问题。
解决方法1:关闭防火墙服务,卸载模块
1 2 | modprobe -r xt_NOTRACK nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_state modprobe -r nf_conntrack |
解决方法2:修改内核参数/etc/sysctl.conf,完成后需要sysctl -p 更新参数 但是流量特别大还是会满的。
1 2 3 4 5 6 7 8 9 | vim /etc/sysctl.conf #加大 ip_conntrack_max 值 net.ipv4.ip_conntrack_max = 393216 net.ipv4.netfilter.ip_conntrack_max = 393216 #降低 ip_conntrack timeout时间 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300 net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60 net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120 |
解决方法3(非常用方法):使用raw表,跳过跟踪记录。
首先先认识下什么是raw表?做什么用的?
iptables有5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING,4个表:filter,nat,mangle,raw 。
4个表的优先级由高到低的顺序为:raw–>mangle–>nat–>filter
举例来说:如果PRROUTING链上,即有mangle表,也有nat表,那么先由mangle处理,然后由nat表处理 。
RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和 ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了。
RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度 。
使用方法:
(1)改/etc/sysconfig/iptables 文件中的-A INPUT -m state –state RELATED,ESTABLISHED, UNTRACKED -j ACCEPT 行。增加”UNTRACKED”,保存并restart iptables
注意: 必须更改此步,增加”UNTRACKED“,否则执行后面的语句会造成相应的端口不能访问。我使用该方法时就因为没有执行第一步的操作,造成web访问不能使用。
(2)增加以下语句
1 2 3 4 5 6 | # 针对进入本机的包 /sbin/iptables -t raw -A PREROUTING -p tcp -m multiport --dports 80 -j NOTRACK # 针对从本机出去的包 /sbin/iptables -t raw -A OUTPUT -p tcp -m multiport --sports 80 -j NOTRACK /sbin/iptables -t raw -A PREROUTING -i lo -j NOTRACK /sbin/iptables -t raw -A OUTPUT -o lo -j NOTRACK |
今天是老男孩教育每日一题陪伴大家的第31天。
对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引
https://www.drscrewdriver.com/100.html