ipfw add allow tcp from my-net to any setup keep-state
这里让防火墙建立一个动态规则,为了那些来自网络内部的带有有序的SYN的包的启动连接 。当遇到第一个check-state 或keep-state 规则,动态规则将被检查 。一个check-state 规则通常是放置在规则表 里的开始的部分到工作扫描规则表的最少的几个,你的长度可能会不一样 。
一个用户可以开通的最大连接数,可以使用下列规则类型:
ipfw add allow tcp from my-net/24 to any setup limit src-addr 10
ipfw add allow tcp from any to me setup limit src-addr 4
前者是允许没一个在那个网络上的主机可以开10个tcp连接 。后面的将被放到服务器上,去证实单一的客户端没有同时使用4个以上的tcp连接 。
BEWARE:数据规则可能会被 SYN-flood 攻击,还有其他一些的攻击手段可以在设置sysctl的变量的时候限制他们 。
这里有一些好办法,去察看那些账户纪录和时间段的信息:
ipfw -at list
不带时间段的:
ipfw -a list
同意义的:
ipfw show
下一个规则将所有来自192.168.2.0/24的包转到为5000端口去:
ipfw divert 5000 ip from 192.168.2.0/24 to any in
TRAFFIC SHAPING
下列规则显示ipfw and dummynet的一些应用 。
这个规则5%的几率随机丢掉引入的包:
ipfw add prob 0.05 deny ip from any to any in
作一个dummynet pipes也可以达到同样的效果:
ipfw add pipe 10 ip from any to any
ipfw pipe 10 config plr 0.05
我们可以使用管道,手工限制宽带,例如,在一个当路由器的及其上,如果我们想限制从本地192.168.2.0/24客户端通信,做法如下:
ipfw add pipe 1 ip from 192.168.2.0/24 to any out
ipfw pipe 1 config bw 300Kbit/s queue 50KBytes
注意我们用非修改的,所以,那个规则只能用一次 。记住实际上,ipfw规则在进和出的包都要检查 。
我们应该模拟一个带有限带宽的双向的连接,以下是正确的做法:
ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in
ipfw pipe 1 config bw 64Kbit/s queue 10Kbytes
ipfw pipe 2 config bw 64Kbit/s queue 10Kbytes
上述的很重要,例如,如果你想看你的网页将怎样寻找你那个连接很慢的用户 。你应该不仅仅使用一个 通道为双向连接,除非你想模拟一个半双工的方法(例如:AppleTalk, Ethernet, IRDA),双通道有同样的 设置是不可取的,所以我们也模拟不均衡的连接 。
我们应该用RED queue运算法则测试网络:
ipfw add pipe 1 ip from any to any
ipfw pipe 1 config bw 500Kbit/s queue 100 red 0.002/30/80/0.1
另一个典型的应用是介绍一些通讯中的延迟 。这个可以影响非常多的关于远端程序调用的应用 。
ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in
ipfw pipe 1 config delay 250ms bw 1Mbit/s
ipfw pipe 2 config delay 250ms bw 1Mbit/s
每一流程的可以用在多种意图里,一个简单的例子就是计算流量:
ipfw add pipe 1 tcp from any to any
ipfw add pipe 1 udp from any to any
ipfw add pipe 1 ip from any to any
ipfw pipe 1 config mask all
上面的规则设置将建立一个列队(并收集统计表)为所有的通信 。因为管道没有局限性,仅受统计表的影响 。注意我们需要3个规则,不只是最后一个,因为当ipfw试图匹配ip包,他将不考虑端口,所以我们不关心在单独端口上的连接 。
一个经典的例子是限制有主机限制的网络的通信的外出,要比网络限制的好:
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
推荐阅读
- FreeBSD ipfw 防火墙基础指南
- FreeBSD 利用IPFW实现限制局域网使用QQ
- FreeBSD下的带宽控制 -- ipfw+dummynet
- FreeBSD MRTG-Packet Count
- 足球有哪些需要了解的规则?
- 怎么快速学会划拳
- 刑事证据采信规则是怎样的
- Ipf+ipnat+ipfw建立带流量控制的透明网关
- 向往的生活中的数马游戏规则介绍
- 78 FreeBSD连载:设置和使用ipfw/natd
