Copy-paste отсюда
В конфигуационном файле pf.conf(5) таблицы создаются при помощи директивы table. У таблицы могут быть следующие атрибуты:
Содержимое таблицы не может быть изменено после того, как таблица создана. Если этот атрибут отсутствует, содержимым таблицы можно манипулровать при помощи 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> persistblock in on fxp0 from { <rfc1918>, <spammers> } to any
pass in on fxp0 from <goodguys> to any
Адреса так же можно употреблять с отрицательным знаком (!), или с ключевым словом not:
Код: Выделить всё
table <goodguys> { 192.0.2.0/24, !192.0.2.5 }
Таблица <goodguys>, таким образом, включает в себя всю сеть 192.0.2.0/24 кроме адреса 192.0.2.5.
Содержимое таблицы можно брать из файла:
Код: Выделить всё
table <spammers> persist file "/etc/spammers"
block in on fxp0 from <spammers> to any
Файл /etc/spammers должен содержать IP-адреса и/или блоки сетей в формате CIDR по одному на строку. Строки начинающиеся с # считаются комментарием и игнорируются.