Ограничение по количеству пакетов в секунду. Спутник.

по сравнению с
Текущая Шевнин Игнат
на янв 10, 2014 14:24.

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (10)

просмотр истории страницы
Пример приведен для спутникового канала в 8 мбит/с с провайдерским ограничением 1000 пакетов в секнуду

h4. Задача

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

h4. Решение

*Внимание\!* Указанные действия необходимо производить когда сервер находится в режиме [удаленного помощника|http://asrdoc.ideco-software.ru/pages/viewpage.action?pageId=2687433].

if [ "$1" = "firewall.sh" ]; then

#iptables -t mangle -I PREROUTING -p tcp --dport 1024: -m length --length 0:300 -m limit ! --limit 300/sec -j DROP
#iptables -t mangle -I PREROUTING -p udp --dport 1024: -m length --length 0:300 -m limit ! --limit 300/sec -j DROP
#Добавляем новую цепочку
iptables -t mangle -N short_packet

#Ограничиваем трафик по количеству пакетов в секунду
iptables -t mangle -I short_packet -m limit --limit 300/sec -j RETURN
iptables -t mangle -A short_packet -j DROP

#Перенаправляем в нее маленькие пакеты
iptables -t mangle -I PREROUTING 12 -p udp --dport 1024: -m length --length 0:300 -j short_packet
iptables -t mangle -I PREROUTING 12 -p tcp --dport 1024: -m length --length 0:300 -j short_packet
iptables -t mangle -I PREROUTING 12 -p udp --sport 1024: -m length --length 0:300 -j short_packet
iptables -t mangle -I PREROUTING 12 -p tcp --sport 1024: -m length --length 0:300 -j short_packet



fi

{code}

*100* \- количествово примерное количество пользователей, которые будут использовать ip адрес *169.0.0.1*
Если адреса белые то нужно добавить также команду:
*300* \- размер пакета в кбайтах
*300/sec* \- количество пакетов в секунду
{code}
#iptables -t mangle -I state_new -d 169.0.0.1/32 -m connlimit ! --connlimit-above $((300*100)) --connlimit-mask 32 -j RETURN
{code}
Для применения изменений выполните команду (*Перезагрузка не потреуется*):
{code}