The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выполнено портирование ipfw и dummynet для Linux, opennews (??), 22-Июн-09, (0) [смотреть все] +1

Сообщения [Сортировка по времени | RSS]


57. "> а зачем ? им делать нечего ?"  +1 +/
Сообщение от nuclight (??), 23-Июн-09, 09:09 
>> В ipfw умеет работать с таблицами IP-адресов.
>
>Забавно. А если iptables этого не умеет, то почему жк он так
>называется? :-)

По недоразумению. В линуксе вообще многое называется не так, как в точности следовало бы. Это таблицы правил, но на самом деле они представляют собой списки правил, а не таблицы. В ipfw список правил никаким специальным словом не называется, а таблицы - это набор IP-адресов/масок, организованных в radix-дерево для быстрого поиска, т.е. O(log N) вместо O(N) для линейного списка правил в цепочке iptables и ipfw.

Таблицей же это называется потому, что в ней действительно более одного столбца - кроме адреса еще сопоставлено числовое значение, по которому можно дополнительно проверять совпадение либо использовать для сокращения списка правил:

ipfw table 1 add 1.2.3.4
ipfw table 1 add 1.2.3.7 0
ipfw table 1 add 1.2.4.0/24 1
ipfw table 1 add 1.2.5.0/27 1
ipfw table 1 add 1.2.6.0/24 2
...
ipfw add deny all from table(1,2) to www.example.org // 1.2.6.0/24 etc.
ipfw add pipe tablearg all from table(1) to any

иначе была бы портянка вида
ipfw add pipe 1 all from 1.2.4.0/24 to any
ipfw add pipe 2 all from 1.2.6.0/24 to any
...

В линуксе для этого есть ipset, но он, во-первых, действительно set (множество), а не таблица, ничего не сопоставлено с адресом, во-вторых, не входит в стандартную поставку, из-за чего админам иногда приходится эмулировать его руками (вспоминается DoS башорга).

Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

71. "> а зачем ? им делать нечего ?"  –1 +/
Сообщение от KO (?), 23-Июн-09, 09:43 

>в стандартную поставку, из-за чего админам иногда приходится эмулировать его руками
>(вспоминается DoS башорга).

Вообще-то проще его поставить руками.

Ответить | Правка | Наверх | Cообщить модератору

74. "> а зачем ? им делать нечего ?"  –1 +/
Сообщение от KO (?), 23-Июн-09, 09:46 
>
>>в стандартную поставку, из-за чего админам иногда приходится эмулировать его руками
>>(вспоминается DoS башорга).
>
>Вообще-то проще его поставить руками.

Более того:
http://packages.ubuntu.com/search?keywords=ipset
ставится apt-get-ом.

Ответить | Правка | Наверх | Cообщить модератору

77. "> а зачем ? им делать нечего ?"  +1 +/
Сообщение от nuclight (??), 23-Июн-09, 09:55 
>>в стандартную поставку, из-за чего админам иногда приходится эмулировать его руками
>>(вспоминается DoS башорга).
>
>Вообще-то проще его поставить руками.

Ну вот поинтересуйтесь у них, почему у них такой возможности не было, хотя они о нём знали. Пришлось им руками дерево эмулировать, 256 цепочек по октету IP-адреса.

Ответить | Правка | К родителю #71 | Наверх | Cообщить модератору

109. "> а зачем ? им делать нечего ?"  –1 +/
Сообщение от www2email (??), 23-Июн-09, 12:56 
>Ну вот поинтересуйтесь у них, почему у них такой возможности не было,
>хотя они о нём знали. Пришлось им руками дерево эмулировать, 256
>цепочек по октету IP-адреса.

Радиус кривизны рук наверное большой был, вот и решили не искать лёгких путей.

Ответить | Правка | Наверх | Cообщить модератору

86. "> Вообще-то проще его поставить руками."  +1 +/
Сообщение от eyeemail (?), 23-Июн-09, 11:02 
ага, тут выше приводят ссылку:

>Добавляем правила огранечения по меткам. Далее средствами iptables ставим эти метки.
>А теперь покажите мне в ipfw организовать хеш-фильтры https://www.opennet.ru/docs/RUS/LARTC/x1661.html

по ссылке эмулируют хеш лол. вот у них спросите почему они так делают. наверное по-другому не получается.

Ответить | Правка | К родителю #71 | Наверх | Cообщить модератору

108. "> а зачем ? им делать нечего ?"  –1 +/
Сообщение от www2email (??), 23-Июн-09, 12:55 
>[оверквотинг удален]
>ipfw table 1 add 1.2.5.0/27 1
>ipfw table 1 add 1.2.6.0/24 2
>...
>ipfw add deny all from table(1,2) to www.example.org // 1.2.6.0/24 etc.
>ipfw add pipe tablearg all from table(1) to any
>
>иначе была бы портянка вида
>ipfw add pipe 1 all from 1.2.4.0/24 to any
>ipfw add pipe 2 all from 1.2.6.0/24 to any
>...

Это уже отдаёт самоцелью. Даже теоретически не могу представить зачем это нужно. А даже если это и нужно, то это как разгребать спагетти бейсика с его goto.

>В линуксе для этого есть ipset, но он, во-первых, действительно set (множество),
>а не таблица, ничего не сопоставлено с адресом, во-вторых, не входит
>в стандартную поставку

Специально для вас мини-хау-ту для Debian Lenny:

1. устанавливаем пакеты:

# apt-get install ipset
# apt-get build-dep netfilter-extensions-source
# apg-get install netfilter-extensions-source
# cd /usr/src
# tar xjf netfilter-extensions.tar.bz2

2. собираем и устанавливаем:

# m-a a-i netfilter-extension

3. пользуемся!

>из-за чего админам иногда приходится эмулировать его руками
>(вспоминается DoS башорга).

Кстати, даже для эмуляции у iptables средства не так уж и плохи. Цепочки по сути являются подпрограммами обработки трафика и позволяют писать довольно сложные, но ТЕМ НЕ МЕНЕЕ гораздо более понятные правила, чем конструкции вида
>ipfw add pipe tablearg all from table(1) to any

Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

206. "> а зачем ? им делать нечего ?"  +1 +/
Сообщение от nuclight (??), 24-Июн-09, 13:47 
>[оверквотинг удален]
>>ipfw add pipe tablearg all from table(1) to any
>>
>>иначе была бы портянка вида
>>ipfw add pipe 1 all from 1.2.4.0/24 to any
>>ipfw add pipe 2 all from 1.2.6.0/24 to any
>>...
>
>Это уже отдаёт самоцелью. Даже теоретически не могу представить зачем это нужно.
>А даже если это и нужно, то это как разгребать спагетти
>бейсика с его goto.

Как раз-таки наоборот. Линейная последовательность правил - это пачка if'ов и goto. А tablearg - это диспетчеризация вызова функции по указателю. ОДНО правило вместо пачки - это гораздо понятнее и эффективнее.

Что же касается того, зачем это нужно - тренируйте воображение, что ли. Одно из применений этой штуки (люди реально пользуются) - есть семейство тарифов (полос), клиентов много, каждый купил один из тарифов, нужно шейпить соответственно. Чтобы не писать по правилу на каждого клиента - мы вгоняем их адреса в таблицу с указанием номера. И всё!

>>из-за чего админам иногда приходится эмулировать его руками
>>(вспоминается DoS башорга).
>
>Кстати, даже для эмуляции у iptables средства не так уж и плохи.
>Цепочки по сути являются подпрограммами обработки трафика и позволяют писать довольно
>сложные, но ТЕМ НЕ МЕНЕЕ гораздо более понятные правила, чем конструкции
>вида
>>ipfw add pipe tablearg all from table(1) to any

Как средство эмуляции оно хуже - внутри подпрограммы поиск всё равно линейный. Очень странно, если вы приводите аналогии из програмирования, и не понимаете, чем одна строка с индексацией по таблице (массиву) лучше и _понятнее_, чем пачка if-else if для каждого варианта значения индекса.

Ответить | Правка | Наверх | Cообщить модератору

209. "> а зачем ? им делать нечего ?"  –1 +/
Сообщение от www2email (??), 24-Июн-09, 14:14 
>>Это уже отдаёт самоцелью. Даже теоретически не могу представить зачем это нужно.
>>А даже если это и нужно, то это как разгребать спагетти
>>бейсика с его goto.
>
>Как раз-таки наоборот. Линейная последовательность правил - это пачка if'ов и goto.

Не согласен. В iptables не бывает переходов на правило с произвольным номером, только цепочки - аналог подпрограмм. А вот в ipfw есть skipto - элемент, образующий спагетти.

>А tablearg - это диспетчеризация вызова функции по указателю. ОДНО правило
>вместо пачки - это гораздо понятнее и эффективнее.

А, понятно, теперь до меня дошла семантика правила:
>ipfw add pipe tablearg all from table(1) to any

Мне показалось это будет просто правило для одного (первого) элемента таблицы, а это оказывается номер столбца. Да, интересная возможность.

Ответить | Правка | Наверх | Cообщить модератору

212. "> а зачем ? им делать нечего ?"  –1 +/
Сообщение от vitek (??), 24-Июн-09, 14:49 
>Не согласен. В iptables не бывает переходов на правило с произвольным номером, только цепочки - аналог подпрограмм. А вот в ipfw есть skipto - элемент, образующий спагетти.

ну вообще-то ещё есть:
$ man iptables
.................
-g, --goto chain
              This  specifies that the processing should continue in a user specified chain. Unlike the --jump option return will not continue processing in this chain but instead in the chain that called us via --jump.

но это так, к слову.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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