nf_conntrack:table full 引发的问题
来源:互联网 发布:淘宝直播申请代办 编辑:程序博客网 时间:2024/06/16 04:16
最近由于网站流量异常,经排查网站日志发现有大量的恶意访问,导致/var/log/messages日志报错“nf_conntrack:table full,drop packet”。
究其原因:nf_conntrack是一个内核模块,用于跟踪一个连接状态。连接跟踪状态可以供其他模块使用,例如state等,可通过以下查看
/sbin/lsmod | egrep conntracknf_conntrack_ipv4 9506 4 iptable_nat,nf_natnf_defrag_ipv4 1483 1 nf_conntrack_ipv4nf_conntrack_ipv6 8748 2 nf_defrag_ipv6 11182 1 nf_conntrack_ipv6nf_conntrack 79758 6 xt_NOTRACK,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_stateipv6 317340 45 ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6#nf_conntrack和xt_NOTRACK,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state有关
当有大量的网站访问时,若iptables记录连接跟踪状态,就可能导出现“nf_conntrack:table full”,从而导致一系列问题。我们可以通过关闭iptables或是重启iptables清空连接跟踪表来排查。
解决方法:
1.修改参数
vim /etc/sysctl.conf#加大 ip_conntrack_max 值net.ipv4.ip_conntrack_max = 393216net.ipv4.netfilter.ip_conntrack_max = 393216#降低 ip_conntrack timeout时间net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
增加完以上内容后,通过sysctl -p 使配置生效 。不过该方法缺点:一是重启iptables后,ip_conntrack_max值又会变成65535默认值,需要重新sysctl -p
2.移除模块
modprobe -r xt_NOTRACK nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_statemodprobe -r nf_conntrack
执行完查看/proc/net/ 下面如果没用了 nf_conntrack ,就证明模块移除成功了
注意: 此方法会将state模块也一块儿移除掉,如果我们的iptables应用nat会用到state模块,卸载后导致iptables某些功能无法使用。
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)增加以下语句
# 针对进入本机的包/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
注意: 一定将进入和出去的包都设置规则。
- nf_conntrack:table full 引发的问题
- nf_conntrack: table full, dropping packet问题的解决思路
- nf_conntrack: table full, dropping packet问题的解决思路
- nf_conntrack: table full, dropping packet
- nf_conntrack: table full, dropping packet
- nf_conntrack: table full, dropping packet
- 解决 nf_conntrack: table full, dropping packet 的几种思路
- 解决 nf_conntrack: table full, dropping packet 的几种思路
- 解决 nf_conntrack: table full, dropping packet 的几种思路
- kernel: nf_conntrack: table full, dropping packet解决办法
- nf_conntrack: table full, dropping packet. 终结篇
- nf_conntrack: table full, dropping packet解决方法
- kernel nf_conntrack: table full, dropping packet 解决办法
- nf_conntrack: table full, dropping packet. 终结篇
- nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法
- iptables 报错 kernel: nf_conntrack: table full, dropping packet.
- 做NAT ip_conntrack: table full 的问题
- 关于ip_conntrack: table full, dropping packet的问题
- 浅析JAVA抽象类和接口的比较
- 必须知道的八大种排序算法【java实现】
- jdbc操作 数据库做同步,全量+增量,线程控制,批处理
- Linux下RPM软件包的安装及卸载
- 通过selenium来模拟登录,获取登录后的cookies
- nf_conntrack:table full 引发的问题
- 使用linux的GDB打印STL(vector,map,set..................)
- Opencv3.2各个模块功能详细简介(包括与Opencv2.4的区别)
- SpringBoot通过代码注册Servlet、Fillter、Listener
- 微信小程序把玩(八)view组件
- socket编程——局域网聊天
- 系统
- 127. Word Ladder
- sap 没有图形访问BDS的权限