nixp.ru v3.0

23 мая 2017,
вторник,
04:11:11 MSK

DevOps с компанией «Флант»
Longobard написал 26 июня 2005 года в 23:52 (422 просмотра) Ведет себя как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.

Задача:

есть скрипт, надо ограничить его потребление трафа (дать ему 100 мб в день) с помощью iptables.

Как определить пакеты этого скрипта — это то фигня. А вот как задать это самое ограничение — я так и не понял. Перекопал весь iptables-tutorial, не нашел того, что мне нужно. Как сделать проверку вида «если(кол-во израсходованного трафа < 1024 Mb) то ACCEPT"?  iptables ведь держит кол-во пакетов, и сумму байт этих пакетов, попавших под действие правила. Я могу обнулять этот счетчик по крону раз в сутки. Проблема только в том, как задать условие «если эта самая циферка из колонки bytes для данного правила меньше 100M, то ACCEPT"?  В гугле в какой-то рассылке говорят про модуль quota, но я его нигде не нашел.

Помогите plz. Сервак для которого это делается довольно слабый, ставить туда биллинг ой как не хочется. А задача ограничить потребление трафа скриптом, который 24 часа в сутки качает обновления с других сайтов.

Да и еще надо ограничить ипам траф, т.е. одному ипу даем 200 мб на месяц, другому 300 (имеются в виду ипы, которые ходят в инет через NAT через данный сервак).

Заранее большое спасибо. Ответ «RTFM» приветствуется, если скажете в какую сторону копать :)

Longobard

Ну или посоветуйте легкий-легкий (в плане требований к компу) биллинг, который сможет выполнить эту задачу. netams комп просто не потянет :(

Genie

ну, самим iptables ты этого не сделаешь, т.е. отключать в нём самом по условию нет возможности.

однако, ты можешь это сделать сам, проверяя раз, скажем, в минуту.

запускай свой качающий скрипт от специального пользователя, добавь правило для iptables на разрешение прохождения пакетов для этого пользователя (man iptables около расширения owner)

проверять статистику для правила раз в минуту — читай man iptables у -L.

как только при очередной проверке обнаружилось, что произошло превышение трафа — добавляй запрещающее правило и удаляй разрешающее. при необходимости разрешить — добавляешь разрешающее и удаляешь запрещающее. и так каждый день.. ;)

правда, есть одна грабля. соединение, которое в этот момент было открыто, может не закрыться из-за keep-state правила.

в общем, идея, думаю, ясная.

Longobard

Сделал проще — добавил в сам скрипт проверку на обьем скачанного :)

Curu3MyHg
Genie
однако, ты можешь это сделать сам, проверяя раз, скажем, в минуту.

запускай свой качающий скрипт от специального пользователя, добавь правило для iptables на разрешение прохождения пакетов для этого пользователя (man iptables около расширения owner)

проверять статистику для правила раз в минуту — читай man iptables у -L.

как только при очередной проверке обнаружилось, что произошло превышение трафа — добавляй запрещающее правило и удаляй разрешающее.

Ага.. А с моими теперяшними скоростями в 2-4 Мбайта в секунду я уж 100 метров лишних-то урвать успею точно ;) Раз в минуту — редко слишком..

rgo
Curu3MyHg
Ага.. А с моими теперяшними скоростями в 2-4 Мбайта в секунду я уж 100 метров лишних-то урвать успею точно ;) Раз в минуту — редко слишком..

Ничего, на следующий день можно уменьшить количество трафика на сегодняшний излишек :)

Или учащать проверку по мере приближения к лимиту. Хотя… скрипт уже исправлен.

Genie
Ага.. А с моими теперяшними скоростями в 2-4 Мбайта в секунду я уж 100 метров лишних-то урвать успею точно ;) Раз в минуту — редко слишком..

а голова тебе на что дадена?

ну, шейпер поставь. и по owner разграничивай.

сквид, в конце концов настрой для себя с ограничениями, если уж так опасаешься. что действительно нужено скачать — понятное дело, что качать лучше wget-ом.

не можешь гарантировать, что можешь уследить за тем, что и как качается — настрой так, чтобы без дополнительных телодвижений не смог скачать. ;)