Как правило, большинство брандмауэров для Linux представляют собой компиляцию сценариев оболочки, которые организуют строки для отправки в команду iptables
или иногда ebtables
в зависимости от того, используется ли мостовое соединение. Кроме того, они общаются с утилитой tc
, если используется формирование трафика.
Shorewall является примером такого брандмауэра, но он делает гораздо больше. Он позволяет вам устанавливать различные типы NAT, безопасность вокруг VPN и многое другое.
Похоже, что вы хотите сделать это полностью на C. Я бы порекомендовал получить исходный код для iptables и познакомиться с хуками ioctl, предоставляемыми его аналогом ядра. В этот момент вы сможете начать процесс написания своих собственных оболочек, которые выполняют то, что вам нужно.
NB. Root должен быть пользователем, запускающим ваше приложение, убедитесь, что вы разрабатываете его (или около того).