我有一种情况,服务器同时从大型网络服务器发出大量请求。目前,我无法控制执行此操作的应用程序的请求数量或请求速率。这些网络服务器的响应超出了 Internet 线路的处理能力。(基本上,我们正在对自己发起 DoS)。
我将推动在应用程序级别修复此问题,但目前,我是否可以在 Linux 服务器上使用流量整形来控制它?我知道我只能调整出站流量,但也许有一种方法可以减慢 TCP 响应速度,以便对方检测到拥塞,这对我的情况有帮助吗?如果 tc 有类似的东西,配置可能是什么样的?
这个想法是流量控制可以帮助我控制哪些数据包在到达我的路由器之前被丢弃。
您应该能够限制 tcp 连接的速率,如果远程服务器遵守 tcp 数据包传输和接收规则,那么您应该能够限制速率以避免 dos。
我在 HTB http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm上取得了很好的成功
如果您更熟悉 cisco,那么您可以在网关上而不是在服务器本身上实施 qos 策略
使用 qos 是比 iptables --limit 更好的解决方案,它可以确保有效使用可用带宽。没有流将被饿死,每个流都将得到公平对待。
HTB 相当先进,您可以先使用其他一些 qos 方法来了解 qos 的工作原理。编写 qos 规则很容易,但要证明它们确实在做您想要的所有用例则要困难得多。
我认为您可以将 iptables 与“--limit”或 hashlimit(或最近的 --seconds --hitcount)一起使用。[当然只是作为临时解决方案。]
怎么用
trickle
?它也可以作为trickled
全局带宽整形运行http://www.linux.com/archive/feed/61293(实际上是我自己发现的 :-)