表可以在 pf.conf 中创建或者用 pfctl(8) 。
例子:
table <goodguys> { 192.0.2.0/24 }
table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8 }
table <spammers> persist
block in on fxp0 from { <rfc1918>, <spammers> } to any
pass in on fxp0 from <goodguys> to any
地址也可以用“非”来指定,例如:
table <goodguys> { 192.0.2.0/24, !192.0.2.5 }
goodguys 表将匹配除 192.0.2.5 以外 192.0.2.0/24 网段的所有地址。
注意表名总是在符号 < > 的里面。
表也可以由包含 IP 地址和网段地址列表的文本文件输入:
table <spammers> persist file "/etc/spammers"
block in on fxp0 from <spammers> to any
文件 /etc/spammers 将包含 IP 地址列表和/或 CIDR 网段地址,每行一个。以 # 开始的行被看做注释,将被忽略。
# pfctl -t spammers -T add 218.70.0.0/16
如果表 <spammers> 不存在,它将被创建。列出表中的地址:
# pfctl -t spammers -T show参数 -v 可以与 -T show 一起使用,来显示每个地址的统计数据。 从表中删除地址:
# pfctl -t spammers -T delete 218.70.0.0/16
要获得更多使用 pfctl 操作表的信息,请参阅 pfctl(8) 手册页。
table <goodguys> { 172.16.0.0/16, !172.16.1.0/24, 172.16.1.100 }
block in on dc0 all
pass in on dc0 from <goodguys> to any
任何进入 dc0 的数据包都会把它的源地址和表 <goodguys> 中的地址进行匹配: