使用 Linux 调整出站流量以控制下载速度

使用 Linux 调整出站流量以控制下载速度

我遇到过这样的情况:一台服务器同时向大型网络服务器发出大量请求。目前,我无法控制请求的数量或执行此操作的应用程序的请求速率。这些网络服务器的响应超出了互联网线路的处理能力。(基本上,我们正在对自己发起 DoS 攻击)。

我将推动在应用程序级别修复此问题,但目前,我是否可以使用 Linux 服务器上的流量整形来控制此问题?我知道我只能调整出站流量,但也许有一种方法可以减慢 TCP 响应速度,以便另一端检测到拥塞,这将有助于解决我的情况?如果 tc 有类似问题,配置会是什么样子?

我的想法是,流量控制可能帮助我控制哪些数据包在到达路由器之前被丢弃。

答案1

您应该能够对 TCP 连接进行速率限制,如果远程服务器遵守 TCP 数据包传输和接收规则,那么您应该能够对速率进行限制以避免 DoS。

我使用 HTB 取得了很大的成功 http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm

如果你更熟悉思科,那么你可以在网关上而不是在服务器本身上实施 qos 策略

使用 qos 是比 iptables --limit 更好的解决方案,它确保可用带宽得到有效利用。不会有任何流被占用,并且每个流都会得到公平对待。

HTB 相当先进,您可以先使用其他一些 qos 方法来了解 qos 的工作原理。编写 qos 规则很容易,但要证明它们在所有用例中确实按照您的要求运行则困难得多。

答案2

我认为你可以使用带有“--limit”的 iptables,或者 hashlimit(或者最近的 --seconds --hitcount)。[当然只是作为临时解决方案。]

答案3

如何使用trickle?它也可以作为trickled全局带宽整形运行http://www.linux.com/archive/feed/61293(实际上我自己也发现了这一点 :-)

相关内容