JeffSunpan27

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

iptables优化#

nf_conntrack: table full, dropping packet,这是使用iptables可能会出现的一个告警信息。nf_conntrack是用来记录连接条目的,NAT和iptables中的state模块都会用到这个,如果连接表满了就会出现告警信息。
比如默认安装iptables后的自动加上INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT这个条目,-m state表示会用四种状态:NEW,ESTABLISHED,RELATED 和INVALID

NEW说明这个包是第一个包。当使用UDP、TCP等协议时,发出的第一个包的状态就是“NEW”,它会被conntrack匹配

ESTABLISHED当你在使用TCP、UDP等协议时:假设你的主机发出的第一个包成功穿越防火墙,那么接下来你的主机发出和接收到的包的状态都是“ESTABLISHED”

RELATED,当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。换句话说,一个连接要想 是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是RELATED。

INVALID说明数据包不能被识别属于哪个连接或没有任何状态,这种包应该被丢弃。

在连接数不大的时候nf_conntrack表不大,使用 state模块或者NAT功能(虽然没有相关条目)没有问题,但是在大流量的生产环境中不要使用这个模块,这会造成系统的负载上升,出现上面的告警信息。需要在生产环境中做优化。

1、 关闭ipv6的iptables

chkconfig ip6tables off

service ip6tables stop

2、 在Iptables中使用标志位来识别ESTABLISHED链接,并删除所有state状态,配置NAT的条目

iptables -I INPUT -p tcp -m tcp -m multiport --dports 80,443,15533 -j ACCEPT

iptables -I INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT

iptables -D INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

3、 移除内核nf_conntrack相关模块,禁用NAT功能,如果删除不了是因为在别的地方被调用了

lsmod

rmmod nf_conntrack_ipv4

rmmod nf_conntrack_ipv6

rmmod nf_nat

rmmod nf_conntrack_ipv4

rmmod xt_state

rmmod nf_conntrac

rmmod iptable_nat

posted on 2017-12-28 18:12  JeffSunpan27  阅读(100)  评论(0编辑  收藏  举报