- 论坛徽章:
- 0
|
还是看原文吧,抱歉
完整的命令列表,参阅pfctl的man手册页。
------------------------------------------------------------------------------
$OpenBSD: config.html,v 1.12 2004/05/07 01:55:23 nick Exp $
================================================================
PF: 列表和宏
------------------------------------------------------------------------------
目录
* 列表
* 宏
------------------------------------------------------------------------------
列表
一个列表允许一个规则集中指定多个相似的标准。例如,多个协议,端口号,地址等等。因此,不需要为每一个需要阻止的IP地址编写一个过滤规则,一条规则可以在列表中指定多个IP地址。列表的定义是将要指定的条目放在{ }大括号中。
当pfctl(8)在载入规则集碰到列表时,它产生多个规则,每条规则对于列表中的一个条目。例如:
block out on fxp0 from { 192.168.0.1, 10.5.32.6 } to any
展开后:
block out on fxp0 from 192.168.0.1 to any
block out on fxp0 from 10.5.32.6 to any
多种列表可以在规则中使用,并不仅仅限于过滤规则:
rdr on fxp0 proto tcp from any to any port { 22 80 } -> \
192.168.0.6
block out on fxp0 proto { tcp udp } from { 192.168.0.1, \
10.5.32.6 } to any port { ssh telnet }
注意逗号在列表条目之间是可有可无的。
宏
宏是用户定义变量用来指定IP地址,端口号,接口名称等等。宏可以降低PF规则集的复杂度并且使得维护规则集变得容易。
宏名称必须以字母开头,可以包括字母,数字和下划线。宏名称不能包括保留关键字如:
pass, out, 以及 queue.
ext_if = "fxp0"
block in on $ext_if from any to any
这生成了一个宏名称为 ext_if. 当一个宏在它产生以后被引用时,它得名称前面以$字符开头。
宏也可以展开成列表,如:
friends = "{ 192.168.1.1, 10.0.2.5, 192.168.43.53 }"
宏能够被重复定义,由于宏不能在引号内被扩展,因此必须使用下面得语法:
host1 = "192.168.1.1"
host2 = "192.168.1.2"
all_hosts = "{" $host1 $host2 "}"
宏 $all_hosts 现在会展开成 192.168.1.1, 192.168.1.2.
------------------------------------------------------------------------------
$OpenBSD: macros.html,v 1.11 2004/05/07 01:55:23 nick Exp $
==============================================================================
PF: 表
------------------------------------------------------------------------------
目录
* 简介
* 配置
* 用 pfctl 进行操作
* 指定地址
* 地址匹配
------------------------------------------------------------------------------
简介
表是用来保存一组IPv4 或者 IPv6地址。在表中进行查询是非常快的,并且比列表消耗更少的内存和cpu时间。由于这个原因,表是保存大量地址的最好方法,在50,000个地址中查询仅比在50个地址中查询稍微多一点时间。表可以用于下列用途:
* 过滤,整形,NAT和重定向中的源或者目的地址.
* NAT规则中的转换地址.
* 重定向规则中的重定向地址.
* 过滤规则选项中 route-to, reply-to, 和 dup-to的目的地址.
表可以通过在pf.conf里配置和使用pfctl生成。
配置
在 pf.conf文件中, 表是使用table关键字创建出来的。下面得关键字必须在创建表时指定。
* constant – 这类表得内容一旦创建出来就不能被改变。如果这个属性没有指定,可以使用pfctl(8)添加和删除表里得地址,即使系统是运行在2或者更高得安全级别上。
* persist – 即使没有规则引用这类表,内核也会把它保留在内存中。如果这个属性没有指定,当最后引用它得规则被取消后内核自动把它移出内存。
实例:
table { 192.0.2.0/24 }
table const { 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8 }
table persist
block in on fxp0 from { , } to any
pass in on fxp0 from to any
地址也可以用“非”来进行修改,如:
table { 192.0.2.0/24, !192.0.2.5 }
goodguy表将匹配除192.0.2.5外192.0.2.0/24网段得所有地址。
注意表名总是在<>符号得里面。
表也可以由包含IP地址和网络地址的文本文件中输入:
table persist file "/etc/spammers"
block in on fxp0 from to any
文件 /etc/spammers 应该包含被阻塞的IP地址或者CIDR网络地址,每个条目一行。以#开头的行被认为是注释会被忽略。
用 pfctl 进行操作
表可以使用pfctl(8)进行灵活的操作。例如,在上面产生的表中增加条目可以这样写:
# pfctl -t spammers -T add 218.70.0.0/16
如果这个表不存在,这样会创建出这个表来。列出表中的内容可以这样:
# pfctl -t spammers -T show
-v 参数也可以使用-Tshow 来显示每个表的条目内容统计。要从表中删除条目,可以这样:
# pfctl -t spammers -T delete 218.70.0.0/16
更多使用pfctl操作的信息可以参阅pfctl(8)。
[ 本帖最后由 walker_r 于 2006-1-23 23:35 编辑 ] |
|