LINUX.ORG.RU

редактировалие правил iptables из ядра

 ,


0

2

Добрый день, всех с праздником!

Хочу _в_ядре_ все правила на POSTROUTING проматчить по определенному ip и выставить нужный fwmark. А в POSTROUTING таблице nat по fwmark сделать SNAT или не делать.

Так вот вопрос, скажите, пожалуйста, как можно «гулять» по правилам xt_tables в ядре?
Или тут можно/нужно сделать свой hook на POSTROUTING и из него делать всю работу?

// я что-то туплю... :-\

Так вот вопрос, скажите, пожалуйста, как можно «гулять» по правилам xt_tables в ядре

в net/ipv4/netfilter/ip_tables.c есть ipt_do_table() - она используется во всех хуках.

Непонятно какая цель преследуется и почему это нужно делать из ядра.

Динамические списки в виде ipset уже давно умеют задавать fwmark, они так же могут динамически менятся при помощи «iptables -j SET»

vel ★★★★★ ()

vel

в net/ipv4/netfilter/ip_tables.c есть ipt_do_table() - она используется во всех хуках.

она не экспортируется :(

Непонятно какая цель преследуется и почему это нужно делать из ядра.

slvrn

Что? Зачем? В чем тебе не хватает функциональности юзерспейсных интерфейсов?

идея не моя - друг попросил, жалуется на то, что у него каша из правил получается (~70000 правил)

metawishmaster ★★★ ()
Ответ на: комментарий от metawishmaster

она не экспортируется

Это пример рабочего кода на тот случай, если такое действие потребуется. Все таблицы правил у нас линейные, т.ч. пройтись по ним очень просто. А вот вставить/удалить правила - это очень сложный процесс.

идея не моя - друг попросил, жалуется на то, что у него каша из правил получается (~70000 правил)

Почему каша? Просто очень длинный список правил.

Как с ним бороться - я уже сказал.

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от slvrn

Что? Зачем? В чем тебе не хватает функциональности юзерспейсных интерфейсов, т.е. самих утилит ip и iptables?

Зачем это понадобилось ТС - это, конечно, вопрос к нему. Но вот один из вариантов. Например, весь функционал какого-то софта реализован в ядерном модуле, и при этом надо как-то рулить правилами фильтрации.

Кстати, а чем можно рулить netfilter удаленно. Я понимаю, конечно, что через ssh в командной строке все можно сделать. Но вот, предположим, что нужна GUI для тупых, или с каким-то особенным функционалом. Писать сервер, слушающий сокет и управляющий правилами через libnftnl?

zloy_starper ★★ ()