LINUX.ORG.RU

как создать правило iptables из программы


0

0

Всем привет. Возможен ли сабж?

Хочу выполнить что-то типа:

#include <iptables.h>

...

iptables_rule_handle *hndl = create_iptables_rule("-A INPUT -s 1.1.1.1 -j ACCEPT");

...

И потом в выводе iptables -L это правило узреть.

Сейчас создаю правила с помощью system, вызывая iptables. Ищу более труъ-путь.


Берешь исходники iptables и ...

sdio ★★★★★
()

Воспользоваться /usr/include/iptables.h???

anonymous
()

libiptc is the library that is used to communicate with netfilter, the internal kernel code in charge of firewalling and packet filtering. This code and iptables were written by Paul "Rusty" Russell. iptables was developed using libiptc calls to get the job done.

BreadFan ★★
()

Тру путь вам уже указали --- берете исходники iptables и вперед. Не знаю как сейчас, но раньше библиотека libiptc не содержала подобных "высокоуровневых" /create_iptables_rule("-A INPUT -s 1.1.1.1 -j ACCEPT")/ функций...

Нужно было загрузить соответсующий прасер правила /lib/iptables/libipt_*, передать ему текстовую строку, получить от него двоичную структуру, и ее скормить библиотеке iptc_append_entry()...

Работать со всем этим надо осторожно, если библиотеке скормить "кривые" данные, то она ругнется, что не может добавить правило, а при следующем обращении к библиотеке получится SIGSEGV. То есть библиотека легко "запарывает" свои внутренние структуры...

Поэтому если вы решите работать с libiptc из демона, ИМХО, лучше непосредственно для добавления правила делать fork()...

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.