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

Исходное сообщение
"ipfw && limit"

Отправлено weldpua2008 , 19-Янв-09 04:16 
Привет всем
/>uname -r
6.2-RELEASE-p12
Организовываю ограничение по скорости на пользователей созданием 4-5 pipe'ов:

cmd="/sbin/ipfw -q add "
bw="/sbin/ipfw pipe "
u512=table\(10\)
$cmd 200  pipe 200 all from not 10.0.0.0/8 to $u512 in
$cmd 200  pipe 200 all from $u512 to not 10.0.0.0/8 out
$bw 200 config mask dst-ip 0x000000ff bw 512Kbit/s
и т.д.

Как теперь можно ограничить количество соединений для диапазона портов?
то есть Я хочу ограничить для каждого ИП находящегося в таблице table\(10\) допустим так:
максимальное количество входящих ИП для портов >1024 = 100, для остальных 200

Если Я увеличу количество pipe'ов в два раза и сделаю так будет ли работать?:

pipe 200 ip from table(5) to not me dst-port 1024-65535 out limit dst-addr 100
pipe 200 ip from table(5) to not me dst-port 1-1024 out limit dst-addr 200

pipe 200 ip from not me 1024-65535 to table(5) in src-addr 100
pipe 200 ip from not me 1-1024  to table(5) in src-addr 200


Содержание

Сообщения в этом обсуждении
"ipfw && limit"
Отправлено RSG , 22-Янв-09 11:19 
>[оверквотинг удален]
>ли работать?:
>pipe 200 ip from table(5) to not me dst-port 1024-65535 out limit
>dst-addr 100
>pipe 200 ip from table(5) to not me dst-port 1-1024 out limit
>dst-addr 200
>
>pipe 200 ip from not me 1024-65535 to table(5) in src-addr 100
>
>pipe 200 ip from not me 1-1024  to table(5) in src-addr
>200

Во первых, limit это STATEFUL firewall и как результат создает динамические правила. Как следствие, обычно, обратные правила не нужны. А они у Вас есть.

Во вторых,  как я понимаю скорость так же ограничивается на каждый IP, тогда логичнее было бы писать маску /32 в конфиге от pipe.

В третьих, т.к. limit динамически создает правила для каждой сессии на определенный порт и pipe у Вас так же определен как динамический, для каждого ипа, то в результате получится что скорость определенная в pipe будет выделена каждой сессии из limit.



"ipfw && limit"
Отправлено weldpua2008 , 23-Янв-09 15:24 
>[оверквотинг удален]
>есть.
>
>Во вторых,  как я понимаю скорость так же ограничивается на каждый
>IP, тогда логичнее было бы писать маску /32 в конфиге от
>pipe.
>
>В третьих, т.к. limit динамически создает правила для каждой сессии на определенный
>порт и pipe у Вас так же определен как динамический, для
>каждого ипа, то в результате получится что скорость определенная в pipe
>будет выделена каждой сессии из limit.

Я 3-и раза прочитал и не понял - можно сделать то, что нужна на этом компе или нет?...
Если да, то Мне нужно с pipe'а ми по одному правилу?...

ЗЫ:
Если смотреть table(5) то там будут ип с маской /32


"ipfw && limit"
Отправлено RSG , 23-Янв-09 17:25 
>Я 3-и раза прочитал и не понял - можно сделать то, что
>нужна на этом компе или нет?...
>Если да, то Мне нужно с pipe'а ми по одному правилу?...
>ЗЫ:
>Если смотреть table(5) то там будут ип с маской /32

Я хотел просто обратить внимание на то, что  динамические pipe и limit должны находиться в разных правилах.

Если идет ограничение на каждый ip то конфиг для пайпа должен выглядить так:
ipfw pipe 200 config mask dst-ip /32 bw 512Kb

Ваши правила мне не совсем понятны, например
pipe 200 ip from table(5) to not me dst-port 1024-65535 out limit dst-addr 100
Здесь Вы указываете адреса назначения к которым будет применено правило как "not me", и тут же говорите "out". А что, возможные пакеты по направлению к me в то время как они out?

Нужна схема для более точного написаня правил, но выглядеть по-моему это должно как-то так:

# Для каждого соединения на порты 1024-65535 с IP из таблицы 5 будут созданы динамические
# правила для прямого и обратного трафика. Таких соединений возможно не более 100 на каждый IP из таблицы 5.
# Далее передать трафик на проверку правилу 400
ipfw add 200 skipto 400 ip from table\(5\) to any dst-port 1024-65535 limit src-addr 100

# Для каждого соединения на порты 1-1023 с IP из таблицы 5 будут созданы динамические
# правила для прямого и обратного трафика. Таких соединений возможно не более 200 на каждый IP из таблицы 5.
# Далее передать трафик на проверку правилу 400
ipfw add 300 skipto 400 ip from table\(5\) to any dst-port 1-1023 limit src-addr 200

# На каждый IP из таблицы 5 создать свою (aka динамическую) трубу размером 512. Направление трафика от IP из таблицы 5
ipfw add 400 pipe 200 ip from table\(5\) to any
ipfw pipe 200 config mask src-ip /32 bw 512Kb

# На каждый IP из таблицы 5 создать свою (aka динамическую) трубу размером 512. Направление трафика к IP из таблицы 5
ipfw add 400 pipe 300 ip from any to table\(5\)
ipfw pipe 300 config mask dst-ip /32 bw 512Kb

Если я где-то что-то неправильно понял то поправте.


"ipfw && limit"
Отправлено agat , 16-Янв-10 17:50 
>[оверквотинг удален]
>размером 512. Направление трафика от IP из таблицы 5
>ipfw add 400 pipe 200 ip from table\(5\) to any
>ipfw pipe 200 config mask src-ip /32 bw 512Kb
>
># На каждый IP из таблицы 5 создать свою (aka динамическую) трубу
>размером 512. Направление трафика к IP из таблицы 5
>ipfw add 400 pipe 300 ip from any to table\(5\)
>ipfw pipe 300 config mask dst-ip /32 bw 512Kb
>
>Если я где-то что-то неправильно понял то поправте.

Не понятная ситуация получается, для чего обрабатывается правило прыгом на 400 правило?
Нельзя разве сразу написать
ipfw add 400 pipe 300 ip from any to table\(5\) dst-port 1024-65535


"ipfw && limit"
Отправлено agat , 16-Янв-10 18:10 
Понял для чего, :) спасибо

столкнулся с такой же батвой, все поправил Автору респект и уважуха