Debian系统关闭iptables的conntrack跟踪
2015-11-12 19:27
746 查看
测试脚本
为方便测试,提供iptables的开关脚本 /opt/iptables-switch.sh :#!/bin/bash # /opt/iptables-switch.sh status | disable | enable ipt_mod_conf="/etc/modprobe.d/iptables.conf" ipt_mod_list="ip_vs iptable_nat nf_nat_ipv4 ipt_MASQUERADE nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack iptable_filter ip_tables xt_tcpudp xt_multiport xt_length xt_addrtype x_tables" nf_max=$(sysctl -e -n net.nf_conntrack_max) nf_cur=$(sysctl -e -n net.netfilter.nf_conntrack_count) ipt_hsize=$(grep 'MemTotal' /proc/meminfo | awk '{printf("%d",$2/16)}') fuck_ipt_mod(){ echo '# disable iptables conntrack modules' > ${ipt_mod_conf} for ipt_mod in ${ipt_mod_list}; do echo "blacklist ${ipt_mod}" >> ${ipt_mod_conf} modprobe -r ${ipt_mod} done } clean_ipt_rule(){ iptables -F iptables -Z iptables -X for ipt_table in $(cat /proc/net/ip_tables_names 2>/dev/null); do iptables -t ${ipt_table} -F iptables -t ${ipt_table} -Z iptables -t ${ipt_table} -X done iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT } ipt_enable(){ echo "options nf_conntrack hashsize=${ipt_hsize}" > ${ipt_mod_conf} # /sys/module/nf_conntrack/parameters/hashsize for ipt_mod in ${ipt_mod_list}; do modprobe -q -r ${ipt_mod} && modprobe -a ${ipt_mod} done dmesg --reltime | grep nf_conntrack | tail -2 2>/dev/null sysctl -e -w net.nf_conntrack_max=4194304 sysctl -e -w net.ipv4.netfilter.ip_conntrack_max=4194304 sysctl -e -w net.netfilter.nf_conntrack_max=4194304 sysctl -e -w net.netfilter.nf_conntrack_tcp_timeout_established=1200 sysctl -e -w net.netfilter.nf_conntrack_tcp_timeout_close_wait=60 sysctl -e -w net.netfilter.nf_conntrack_tcp_timeout_fin_wait=120 sysctl -e -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=120 } case "$1" in status) if [[ -z ${nf_max} ]]; then echo 'nf_conntrack disabled.' else echo "nf_conntrack used: ${nf_cur}/${nf_max}." fi ;; disable) clean_ipt_rule fuck_ipt_mod $0 status ;; enable) ipt_enable $0 status ;; *) echo "Usage: $0 {status|disable|enable}" exit 2 ;; esac exit 0
开启防火墙
启用防火墙,并监控nf_conntrack状态:
/opt/iptables.sh enable watch -n 1 -d '/opt/iptables.sh status'
施加压力
找台机器给ssh加压:
watch -n 0.1 -d 'curl -s demo.higkoo.com:22'
故障重现
由于测试压力小,手动调小nf_conntrack_max:
sysctl -w net.netfilter.nf_conntrack_max=20
然后故障就重现了:
不用的话就
disable防火墙,脚本中的
enable会开启并做
iptables优化
sudo /opt/iptables.sh status sudo /opt/iptables.sh enable sudo /opt/iptables.sh disable
啥也别说了,都写在脚本里了。
相关文章推荐
- Linux下主机充当防火墙的巧妙应用之iptables
- Debian灾难性漏洞
- Debian 6.02 (squeeze)下编译安装 MySQL 5.5的方法
- iptables做策略屏蔽QQ与MSN
- Nginx+iptables屏蔽访问Web页面过于频繁的IP(防DDOS,恶意访问,采集器)
- Shell脚本实现监控iptables规则是否被修改
- Debian中完全卸载MySQL的方法
- 修改iptables防火墙规则解决vsftp登录后不显示文件目录的问题
- 一键配置CentOS iptables防火墙的Shell脚本分享
- debian安装后sudo命令不能用的解决方法
- 在Debian系统下配置LNMP的教程
- linux增加iptables防火墙规则的示例
- Linux防火墙iptables入门教程
- Debian 7 和 Debian 8 用户安装 Java 8的方法
- linux服务器下通过iptables+Denyhost抵御暴力破解的配置方法
- CentOS最严格iptables规则
- 簡單認識 snort rules 條件格式 IDS
- 簡單使用 psad 端口功擊偵測系統 iptables snort
- 簡單設定 exim4 以不同身份郵寄,不用 root
- 簡單設定 kernel 選項在使用 iptables 前