davr Asked: 2010-03-27 13:07:17 +0800 CST2010-03-27 13:07:17 +0800 CST 2010-03-27 13:07:17 +0800 CST 减慢通过 Linux 路由器的单个连接? 772 我们有一台 Linux 服务器作为我们办公室的路由器/防火墙。偶尔有人会上传一个占用我们所有带宽的大文件。我不想实施任何复杂的规则或流量整形,但我想知道是否有办法在现场减慢单个连接?我找到了 tcpnice,但它并没有减慢我测试中的传输速度。 firewall router linux traffic-shaping 4 个回答 Voted Best Answer Unreason 2010-04-01T02:19:59+08:002010-04-01T02:19:59+08:00 如果流量整形不能正确地整形 shell 和主动上传的流量(我认为可以,但不确定),那么您可以: a) 在两个端口上运行 ssh - 您可以优先考虑一个用于文件传输和一个用于交互工作。 b) 限制总 ssh 速率 - 唯一的问题是,如果你填满了链接的上传容量,并且如果你将速率限制在 50kbps 之类的东西,ssh 将很好地交互工作(这将迫使用户使用其他协议来传输更大的文件) c)如果可以的话,优先考虑源地址上的流量 此外,流量整形应该使流量更加平衡,以使单个连接不会垄断整个链路。 编辑:这是一个使用 bash 脚本的示例。它提到 ssh 确实将 TOS 设置为交互到交互,所以我认为 Wondershaper 会利用这一点。 如果您想要除Wondershaper之外的其他选项,请务必查看shorewall或pyshape。 Shorewall 非常成熟,在灵活性、功能和简单性之间取得了很好的平衡。 alex 2010-03-27T14:25:22+08:002010-03-27T14:25:22+08:00 Wondershaper可以创造奇迹,而且很容易设置。除此之外,您可以找到一些用户级程序来做到这一点。在 Linux 中有Trickle,可能有适用于 Windows 的等价物。 但实际上,您需要流量整形——人们会忘记运行程序等。仅将上传限制在略低于您的全部容量可能会给您带来很多好处。 Aleksandar Ivanisevic 2010-03-31T22:39:45+08:002010-03-31T22:39:45+08:00 查看 iptables(8) 联机帮助页中的 connrate。您可以匹配连接速率并减慢上传速度过快的连接,方法是将其放入适当的 tc 类或 drop 或 tarpit 或任何适合您的方法。 d34dh0r53 2010-03-30T20:59:41+08:002010-03-30T20:59:41+08:00 您是否想过设置反向 Squid 代理并设置延迟池?你也可以使用 iptables 的 limit 指令来做到这一点。 我对您的请求的一个问题是,您似乎想开始限制已经建立的连接的传输速率,这将很难做到,因为我能想到的一切都想开始在一个新连接,并将保留现有连接。 我必须同意 alex 的观点,因为您可能需要某种流量整形器,您要查看的是每秒数据包数,因为交互式 shell 的值将比适度的文件传输小得多。
如果流量整形不能正确地整形 shell 和主动上传的流量(我认为可以,但不确定),那么您可以:
a) 在两个端口上运行 ssh - 您可以优先考虑一个用于文件传输和一个用于交互工作。
b) 限制总 ssh 速率 - 唯一的问题是,如果你填满了链接的上传容量,并且如果你将速率限制在 50kbps 之类的东西,ssh 将很好地交互工作(这将迫使用户使用其他协议来传输更大的文件)
c)如果可以的话,优先考虑源地址上的流量
此外,流量整形应该使流量更加平衡,以使单个连接不会垄断整个链路。
编辑:这是一个使用 bash 脚本的示例。它提到 ssh 确实将 TOS 设置为交互到交互,所以我认为 Wondershaper 会利用这一点。
如果您想要除Wondershaper之外的其他选项,请务必查看shorewall或pyshape。
Shorewall 非常成熟,在灵活性、功能和简单性之间取得了很好的平衡。
Wondershaper可以创造奇迹,而且很容易设置。除此之外,您可以找到一些用户级程序来做到这一点。在 Linux 中有Trickle,可能有适用于 Windows 的等价物。
但实际上,您需要流量整形——人们会忘记运行程序等。仅将上传限制在略低于您的全部容量可能会给您带来很多好处。
查看 iptables(8) 联机帮助页中的 connrate。您可以匹配连接速率并减慢上传速度过快的连接,方法是将其放入适当的 tc 类或 drop 或 tarpit 或任何适合您的方法。
您是否想过设置反向 Squid 代理并设置延迟池?你也可以使用 iptables 的 limit 指令来做到这一点。
我对您的请求的一个问题是,您似乎想开始限制已经建立的连接的传输速率,这将很难做到,因为我能想到的一切都想开始在一个新连接,并将保留现有连接。
我必须同意 alex 的观点,因为您可能需要某种流量整形器,您要查看的是每秒数据包数,因为交互式 shell 的值将比适度的文件传输小得多。