The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Порядок прохождения пакетов в пакетных фильтрах FreeBSD
Порядок прохождения пакетов при одновременном использовании  ipfilter, pf и ipfw:
При загрузке фильтров модулями, порядок будет определяться порядком загрузки модулей. 
Причина здесь в том, что пакетные фильтры регистрируют себя в pfil(9).

При включении всех фильтров в ядро порядок будет определять SYSINIT.
Чтобы определить порядок, нужно открыть файл sys/kernel.h. 
В нём определён порядок инициализации определённых подсистем. Теперь, простейшее:

# grep DECLARE_MODULE netinet/ip_fw_pfil.c
DECLARE_MODULE(ipfw, ipfwmod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY);
# grep DECLARE_MODULE contrib/pf/net/pf_ioctl.c
DECLARE_MODULE(pf, pf_mod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_FIRST);
# grep DECLARE_MODULE contrib/ipfilter/netinet/mlfk_ipl.c
DECLARE_MODULE(ipfilter, ipfiltermod, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY);

От сюда следует: первым будет ipfilter, затем pf, затем ipfw.
 
06.07.2007 , Автор: butcher , Источник: http://www.opennet.me/openforum/vsl...
Ключи: ipfw, firwall, pf, freebsd
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетный фильтр в FreeBSD: ipfw, IP-Filter

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, SunTech (?), 16:14, 07/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот неудобно, однако, хочется чтоб порядок прохождения на вход и на выход были обратными, т.е.:

    на вход: ipfilter, pf, ipfw
    на выход: ipfw, pf, ipfilter

    Тогда получается довольно удобно для тех, кто использует два пакетных фильтра (например я): фильтровать в ipfw, а натить в pfnat. В данном случае появится возможность дополнительно неотначеные пакеты фильтровать на внешнем интерфейсе посредством ipfw.

     
     
  • 2.3, butcher (ok), 12:54, 23/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Так и есть на самом деле. Регистрация хуков от пакетных фильтров происходит следующим образом:
    /* обычно фильтр регистрирует хук как на вход так и на выход, поэтому: */
    1. Первым регистрируется ipfilter, ещё не было зарегистрировано ниодного фильтра, поэтому списки хуков выглядят так:
    ph_in:  [ipfilter]
    ph_out: [ipfilter]

    2. Вторым регистрируется pf (изображая по порядку вызова слева на право):
    ph_in:  [ipfilter]-[pf]
    ph_out: [pf]-[ipfilter]

    3. Третий регистрируется ipfw:
    ph_in:  [ipfilter]-[pf]-[ipfw]
    ph_out: [ipfw]-[pf]-[ipfilter]

    Из этих схем видно, что для исходящих пакетов порядок вызова фильтров инвертирован по отношению ко входящим

     
  • 2.4, www2 (??), 17:38, 12/10/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Это неудобство объясняется очень просто: нет у фри нормального файрвола и нормального описания к нему. Есть целых три файрвола, каждый из которых описан частично. Отсюда всякие уродские гибриды ipfw/ipnat или ipfw/pfnat. Фрю люблю, но линуксоидам завидую - у них всего один файрвол, зато мощный и хорошо описанный.
     
     
  • 3.5, Аноним (5), 14:38, 25/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    И с которым граблей........................
     
     
  • 4.6, www2 (??), 15:47, 25/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >И с которым граблей........................

    Нисколько!

    Со времени, прошедшего с того коммента, успел на практике настроить несколько интернет-серверов на основе Debian. Так вот, пакетный фильтр iptables, гораздо проще и нагляднее ipfw.

    Сейчас по собственной воле использовать FreeBSD не стану, не в последнюю очередь на это решение повлиял ipfw. Главная причина - "нетехнологично". Хотя FreeBSD по чистоте и правильности кода, на мой взгляд, гораздо лучше Linux'а, но использовать её лучше прежде всего в образовательных целях.

     
     
  • 5.7, ASh (??), 00:34, 26/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так остановитесь на каком-нибудь одном и его пользуйте....
    Одного PF недостаточно?
     
     
  • 6.8, www2 (??), 06:57, 26/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Ну так остановитесь на каком-нибудь одном и его пользуйте....
    >Одного PF недостаточно?

    Я остановился на iptables :-)

     
  • 5.9, nuclight (ok), 21:24, 27/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Птичий синтаксис нагляднее? Не поверю. Новичка ipfw можно научить за час-полтора, включая базовые сведения по tcp/ip и хождению пакетов вообще, с нуля (проверено на wipfw и пользователе windows). Если у человека есть знание английского, синтаксис и семантика ему будут во многом интуитивно понятны.

    И в чем "нетехнологичность" ?.

     
     
  • 6.10, www2 (??), 17:21, 28/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Новичка iptables можно научить за то-же время и на таком-же уровне При этом я н... большой текст свёрнут, показать
     
     
  • 7.11, www2 (??), 17:47, 28/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё могу добавить что из Linux'ов я не считаю технологичными:
    1. Slackware - отсутствует менеджер пакетов, в результате нужно разбираться с зависимостями; часто нужна компиляция, придётся грузить систему.
    2. Gentoo (и по тем же причинам все BSD) - всегда нужна компиляция, придётся грузить систему; в репозитарии всегда самые свежие программы, при смене версии программы часто меняется конфиг, в результате может оказаться что после обновления что-то не работает, т.к. нужна правка конфига. Предпочитаю одну и ту же версию пакета, но постоянно патчащуюся.
    3. Ubuntu и иже сними - в репозитарии всегда самые свежии версии программ, причину см. выше.
    4. Нынешний Mandrake - по-моему тоже основан на Ubuntu, может быть ошибаюсь, поправьте.
    5. Отечественный Alt Linux, по той же причине, что и два предыдущих пункта.

    Считаю технологичными:
    1. Debian,
    2. Red Hat (но не Fedora), возможно CentOS,
    3. возможно SUSE...

     
  • 7.12, nuclight (ok), 19:55, 28/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Разумеется, о владении в совершенстве никто не говорил Да без проблем Простите... большой текст свёрнут, показать
     
     
  • 8.13, www2 (??), 21:36, 28/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Эта уникальная заметка вышла слишком поздно для меня 20 мая 2008 - чуть больше ... большой текст свёрнут, показать
     
     
  • 9.14, nuclight (ok), 23:30, 07/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Вы делаете некорректное сравнение Во первых, схема прохождения пакетов через ip... большой текст свёрнут, показать
     
     
  • 10.15, www2 (??), 21:43, 08/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Но при этом вся таблица правил свалена в кучу и будет просматриваться для проход... большой текст свёрнут, показать
     
     
  • 11.16, www2 (??), 22:15, 08/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Оффтопик Ещё раз обозначу почему я так люблю употреблять слово технологичность... большой текст свёрнут, показать
     
     
  • 12.17, Avgoor (?), 18:44, 24/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Это все мишура То, что кому-то там легче сложнее читать - лишь его проблемы На... текст свёрнут, показать
     
     
  • 13.18, www2 (??), 07:38, 25/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, я вот о Вас забочусь, хочу чтобы Вам не достались такие же через заднее м... текст свёрнут, показать
     
  • 3.19, redixin (?), 01:44, 24/09/2008 [^] [^^] [^^^] [ответить]  
  • +/
    в линухе фаервол не такой уж мощный - ему очень нехватает таблиц. с 1000 правил и 800 полос в шейпере на 10000 пакетов/сек становится на колени очень мощный писюк, в тоже время на фре с таблицами тоже самое просто летает, и не мудрено - таблицы это вам не цепочки правил
     
     
  • 4.20, www2 (??), 07:54, 24/09/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >в линухе фаервол не такой уж мощный - ему очень нехватает таблиц.

    Название iptables ни о чём не говорит?

    >с 1000 правил и 800 полос в шейпере на 10000 пакетов/сек
    >становится на колени очень мощный писюк,

    Нечего не зеркало пенять коли рожа (то есть руки) крива.

    Вы это флейма ради или Вы всё-таки представляете разницу между средствами управления трафиком во FreeBSD и Linux?

    >в тоже время на фре
    >с таблицами тоже самое просто летает, и не мудрено - таблицы
    >это вам не цепочки правил

    Очень глубокомысленный вывод. Ценю. "Таблицы" звучит круче чем "Цепочки".

     
     
  • 5.21, redixin (?), 16:15, 25/09/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Название iptables ни о чём не говорит?

    вот именно что название, название новое а внутри все теже ipchains =)

    Не знаете разницы между таблицами и цепочками? слышали про быстрый поиск с хеш-таблицами? нет? погуглите.

    Время поиска по цепочке правил линейно зависит от количества правил. Поиск же по хеш таблице практически не зависит от количества записей в таблице. Вот цитата с букваря по pf "a table is ideal for holding a large group of addresses as the lookup time on a table holding 50,000 addresses is only slightly more than for one holding 50 addresses"

    >Нечего не зеркало пенять коли рожа (то есть руки) крива.

    А как иначе разруливать ситуацию когда есть 600 адресов которые нужно дропнуть, и 400 адресов которые нужно натить, причем эти адреса постоянно добавляются/удаляются?

    в случае с pf мы добавляем 2 правила:

    block from <drops> to any
    nat from <nats> to any

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

    В случае с линухом мы вынуждены держать 1000 правил, поиск по 1000 правил идет настолько долго что ksoftirqd вылазит вверх (это симптом, никогда такого не видели?) и машина просто не вылазит из прерываний. LA растер вверх а количество успешно прошедших пакетов - вниз.

    Есть патч для linux который добавляет такой функционал, но не очень хочется приключений связанных с глюками third level патча.

    > Очень глубокомысленный вывод. Ценю. "Таблицы" звучит круче чем "Цепочки".

    Не просто звучит, но и работает =) Простой линейный поиск гораздо медленеей поиска по self-ballancing binary tree (хотя я не уверен что в pf именно такое дерево, лень в исходники лезть)

     
     
  • 6.22, www2 (??), 10:43, 28/09/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Погуглил, нашёл вот такой интересный тест http bulk fefe de scalability Прав... большой текст свёрнут, показать
     
     
  • 7.23, redixin (?), 13:34, 24/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    говорит 404 ipset это и есть тот самый левый патч который страшно ставить в пр... большой текст свёрнут, показать
     
     
  • 8.24, www2 (??), 15:09, 24/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Это уже давно не патч, модуль ipset у меня наличествует в дистрибутиве Debian Et... большой текст свёрнут, показать
     
     
  • 9.25, redixin (?), 23:33, 16/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    http w3dev org ua debian-guaranteed-entropy jpg ок кто повторял я разок сказа... большой текст свёрнут, показать
     
     
  • 10.26, www2 (??), 08:12, 17/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Уступает в чём Пассивные соединения работают отменно это когда клиент сам уста... большой текст свёрнут, показать
     
     
  • 11.27, redixin (?), 10:52, 17/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    в ipfw есть tablearg очень очень приятная вещь в ipfw есть простые шустрые шей... текст свёрнут, показать
     
     
  • 12.28, www2 (??), 14:32, 17/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ipset Про imq первый раз слышу Не пробовали tc Не костыль, а штатная очень гиб... большой текст свёрнут, показать
     
     
  • 13.29, redixin (?), 15:14, 17/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    в ipset нет tableargs, погуглите tc привязывается к интерфейсу, а если у меня ку... большой текст свёрнут, показать
     
     
  • 14.30, www2 (??), 15:52, 17/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Погуглил Отвечу Вашими словами Фраза в духе названных мной фряшников-фанатиков... текст свёрнут, показать
     
     
  • 15.31, redixin (?), 16:00, 17/04/2009 [^] [^^] [^^^] [ответить]  
  • +/
    я гдето выше говорил о шейперах вообщето FreeBSD работает на ARM - пара минут ... текст свёрнут, показать
     

  • 1.2, viper (??), 09:20, 09/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    По опыту использованию
    на выходе ipfw ipfilter.
     
  • 1.32, unknownDaemon (?), 22:55, 11/06/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > iptables попросту заставляет разбить огромный
    > фаервол на цепочки, каждую из которых можно
    > анализировать отдельно!

    а меня втыкает pf, который умеет и натить аж 2-мя способами у каждого по 2-ва мода, включая нат проксирование и бинат, меня втыкает теггирование пакетов и возможность рулить пакетами на основе политик  и прочее и прочее... молчу уже о том, что они iptables имеют одни корни(тем кто не знает -  разошлись из-за лицензии)... и вот когда мне чего-то не хватает в pf -  я решаю вопросы на ipfw... такие например как фильтрация на L2 уровне...

     
  • 1.33, skeletor (ok), 22:06, 18/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Получается, что если пакет прошёл один файервол, он не проходит остальные. Так?
     
     
  • 2.34, www2 (??), 09:23, 19/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Получается, что если пакет прошёл один файервол, он не проходит остальные. Так?

    Нет, пакет должен получить одобрение от всех фаерволлов. Если пакет прошёл через один фаерволл, то другие могут его заблокировать, а могут и нет.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру