The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Первый пригодный для пользователей релиз пакетного фильтра N..."
Отправлено PavelR, 23-Янв-14 09:18 
> другое дело что подобный подход не применим на target, и возможно какое-то
> подобие виртуальной машины было-бы востребовано, но опять=же возникает вопрос почему было
> не расширить тот-самый bpf-jit функциями позволяющими работать с памятью и sk_buff
> и менять содержимое.

- Зачем всю функциональность запихивать в виртуальную машину?
- Зачем убирать возможность работы native-C модулей? Нужно унифицировать *-tables? Ну так унифицируйте. Не хватает возможности внятно конфигурировать это дело? Да, понятно, меняйте синтаксис правил.

Рассмотрим примерчик:

table filter {
        chain input {
                 type filter hook input priority 0;
}

что такое "type filter hook input priority 0;" ? Это указание использовать "chain input" в стандартном хуке input - т.е. для пакетов входящих соединений.

Зачем тогда делать "table filter  {}" c вложенным "chain input {}" ? Это чистый синтаксический сахар, который сделан "по образу и подобию iptables".
Т.е. читать этот пример надо так:

table MY_FILTER_CHAINS {
        chain MY_INPUT_CHAIN_NAME {
                 type filter hook input priority 0;
}

и уже становится понятно, почему возникает "дублирование" слов filter и input в "type filter hook input".

Идем дальше.


"type filter hook input priority 0;"

Про "type" всё чуть более ясно - они видимо предполагают делать на его основе проверку, чего можно пихать в chain, а чего нельзя, например запретить пихать nat-правила в filter.
Но его (type) можно было бы сделать опциональным, ведь фильтровать, например, ведь можно где угодно :-)

А что мешало "hook" вынести за пределы chain {} ?  

Например, что будет в случае:


table filter {
        chain input {
                 type filter hook input priority 0;
}

table otherfilter {
        chain otherinput {
                 type filter hook input priority 0;
}

да, умный юзерспейс должен будет обнаружить два приоритета 0...

а почему бы не сделать

hook filter.input {
      priority 0 table MY_FILTER_CHAINS chain MY_INPUT_CHAIN_NAME;
}

Тогда можно было бы

hook filter.input {
      priority 0 table MY_FILTER_CHAINS chain MY_INPUT_CHAIN_NAME;
      priority 5 table MY_FILTER_CHAINS chain MY_OTHER_CHAIN_NAME;
}

hook filter.forward {
      priority 0 table MY_FILTER_CHAINS chain MY_INPUT_CHAIN_NAME;
}

А в некоем идеале слоя совместимости и так:

hook filter.forward {
      priority 0 iptables;
}

где iptables - имя "некоего native-C модуля".  

=)

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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