Ключевые слова:traffic, linux, iptables, limit, squid, (найти похожие документы)
Date: Tue, 14 Sep 2004 20:55:04 +0600
From: Slava Gorbanev <Slava_Gorbanev@p20.f19.n5057.z2.fidonet.org.>
Newsgroups: ftn.ru.linux
Subject: Каркас простой системы ограничения трафика на базе iptables и squid
DK> есть сеть, есть машина с двумя интерфейсами, стоит ipchains, nat.
DK> Работает ужо достаточно долго времени, тут срочно понадобилось
DK> некоторая модернизация, то есть надо на этой машие еще считать
DK> трафик, по достижении некторого обьема трафика для конкретного ip
DK> отрубать машину (например на 10 метров в день для одной и 30 метров
DK> в день для другой, то есть нужны группы для разбиения), плюс
DK> к этому прокси-сервер. Вот в связи с этим надо наименнее
DK> безболезненный способ модернизации ПО. В принципе проблемм нет, но
DK> все мои решения упираются в одно - не получается полной
DK> автоматизации, а так как именно этот фактор решающий прошу совета.
у меня сделано так -- в iptables считается трафик:
-A FORWARD -d 192.168.1.0/24 -j COUNT
-A OUTPUT -d 192.168.1.0/24 -j COUNT
# это если ходят через сквид
-A COUNT -s 192.168.1.1 -d 192.168.1.XXX -p tcp -m tcp --sport 3128 -j RETURN
# это все остальное
-A COUNT -s ! 192.168.1.0/24 -d 192.168.1.XXX -j RETURN
тут считается раздельно трафик через прокси и прямой (как правило,
почта). раз в N минут запускается скрипт примерно такого вида, который
проверяет эти счетчики:
#!/bin/bash
# лимит в байтах
LIMIT=14000000
iptables -L COUNT -vxn | tail +3 |
while read pkts bytes target prot opt in out src dst rest; do
if [ "$bytes" -gt $LIMIT ]; then
# здесь выполняется какое-либо действие
# в случае превышения лимита, например
touch "/var/local/traffic/${dst}"
fi
done
как видим, скрипт простейший, лимит у всех одинаковый. элементарно на
перле или чем угодно пишется скрипт с персональными лимитами.
кроме этого в сквид встроен скрипт-редиректор, который на каждый запрос
смотрит в /var/loca/traffic/$SRC_IP, и если находит там такой файлик,
выдает пользователю страничку "вами превышен лимит". если надо вообще
отрубить машину, то можно в качестве действия добавлять запрещающие
правила в iptables.
ну и каждую ночь счетчики и флаги обнуляются.