我正在尝试使用 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。
您的流量整形必须包括最后的所有流量,因此没有流量整形就没有流量