FreeBSD 流量整形

FreeBSD 流量整形

我正在尝试使用 FreeBSD 进行流量整形,这是我的规则

su-3.2# ipfw show | grep pipe
08380 1514852 125523804 管道 1 tcp 从任意到任意目标端口 80
su-3.2# ipfw pipe 1 显示
00001: 2.000 Mbit/s 0 毫秒 50 sl. 1 个队列 (1 个存储桶) droptail
    掩码:0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT 协议 ___源 IP/端口____ ____目标。 IP/端口____ 总包/字节数 Pkt/字节数 Drp
  0 TCP 64.237.55.83/60598 72.21.81.133/80 6520267 1204533020 0 0 1216
苏-3.2#

首先为什么当我跑步时ipfw pipe 1 显示我得到了相同的源和目标 IP,这似乎从未改变,但总数据包/字节数却在增加

最重要的问题是,完成所有这些之后,我查看了我的 MRTG 统计数据,发现我已经远远超过了 2Mbit/s 的限制。

我究竟做错了什么?

这是配置文件

冲洗
管道冲洗
管道 1 配置带宽 2Mbit/s
添加 100 个允许 ip 从任意到任意通过 lo0
添加 200 拒绝从任何到 127.0.0.0/8 的 ip
添加 300 拒绝来自 127.0.0.0/8 的 ip 到任何
添加 8380 管道 1 tcp 从任意到任意 src 端口 www uid 守护进程
添加 8380 管道 1 tcp 从任意到任意 dst 端口 www uid 守护进程
添加 65000 传递全部从任意到任意

答案1

您将 http 流量限制为 2Mb/s,但允许所有其他流量通过。因此,您仍然可以拥有 50Mb/s 的 FTP 流量,而不受限制

我曾经这样制定政策:

# flush all rules
ipfw -f flush

ipfw pipe 1 config bw 256Kbits/s
ipfw pipe 2 config bw 512Kbits/s
ipfw pipe 10 config bw 1Mbits/s
ipfw pipe 50 config bw 20Mbits/s
ipfw pipe 60 config bw 20Mbits/s
ipfw pipe 100 config bw 100Mbits/s


ipfw add 1 pipe 50 ip from X.X.X.X/21 to any out
ipfw add 2 pipe 60 ip from any to X.X.X.X/21 in

因此,内部和外部的速率分别为 20Mb/s 和 20Mb/s。如果您只使用一个管道,那么共享的速率为 20Mb/s,即 10Mb/s。

您的流量整形必须包括最后的所有流量,因此没有流量整形就没有流量

答案2

如果你对 ipfw 很感兴趣,可以看看本网站- 他们谈论的是 OS X 流量整形,但 ipfw 就是 ipfw,它应该能帮你搞定。(基本上,你似乎错过了管道上的队列,如果我没记错的话,这会导致流量整形中断)。

如果你还没有使用过 ipfw,你可以使用 pf 和 A​​LTQ 更轻松地完成这项工作(以及许多其他 QOS 和队列工作)(一个参考,还有更多可用资源,包括pf 排队文档

一般注意事项:排队/整形在应用于出站流量时效果最佳(因此,如果您想限制 ISP 接口上的入站流量,则最好限制内部接口上的出站流量)

相关内容