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

我们有一台Linux服务器作为我们办公室的路由器/防火墙。 偶尔有人会上传一个占用我们所有带宽的大文件。 我不想执行任何复杂的规则或stream量整形,但是我想知道是否有办法在现场放慢单个连接? 我发现tcpnice ,但它不会减慢我的testing转移。

如果stream量整形不能正确地为shell和活动上传形成stream量(我认为它可以,但不确定),那么你可以:

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

b)限制总的ssh速率 – 唯一的问题是如果你填满了链接的上传容量,如果你把速率限制在50kbps之类的话,ssh会很好的交互工作(这将迫使用户使用其他一些协议来处理更大的文件传输)

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

另外,stream量整形应该使stream量更加平衡,而不pipe单一连接不会垄断整个链路。

编辑:这是一个使用bash脚本的例子 。 它提到ssh确实将TOS设置为交互式,所以我认为Wondershaper会利用这一点。

如果你想要除Wondershaper之外的其他选项,请确保你看看shorewall或pyshape 。

Shorewall是相当成熟和灵活性,力量和简单的好平衡。

Wondershaper可以创造奇迹,而且它很容易设置。 除此之外,你可以find一些用户级程序来做到这一点。 在Linux中有Trickle ,可能有Windows的等价物。

但是,真的,你想要stream量调整 – 人们会忘记运行程序等。只是限制上传比稍微less于你的全部容量可能会很好。

在iptables(8)联机帮助页中查看connrate。 您可以匹配连接速度,并通过将连接速度放在适当的tc类或放置或放样或任何适合您的连接上来减慢连接速度。

你有没有想过build立一个反向的Squid代理和设置延迟池 ? 你也可以用iptables的限制指令来做到这一点。

我对你的请求的一个问题是,你似乎想要开始限制已经build立的连接的传输速率,这将是相当困难的,因为我所能想到的所有事情都将要开始在新的连接,并将离开现有的连接。

我必须同意亚历克斯的看法,你可能需要某种forms的stream量整形器,你希望看到的是每秒数据包,因为一个交互式shell比一个适度的文件传输要小得多。