号称阿里云的SLB可以处理syn-flood攻击,如何实现的呢?
猜想:
阿里云的SLB在做tcp代理时,如果能在和client端tcp握手成功之后,再和后端服务器进行tcp连接,然后进行正常的服务,这样不就可以很好地避免后端服务器遭受syn-flood攻击了吗?
测试:
- 在A机器上添加iptable规则,drop掉所有SLB进来的数据包(就是为了drop掉syn-ack),避免成功创建连接
- 在A机器上抓包,在SLB后面的机器上抓包
- 从A机器向SLB发送请求
- 结果:SLB后端机器上可以看到syn请求
如果符合猜想,则:SLB后端机器上不会看到syn请求;事实上看到了syn请求,于是,不符合猜想。
结论: SLB在做tcp代理时,不会在和client握手成功之后才向后端服务器发起tcp连接的。(可能那样会比较麻烦,可能需要处理序号之类的东西)
对于一个高级的tcp负载均衡设备来讲,当接到client的syn包后,就先去连接后端,如果后端能连接,再syn-ack给client,这样逻辑上是好的