Я бы хотел создать процесс на основе демона, который настраивал бы возможности брандмауэра модуля сетевого ядра.
В настоящее время я могу управлять этим брандмауэром ядра, используя pfctl
и различные файлы конфигурации, описывающие правила фильтрации.Тем не менее, я хочу внедрить правила для пакетирования сначала напрямую, используя C ++ / Objective-C API.
Например, чтобы заблокировать IP-адрес от любого сетевого интерфейса в моей настройке, требуется добавить block from any to <ip_addr>
в /etc/pf.conf
файл и перезагрузить брандмауэр с помощью sudo pfctl -d
, а затем sudo pfctl -e -f /etc/pf.conf
Есть ли возможность использовать ioctl
или другой системный вызов для связи напрямую с брандмауэром ядра?
РЕДАКТИРОВАТЬ: Исходный код pfctl здесь , но я все еще пытаюсь расшифровать, как генерировать правильную команду ioctl для установки нового правила ..