Найкращий спосіб зробити це - визначити таблицю та створити правило для блокування хостів у pf.conf:
table <badhosts> persist
block on fxp0 from <badhosts> to any
А потім динамічно додавати / видаляти з нього IP-адреси:
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4
Інші команди "таблиця" включають flush(видалити всі) replaceта show. Дивіться man pfctlдокладніше.
Якщо ви хочете більш постійний список, ви можете зберігати його в одному (або більше) файлах. В pf.conf:
table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any
Ви можете також додати імена хостів замість IP-адрес. Дивіться розділ "Таблиці" man pf.confта man pfctl.
Примітка : Наведені вище приклади припускають , що інтернет-облицювальний інтерфейс fxp0, будь ласка , змінюються в відповідності з вашими настройками. Крім того, майте на увазі, що правила в pf.confоцінюються послідовно і для blockабо passправила - це останнє правило відповідності, яке застосовується. За допомогою цього набору правил
table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80
і після додавання до badhostsтаблиці 1.2.3.4 та 192.168.0.10
$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10
весь трафік від 1.2.3.4 і 192.168.0.10 буде заблокований , але другий господар буде мати можливість зробити підключення до порту інших машин 80 , тому що passправила матчі і перевизначати blockправила.