加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 模拟TCP SYN泛洪的问题

发布时间:2020-12-14 02:33:19 所属栏目:Linux 来源:网络整理
导读:我正在尝试模拟TCP SYN泛洪来调整Web服务器(计划在AWS上部署). 我设置了一个’目标’虚拟机,禁用了iptables并从几个本地’源’机器运行hping(hping -p 80 -i u1000 -c 1000 -S destaddr)(过滤那些OUTPUT链中的RST). 我期待在目标服务器的netstat输出中看到10
我正在尝试模拟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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读