减慢通过 Linux 路由器的单个连接的速度?

减慢通过 Linux 路由器的单个连接的速度?

我们办公室有一台 Linux 服务器,充当路由器/防火墙。偶尔有人会上传一个占用我们所有带宽的大文件。我不想实施任何复杂的规则或流量整形,但我想知道是否有办法当场减慢单个连接的速度?我发现特普尼采,但在我的测试中它并没有减慢传输速度。

答案1

如果流量整形不能正确地对 shell 和主动上传的流量进行整形(我认为可以,但不确定),那么您可以:

a)在两个端口上运行 ssh - 您可以优先考虑一个用于文件传输,另一个用于交互式工作。

b) 限制总 ssh 速率 - 唯一的问题是如果你填满了链接的上传容量,并且如果你将速率限制为 50kbps 左右,ssh 将很好地交互工作(这将迫使用户使用其他协议进行更大的文件传输)

c) 如果可以的话,优先考虑源地址上的流量

此外,流量整形应该使流量更加平衡,以便单个连接不会垄断整个链路。

编辑:这是一个例子使用 bash 脚本。它提到 ssh 确实将 TOS 从交互设置为交互,因此我推测 Wondershaper 利用了这一点。

如果你想要其他选择奇迹塑造者一定要看看岸墙或者pyshape

Shorewall 相当成熟,在灵活性、强大功能和简单性之间取得了很好的平衡。

答案2

奇迹塑造者可以创造奇迹,而且设置起来也相当容易。除此之外,你还可以找到一些用户空间程序来做这件事。在 Linux 中有涓流,Windows 上可能有等效版本。

但实际上,您需要流量整形 - 人们会忘记运行该程序等。仅将上传限制到略低于您的全部容量可能会对您有很大帮助。

答案3

请查看 iptables(8) 手册页中的 connrate。您可以匹配连接速率,并通过将连接放入适当的 tc 类别或 drop 或 tarpit 或任何适合您的方法,来减慢上传速度过快的连接。

答案4

您是否考虑过设置反向 Squid 代理并设置延时池? 您也可以使用 iptables 的 limit 指令来执行此操作。

我对您的请求存在的一个问题是,您似乎想要开始限制已建立的连接的传输速率,这将非常困难,因为我能想到的所有事情都希望在新的连接上开始操作,并将保持现有连接继续运行。

我不得不同意 alex 的观点,你可能需要某种流量整形器,你想要查看的是每秒数据包数,因为交互式 shell 的值将比适度的文件传输小得多。

相关内容