解决方案:

(1) 加大 ip_conntrack_max 值:

查出原本的 ip_conntrack_max 值,指令: cat /proc/sys/net/ipv4/ip_conntrack_max
写入理想的数值 (每一个 ip_conntrack buffer 会占用 292 Bytes)
指令: echo “数值” > /proc/sys/net/ipv4/ip_conntrack_max
例如: echo “163840″ >/proc/sys/net/ipv4/ip_conntrack_max

 

 

这个效果是暂时的, 如果要每次开机都使用新的数值, 需将上述指令写入 /etc/rc.d/rc.local
或是在 /etc/sysctl.conf 加入: net.ipv4.ip_conntrack_max = 数值
或使用指令: sysctl -w net.ipv4.ip_conntrack_max=数值

(2): 降低 ip_conntrack timeout 时间

重设:ip_conntrack_tcp_timeout_established (原值: 432000, 单位: 秒)
指令:echo “数值” > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
例如:echo “180″ > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

开机自动设置的作法同方法(1).

(3):开启 tcp_syncookies

重设:tcp_syncookies (默认值 0)
例如:echo ’1′> /proc/sys/net/ipv4/tcp_syncookies

开机自动设置的作法同方法(1).

经过以上设置后,系统日志出现一条:kernel: possible SYN flooding on port 80. Sending cookies.后不再出现:kernel: printk: xxx messages suppressed. 的提示。访问网站明显感觉速度提升。

附其他相关命令:

查看目前 ip_conntrack buffer 使用状况
指令: grep conn /proc/slabinfo

 

#syn
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.ipv4.tcp_synack_retries=3
sysctl -w net.ipv4.tcp_syncookies=1

#Syn flood
#iptables -A INPUT -p tcp –syn -m limit –limit 1/s -j ACCEPT
#iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
#ping of death
#iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT

vi/etc/sysctl.conf

http://hi.baidu.com/icelandbjork/blog/item/48721da1a1c4518246106435.html

5.12  掉包解决方法
echo “965535″ > /proc/sys/net/ipv4/ip_conntrack_max
echo 180>/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

echo 120   > /proc/sys/net/ipv4/neigh/default/gc_stale_time
echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 8192 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

限制同一ip连接数:
iptables -I INPUT -m connlimit –connlimit-above 5 -p tcp –dport 80 -j REJECT

http://myeblog.3322.org/1184.html

https://bbs.et8.net/bbs/showthread.php?t=977006