每IP的FreeBSD带宽限制

我有一个运行FreeBSD的公共HTTP服务器。

Nginx允许我限制每个连接的吞吐量,但是我不想把每个IP限制为只有一个连接,所以我需要一个解决scheme来限制每个IP。 Nginx不能做到这一点,第三方模块不再维护。

有了nginx不是一个选项,我认为操作系统级别应该能够处理它,但所有其他的问题和答案似乎都假设我知道我想要交通形成的IP。 由于我的服务器是一个公共的HTTP服务器,我不想为一组特定的IP进行stream量处理,而是针对每个IP进行stream量分类,并按IP进行分组。

有没有办法FreeBSD可以限制每个IP的IP吞吐量?

在备注方面,我的备份解决scheme是清漆,似乎支持这种情况,但将是一个额外的软件支持。

其实是有的。 如果您需要prioretization,它被称为dynamic队列 ,或者您需要塑造dynamicpipe道 ,都在DUMMYNET中实现。 有可能将这两者结合起来,形成一个真正的CBQconfiguration。

man 8dynamicpipe道的简单例子ipfw :

一个更复杂的例子是限制每个主机限制的净出站stream量,而不是每个networking的限制:

ipfw add pipe 1 ip from 192.168.2.0/24 to any out ipfw add pipe 2 ip from any to 192.168.2.0/24 in ipfw pipe 1 config mask src-ip 0x000000ff bw 200Kbit/s queue 20Kbytes ipfw pipe 2 config mask dst-ip 0x000000ff bw 200Kbit/s queue 20Kbytes 

我想你也可以在nginx中启用HTTP / 2,从而减less每个支持HTTP / 2的客户端使用的连接数量。