Режим скорость

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
maestro0728
ефрейтор
Сообщения: 57
Зарегистрирован: 2012-01-10 20:16:03

Режим скорость

Непрочитанное сообщение maestro0728 » 2014-07-10 0:24:08

Доброго времени суток.
Помогите разобраться.
Эта конструкция в общем и целом эта конфигурация Firewall должна резать скорость для каждого из IP из сетки 192.168.0.0/24 до 4 Mbit/s, но неправильно режет - примерно в 2 раза меньше (менял скорости, на 10 мб режет до 5 +/-)
Правила Firewall

Код: Выделить всё

# cat /etc/ipfw.rules
!/bin/sh

FwCMD="ipfw -q"
NetIn="192.168.0.0"
NetMask="24"
IpIn="8.8.8.8"
IpOut="192.168.0.1"

# Сбрасываем ранее установленные правила:
${FwCMD} -f flush
# сбрасываем все pipe
${FwCMD} -f pipe flush
# сбрасываем очереди
${FwCMD} -f queue flush

# DUMMYNET
# учтите - чтобы пакеты не выпадали на трубе из файрволла (типа,
# как на разрешающем правиле) надо поставить переменную sysctl
# net.inet.ip.fw.one_pass в 0 (по дефолту - 1) и внести это в
# файл /etc/sysctl.conf - иначе при перезагрузке потеряется
${FwCMD} add pipe 1 ip from ${IpOut} to ${NetIn}/${NetMask}
${FwCMD} pipe 1 config bw 100Mbit/s
${FwCMD} add pipe 2 ip from ${IpIn} to ${NetIn}/${NetMask}
${FwCMD} pipe 2 config bw 100Mbit/s
# `спецтруба` для мелкиз пакетов типа ack - ибо если они теряются
# то повторные пакеты будут большего размера
${FwCMD} add pipe 3 ip from any to any tcpflags ack iplen 0-128
${FwCMD} pipe 3 config bw 100Mbit/s
# Пропускаем следующие трубы - чтобы мелкие пакеты не лимитировались
# пропускать надо до первого нормального (после труб) правила.
# я ему присвоил жёсткий номер - файрволл раздаёт номера с последнего правила
# (если номер жёстко не задан) с интервалом определяемым переменной sysctl
# net.inet.ip.fw.autoinc_step - по дефолту - 100
${FwCMD} add skipto 39999 ip from any to any tcpflags ack iplen 0-128

# запускаем счётчик
i=4
# цикл по $i
while [ $i != 252 ]
do
# добавляем трубу для IP адреса
${FwCMD} add pipe $i ip from not ${NetIn}/${NetMask} to 192.168.0.${i}
# проверяем - часом не мой ли это IP
if [ $i -eq 13 -o $i -eq 22 ]
then
# мой инет :)))
${FwCMD} pipe $i config bw 100Mbit/s
else
# не мой IP - режем скорость
${FwCMD} pipe $i config bw 2000000bit/s
fi
# увеличиваем $i на единичку
i=$(($i+1))
done

# проверяем временные правила (перед этим правилом возврщаются мелкие
# пакеты в файрволл) :
${FwCMD} add 40000 check-state

# разрешаем всё по интерфейсу lo0 (петля)
${FwCMD} add allow ip from any to any via lo0
Последний раз редактировалось Alex Keda 2014-07-27 19:39:15, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35465
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Режим скорость

Непрочитанное сообщение Alex Keda » 2014-07-27 19:40:04

в одну трубу все потоки пихаете чтоле?
тогда всё номрально - два потока по 5 будет как раз 10 =)
Убей их всех! Бог потом рассортирует...

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: Режим скорость

Непрочитанное сообщение rmn » 2014-07-27 23:00:38

во-первых, чтобы пайпы динамически создавались для каждого юзера, надо использовать в pipe config маски src-ip и dst-ip.

во-вторых, надо или через skipto раскидывать правила всех интерфейсов по разным блокам или явно указывать в add pipe направление пакета (in recv для локальных интерфейсов, out xmit для внешних), иначе пакеты будут проходить по пайпам два раза, соответственно, с двойной задержкой.