Ilya Evseev Опубликовано 19 января, 2011 (изменено) · Жалоба Имеется шлюз на FreeBSD. Для фильтрации используется ipfw, для nat - pf. Пакеты на внешнем интерфейсе ходили по цепочке input => pf => ipfw => routing => ipfw => pf => output. Чтобы pf регистрировался после ipfw, в заголовок /etc/rc.d/ipfw добавлялась строка "BEFORE: pf" На FreeBSD 6.x и 7.x это работало нормально. В 8.x: pf всегда регистрируется первым, даже если ipfw вкомпилирован в ядро, а pf собран модулем. "/etc/rc.d/pf restart" или "pfctl -d; pfctl -e" не помогает - исходящие пакеты всё равно вначале попадут в pf nat (до фильтрации в ipfw), а входящие - в ipfw (до NAT в pf). http://cebka.pp.ru/blog/2007/10/24/определ...рохождения-пак/ описывает, как оно было раньше, но в 8.x порядок загрузки стал таким: #define IPFW_MODEVENT_ORDER (SI_ORDER_ANY - 255) /* On boot slot in here. */ DECLARE_MODULE(ipfw, ipfwmod, IPFW_SI_SUB_FIREWALL, IPFW_MODEVENT_ORDER); DECLARE_MODULE(pf, pf_mod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_FIRST); Штатные гуры ЖЖ ru_freebsd ничего путного не сказали: http://community.livejournal.com/ru_freebsd/201631.html Вопрос 1: решит ли проблему подгрузка pf с флагом SI_ORDER_ANY вместо SI_ORDER_FIRST? Вопрос 2: нет ли решения, не связанного с патчем на ядро? Изменено 19 января, 2011 пользователем Ilya Evseev Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 20 января, 2011 · Жалоба Вопрос 2: нет ли решения, не связанного с патчем на ядро? Переписать фильтры с ipfw на pf. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 20 января, 2011 · Жалоба В итоге помогла правка /usr/src/sys/contrib/pf/net/pf_ioctl.c: в строке "DECLARE_MODULE(pf, pf_mod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_FIRST);" последний аргумент заменён на SI_ORDER_ANY. 2jab: Вы дали неумный совет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 20 января, 2011 · Жалоба Мой совет удовлетворяет условиям исходной задачи, а Ваше решение - нет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 20 января, 2011 · Жалоба Как минимум некоторые фичи ipfw жёстко зашиваются в код ядра при включении опций во время сборки и им плевать на порядок загрузки и всё остальное. Если ipfw только фильтрует, без всяких фич типа диверта и прочего, то смысла его держать нет, производительности это не добавить ни чуть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...