ipfw规则( 四 )


匹配ip包的总长度,包括头和数据 。
ipoptions spec
匹配谁的ip头包含用逗号隔开的设置,支持以下几种:
ssrr (strict source route), lsrr (loose source route), rr (record
packet route) and ts (timestamp). 没有详细说明则用"!"表示 。
ipprecedence precedence
匹配有优先权的IP 。
iptos spec
匹配带有被逗号隔开的服务类型表的ip,支持以下几种:
lowdelay (IPTOS_LOWDELAY), throughput (IPTOS_THROUGHPUT),
reliability (IPTOS_RELIABILITY), mincost (IPTOS_MINCOST),
congestion (IPTOS_CE). 没有详细说明则用"!"表示 。
ipttl ttl
匹配ip的存活时间
ipversion ver
匹配ip的版本号
keep-state
在匹配时,防火墙将创建一个动态规则,它的默认的行为就是去匹配双向的通信,在源和IP/port使用同样协议的的目的地之间 。这个规则有一定寿命,这个存活时间在每次要匹配的包被找到后重新更新 。
layer2 仅匹配2层的包,例如通过ipfw的从ether_demux() and ether_output_frame().
limit {src-addr | src-port | dst-addr | dst-port} N
防火墙只允许像设置里的那个数N连接,一个或多个的源和目的地址都会被定义 。
{ MAC | mac } dst-mac src-mac
匹配带有MAC的源和目的地址,详细的就像一些关键字,或者是6个被逗号隔开的数字,例如下:
MAC 10:20:30:40:50:60/33 any
注意MAC地址的规则(目的地第一,源第二)他们同样也在信息里,只是对应的习惯用IP地址罢 了 。
mac-type mac-type
匹配跟内网类型一样的数据包 。mac类型也用同样的方法被定义就像端口号 。你可用象征的名字为你知道的含义,像vlan, ipv4, ipv6.这个值也可以被直接输入,像10近制,16近制,他们输出总是按16近制,除非-N设置启用,那么那些符号将被试图启用 。
proto protocol
匹配ipv4的通用协议 。
recv | xmit | via {ifX | if* | ipno | any}
匹配接受的包,分别的转输或是通过,接口被将由精确的名字(ifX)和设备名字(if*)所定义,还可以由ip或一些其它的接口定义 。
via这个关键字就是说,所有的接口总是要被检查的 。如果是recv or xmit取代了via则表示只接受,或只转发,这就有可能匹配包是基于接受和转发的接口上的 。例如:
ipfw add deny ip from any to any out recv ed0 xmit ed1
recv接口可以测试在通过他们所进出的包,所以只要xmit在使用中,出就会被请求(没有进) 。

一个包可以没有接受或转发接口:数据包从本地主机出来,是没有接受接口的,一会儿就回到达没有转发接口的本地主机 。
setup 匹配只带SYN字节不带ACK字节的TCP包,
src-ip ip-address
匹配ip包里有源ip在地址列表里的
src-port ports
匹配ip包里有源端口在端口列表里的
tcpack ack
仅TCP包,匹配TCP头带有ack字样的包 。
tcpflags spec
仅TCP包,匹配TCP头带有逗号隔开的字样的包,支持以下几种:

fin, syn, rst, psh, ack and urg. The absence of a particular
flag may be denoted with a `!". A rule which contains a tcpflags
specification can never match a fragmented packet which has a
non-zero offset. See the frag option for details on matching
fragmented packets.
tcpseq seq
仅TCP包,匹配TCP头带号码区有seq字样的包 。
tcpwin win
仅TCP包,匹配TCP头带window区有win字样的包 。
tcpoptions spec
仅TCP包,匹配TCP头包含逗号隔开的选想说明,支持以下几种:

mss (maximum segment size), window (tcp window advertisement),
sack (selective ack), ts (rfc1323 timestamp) and cc (rfc1644
t/tcp connection count). 空缺用`!"表示 。
uid user
匹配所有用户收发数据包,用户可以由名字或认证数字来匹配 。
SETS OF RULES
每一条规则都是32不同条例中的其中一个,0-31,31为保留的默认规则 。

推荐阅读