URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 5593
[ Назад ]

Исходное сообщение
"OpenNews: Патч для ограничения трафика в ipfw"

Отправлено opennews , 06-Май-05 12:43 
Andrey V. Elsukov предложил протестироать патч (ftp://ftp.opennet.ru/pub/FreeBSD/ipfw_bound/) для ipfw, позволяющий задавать правила срабатывающие в зависимости от объема трафика прошедшего в соответвсии с определенным правилом.


Патч (ftp://ftp.opennet.ru/pub/FreeBSD/ipfw_bound/) небольшой,  и при желании его функциональность может быть легко
расширена. На данный момент патч делает следующие изменения в системе:

-  в IPFW добавляется новая опция (см. man ipfw: RULE OPTIONS/MATCH
PATTERNS) bound числовое_значение. Правила с этой опцией проходят
дополнительную проверку. Проверка заключается в сравнении байтового
счётчика правила со значением указанном в bound. Если значение счётчика
меньше значения в bound, то правило срабатывает (конечно при этом
делаются все остальные проверки), иначе - пропускается.

-  необходимые для поддержки выше описанного изменения в утилите
/sbin/ipfw.


Пример использования:

ipfw add 100 allow ip from any to hostA in recv internet bound 10000000

ipfw add 200 deny ip from any to any


Здесь hostA - это хост, у которого лимит входящего траффика ~10 MБайт.
Сотое правило перестанет срабатывать когда лимит будет исчерпан. Можно
придумать и более сложные конструкции.


Установка


Патч писался для FreeBSD 5.4-STABLE, т.е. RELENG_5. Исходя из этого
ставим так:


1. Патчим:
   # cd /usr/src
   # patch < путь/к/патчу

2. Чтобы утилиту ipfw можно было скомпилить, нужно заменить один
заголовочный файл:
   # cp /usr/src/sys/netinet/ip_fw.h /usr/include/netinet/

3. В зависимости от того как у вас сконфигурирована система, нужно
перекомпилировать и установить либо модуль ядра ipfw.ko, либо само ядро.
  Так же утилиту ipfw.
   # cd /usr/src/sys/modules/ipfw/ && make depend all install
   # cd /usr/src/sbin/ipfw/ && make depend all install

URL: ftp://ftp.opennet.ru/pub/FreeBSD/ipfw_bound/
Новость: http://www.opennet.me/opennews/art.shtml?num=5427


Содержание

Сообщения в этом обсуждении
"Патч для ограничения трафика в ipfw"
Отправлено Аноним , 06-Май-05 12:43 
А как-нить по прошествию времени это ограничение можно снять автоматически? Или придется самому 1-го числа каждого месяца обнулять счетчики?

"Патч для ограничения трафика в ipfw"
Отправлено uldus , 06-Май-05 13:09 
>А как-нить по прошествию времени это ограничение можно снять автоматически? Или придется
>самому 1-го числа каждого месяца обнулять счетчики?


ipfw zero N по крону ?


"Патч для ограничения трафика в ipfw"
Отправлено Freedom , 06-Май-05 13:06 
спасибо автору за патч, идея интресна.
Хорошо бы переработать, что бы можно было лимиты хранить в table (или общий на всех лимит), в таком случае не будет громоздких правил.

"Патч для ограничения трафика в ipfw"
Отправлено butcher , 11-Май-05 08:56 
С таблицами сложнее. Для каждого адреса не ведётся отдельного счётчика, счётчик присутсвует только для "действия" (deny, pass, count, ..). Поэтому тут нужны более существенные изменения.

"Патч для ограничения трафика в ipfw"
Отправлено santa , 06-Май-05 13:41 
а если байтовый счётчик обнулен например после перезагрузки ? нужно чтоб счетчик сохранялся еще гдето кроме как в правиле ipfw

"Патч для ограничения трафика в ipfw"
Отправлено tadmin , 06-Май-05 16:20 
сохранять периодически состояния счетчиков, а при запуске IPFW брать параметры обратно.

"Патч для ограничения трафика в ipfw"
Отправлено keepver , 06-Май-05 17:06 
http://ipa-system.sourceforge.net/

"Патч для ограничения трафика в ipfw"
Отправлено Xater , 09-Май-05 17:17 
Я конечно может немного и не понимаю чего.... Но зачем все эти телодвижения, если можно написать свой  скрипт который подсчитывает байты из ipfw по каким хотите правилам (либо на Си написать программулину) и запускать все это дело по крону...

"Патч для ограничения трафика в ipfw"
Отправлено Anonymous , 09-Май-05 21:22 
>Я конечно может немного и не понимаю чего.... Но зачем все эти
>телодвижения, если можно написать свой  скрипт который подсчитывает байты из
>ipfw по каким хотите правилам (либо на Си написать программулину) и
>запускать все это дело по крону...

Это стремление к блокировке в реалтайм.
За миниту юзер сидящий на 100 Мбит может прокачать сверх лимита почти Гиг траифика.


"Патч для ограничения трафика в ipfw"
Отправлено bsdaemon , 10-Май-05 11:28 
посоветуйте какими будут правила с использванием ограничений скорости при наборе определенного лимита. К примеру у пользвателя 128, после скачки 10G скорость до конца месяца должна быть 64. Как правильнее написать при использовании патча.

"Патч для ограничения трафика в ipfw"
Отправлено t0ly , 10-Май-05 14:43 
>посоветуйте какими будут правила с использванием ограничений скорости при наборе определенного лимита.
>К примеру у пользвателя 128, после скачки 10G скорость до конца
>месяца должна быть 64. Как правильнее написать при использовании патча.

я думаю что то вроди
sysctl net.inet.ip.fw.one_pass=1

ipfw add #1 pipe #1 ip from any to ip# out bound 10000000000
ipfw pipe #1 config bw 128kbit/s
ipfw add #2 pipe #2 ip from any to ip# out
ipfw pipe #1 config bw 64kbit/s

но учити что тут только входящий трафик учитывается...

зы divert,reg,gred,queue по вкусу


"Патч для ограничения трафика в ipfw"
Отправлено c0x , 11-Май-05 08:34 
IMHO, вместо bound логичнее реализовать что-то вроде lt/le (less then/less or equal), gt/ge (greater then/greater or equal).
И полезно иметь возможность задавать в k,M,G

(default_to_pass)
deny all from any to 1.2.3.4 out xmit $iface gt 10G

(default_to_deny)
pass all from any to 1.2.3.4 out xmit $iface le 10G

pipe $M config bw 256Kbytes/s
pipe $N config bw 64Kbytes/s
pipe $M all from any to 1.2.3.4 out xmit $iface le 10G
pipe $N all from any to 1.2.3.4 out xmit $iface gt 10G


"Патч для ограничения трафика в ipfw"
Отправлено butcher , 11-Май-05 08:59 
>IMHO, вместо bound логичнее реализовать что-то вроде lt/le (less then/less or equal),
>gt/ge (greater then/greater or equal).

Возможно, но мои задачи пока этого требуют, разве что позднее ;)

>И полезно иметь возможность задавать в k,M,G

Об этом уже думал, но тоже позднее, если будет время.
Первоначальная задача не подразумевала, что добавление удаление правил будет происходить в "ручном" режиме.


"OpenNews: Патч для ограничения трафика в ipfw"
Отправлено Mikhail Zinovyev , 13-Май-05 16:07 
попробовал эту штучку .
Хочу сразу сказать что ситема 5.3
Проблема в том что да это правило(ipfw add 100 allow ip from any to hostA in recv internet bound 10000000 ) считает колво пакетов но не пропускает и правила обробатываются дальше, т.е. если я ставлю
ipfw add 200 deny ip from any to any
то в инет я идтить не могу так как 200 правило всегда отрабатывает.
Может я что-то недопонял ?
Может еще надо что-то прикутить?

"OpenNews: Патч для ограничения трафика в ipfw"
Отправлено butcher , 13-Май-05 16:46 
>Может я что-то недопонял ?
>Может еще надо что-то прикутить?

Да, надо разрешить вашему адресу выходить в инет.


"Патч для ограничения трафика в ipfw"
Отправлено butcher , 23-Май-05 13:53 
Последняя версия патча доступна на http://butcher.heavennet.ru/
Нужен доброволец для перевода этого текста на английский язык.