ipfw规则( 二 )


log [logamount number]当一个数据包用关键字匹配一个规则的时候,工具LOG_SECURITY 将这个信息保存到syslogd(8)里 。记录信息只在变量net.inet.ip.fw.verbose设置为1的情况下出现(这个是被默认的当内核被命令IPFIREWALL_VERBOSE 编译的时候)并且迄今为止被记录的包的号码,他们的那些规则没有超出他们记录的变量 。如果没有变量被指定,那么这个限定的从变量net.inet.ip.fw.verbose_limit中提取 。
一旦限定被延伸,记录将由清除的计算器或那个进入的包的计算器重新激活 。看resetlog 命令 。
RULE ACTIONS
一个规则可以用以下的某一种行为设置,就是要执行的那部分当数据包匹配规则躯干的时候 。
allow | accept | pass | permit
允许包去匹配规则 。停止搜索 。
check-state
检查包所依靠的规则 。如果一个匹配被发现,则执行规则里联带的行为,另外移动倒下一个规则 。Check-state 规则没有躯干 。如果一个非Check-state 的规则被发现,则动态的规则将在第一或限定的规则里找 。
count 更新计算,为了所有的数据包去匹配规则 。寻找下一个规则 。
deny | drop
匹配这个规则的要丢弃数据包 。搜索结束 。
divert port
匹配这个规则的要将数据包转向到此规则提到的端口去,搜索停止 。
fwd | forward ipaddr[,port]
改变下一跳在被匹配的数据包到一个ip地址去,这个可以是ip也可以是主机名 。
如果ip是本地地址,则被匹配的数据包将被转移到一个本地计算记的端口(或是包上的端口数,如果那个没有被说明在规则里)
如果ip地址是外部的,则端口号(如果被指出)被忽略,并且发送到远端的地址,用路由器在本地路由表里寻找那个ip 。
一个fwd规则不匹配2层包(那些在ether_input, ether_output, or bridged上的包)
fwd行为不根本改变包的内容 。详细说,不更改目的地址,所以数据包被发送到另一个系统通常是被系统拒绝的,除非有一个匹配规则在那个系统上来捕捉他们!至于数据包传送到本地,socket上的本地地址将被放置到数据包的最初的目的地址上,这个使进入的netstat看上去更怪异,但是制定成使用透明的代理服务器了 。
pipe pipe_nr
通过的包到虚拟pipe(为了宽带限制的延迟) 。看TRAFFIC SHAPER CONFIGURATION 。搜索结束,不管出口是从管道并且如果net.inet.ip.fw.one_pass 值没有被设置,数据包仍被传递到下一个防火墙规则 。
queue queue_nr
传递包到虚拟queue(为了宽带限制的使用WF2Q) 。
rejec 被拒绝,跟无法找到主机一样 。
reset 被丢弃的包若是一个tcp包,就试图发送一个tcp重组信息 。搜索结束 。
skipto number
跳读所有后来的规则号,继续搜索第一个号码和更高的那个 。
tee port
发送一个匹配这个规则的拷贝到divert socket邦定的端口 。搜索结束,最初的包被接受 。
unreach code
按规则丢弃的数据包,发送一个ICMP的带编码的不能得到的提示,这个编码是0-255的一个数字,或者以下列的其中一个:网名,主机名,协议,端口,碎片,失败,网络未知,主机未知,独立的,网络禁用的,主机禁用的,到子网,到子机,过滤禁止,主机优先权或者优先权终止 。搜索结束 。
RULE BODY
规则的躯干包含0或更多的参数(例如,明确的来源和目的地址或端口,协议选项,进出的接口等等 。)那些数据包必须匹配除了别的规则 。通常,连接模式都是由操作项固定的 。也就是所有的匹配都是按顺序的进行匹配,个别的模式可以由非操作项给于相反的匹配结果 。例如 :
ipfw add 100 allow ip from not 1.2.3.4 to any
再有,可供选择的匹配模式能由扩号内输入的模式进行建造,例如:

推荐阅读