ipfw : 流量整形

ale*_*xus 6 freebsd firewall

我不确定是什么,但似乎我做错了什么......我的目标是能够限制我的一些流量,确切地说是 www 流量。我的一个客户操作系统运行所谓的网络代理,最终用户可以通过他们的网站浏览任何网页,如果有人感兴趣,请查看:

http://www.thespacesurf.com/

所以这是我的/etc/ipfw.rules文件,后跟ipfw showipfw pipe show

冲洗
管道冲洗
管道 1 配置 bw 1Mbit/s 掩码 src-port www
管道 2 配置 bw 1Mbit/s 掩码 src-port www
添加 100 允许通过 lo0 从任何到任何的 ip
将 200 拒绝 ip 从任何添加到 127.0.0.0/8
将 300 拒绝 ip 从 127.0.0.0/8 添加到任何
将 8381 管道 1 tcp 从任何添加到任何 dst 端口 www uid 守护程序
将 8382 管道 2 tcp 从任何添加到任何 src-port www uid 守护进程
添加 8025 允许从任何到任何 dst 端口 smtp 的 tcp
添加 8110 允许从任何到任何 dst 端口 pop3 的 tcp
添加 8143 允许从任何到任何 dst 端口 imap 的 tcp
添加 8993 允许从任何到任何 dst 端口 imap 的 tcp
添加 8995 允许从任何到任何 dst 端口 pop3 的 tcp
从任何到任何添加 65000 个通行证

su-3.2# ipfw 显示
00100 85839853 23452504269 允许通过 lo0 从任何到任何 ip
00200 0 0 拒绝从任何到 127.0.0.0/8 的 ip
00300 0 0 拒绝从 127.0.0.0/8 到任何的 IP
08025 8835622 3440233341 允许从任何到任何 dst 端口 25 的 tcp
08110 748762 44303607 允许从任何到任何 dst 端口 110 的 tcp
08143 443916 26822178 允许从任何到任何 dst 端口 143 的 tcp
08381 139901701 10870804903 管道 1 tcp 从任何到任何 dst 端口 80 uid 守护进程
08382 181159216 209004032651 管道 2 tcp 从任何 80 到任何 uid 守护进程
08993 2621221 332143828 允许从任何到任何 dst 端口 993 的 tcp
08995 880748 87973919 允许从任何到任何 dst 端口 995 的 tcp
65000 323132905 187469722830 允许ip从任意到任意
65535 0 0 拒绝从任何到任何的 ip
su-3.2# ipfw 管道显示
00001:1.000 Mbit/s 0 ms 50 sl。1 个队列(1 个桶)droptail
    掩码:0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___源 IP/端口____ ____Dest。IP/端口____ Tot_pkt/bytes Pkt/Byte Drp
  0 tcp 64.237.55.83/49910 66.218.161.133/80 139909114 10871439505 0 0 50
00002:1.000 Mbit/s 0 ms 50 sl。1 个队列(1 个桶)droptail
    掩码:0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___源 IP/端口____ ____Dest。IP/端口____ Tot_pkt/bytes Pkt/Byte Drp
  0 tcp 66.218.161.133/80 64.237.55.83/49910 181159216 209004032651 0 0 21025730
su-3.2# 

根据mrtg我在ipfw. 我非常乐意提供解决此问题所需的任何其他信息,但对于初学者来说:

su-3.2# uname -a
FreeBSD x.xxx.xxx 7.3-RELEASE FreeBSD 7.3-RELEASE #13: Tue Mar 23 20:47:52 UTC 2010 xxx@x.xxx.xxx:/usr/obj/usr/src/sys/GENERIC amd64
su-3.2# 

小智 1

首先,请检查是否net.inet.ip.fw.one_pass已设置。

其次,我认为您不需要在管道配置上使用该掩码参数。您无法始终确定数据包来自端口 80,例如,如果用户从 NAT 后面进行通信,等等。

第三,我会在没有规则 200 和 300 的情况下尝试它。我不太确定它是如何在内部处理管道的,但是流量整形部分ipfw(8)列出了以下提示:

检查清单 以下是设计规则时需要考虑的一些重要要点:

+o     Remember that you filter both packets going in and out.  Most connec-
Run Code Online (Sandbox Code Playgroud)

系统蒸发散需要数据包双向传输。

+o     Remember to test very carefully.  It is a good idea to be near the
Run Code Online (Sandbox Code Playgroud)

执行此操作时控制台。如果您无法靠近控制台,请使用自动恢复脚本,例如 /usr/share/examples/ipfw/change_rules.sh 中的脚本。

+o     **Do not forget the loopback interface.**
Run Code Online (Sandbox Code Playgroud)

第四,我将更改默认规则(= 最后一条规则 65000)以拒绝所有规则。这是很好的防火墙设计,没有它,所有其他允许规则都只是浪费;)