linux – 模拟TCP SYN泛洪的问题

前端之家收集整理的这篇文章主要介绍了linux – 模拟TCP SYN泛洪的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试模拟TCP SYN泛洪来调整Web服务器(计划在AWS上部署).

我设置了一个’目标’虚拟机,禁用了iptables并从几个本地’源’机器运行hping(hping -p 80 -i u1000 -c 1000 -S destaddr)(过滤那些OUTPUT链中的RST).

我期待在目标服务器的netstat输出中看到1000条SYN_RECV记录,但我只看到256条最大值(每台“源”机器256条).我似乎在“目标”机器上达到了一些限制,无法找到它的位置. tcp_max_syn_backlog增加到8096.

知道这个限制的设定吗?

解决方法

好的,所以我在webhostingtalk上问了同样的问题,虽然没有得到直接答案,但它有助于扩大视野:)

基本上,我忽略了应用程序级别(webserver)限制.但这位来自荷兰的优秀绅士们深入挖掘并在此发布了他非常相关的调查结果:

http://blog.dubbelboer.com/2012/04/09/syn-cookies.html

基本上Web服务器(我使用的是Nginx)是将一个常量(listen backlog limit)传递给listen函数,它在这里定义:

https://github.com/git-mirror/nginx/…x_config.h#L97

定义NGX_LISTEN_BACKLOG 511

所以内核限制甚至还没有发挥作用.

编译了Nginx常量,所以我快速检查了apache – 幸运的是它是可配置的:

http://httpd.apache.org/docs/2.0/mod…#listenbacklog

所以我把它设置为8k并得到我需要的东西(好吧,2包丢失:

资源:
hping -S -c 20000 -i u20 -p 80目标

目标:
netstat -nta | grep SYN_RECV |厕所
8192 49152 729088

最后,我原来的256个连接限制实际上是因为我最初向端口22发送了请求(而sshd显然将tcp连接backlog设置为256).

猜你在找的Linux相关文章