The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"ipfw pipe и половина канала"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (BSD ipfw, ipf, ip-filter / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"ipfw pipe и половина канала"  +/
Сообщение от zhukovia email(??) on 09-Май-09, 12:23 
Пробую сделать систему ограничения и контроля трафика на ipfw с помощью pipe.
При этом хочется ограничивать только внешний канал, а работу из сети с сервером оставить без лимита. Для этого я написал следующую конфигурацию.
Создаю 3 pipe:
pipe 1 (для внутренней сети 1gbit),
pipe 2 (для для трафика от меня в интернет 180kbit),
pipe 3 (для для трафика ко мене из интернета 180kbit).
Затем делаю 6 очередей:
1 и 11 (для внутренней сети pipe 1),
2 (для для трафика от меня в интернет pipe 2 с Высоким преоритетом),
3 (для для трафика от меня в интернет pipe 2 с Низким преоритетом),
22 (для для трафика ко мене из интернета pipe 3 с Высоким преоритетом),
33 (для для трафика ко мене из интернета pipe 3 с Низким преоритетом).
Получается следующая картина:
1. Трафик для внутренней сети почему то тоже запихивается во 2 и 3 pipe и в результате все тормозит доже при отображении telnetа (это если что то еще качать по ftp из инета).
2. Скорость скачки с инета вместо положенных 180 kbit дает только половину (те скорость только 10 kb вместо 22 kb). Но если закоментировать 7 и 8 правило то скорость скачки становится как раз 20 kb, только внутренняя сеть все так же тормозит.
В чем может быть причина?
*************************************************************************
#!/bin/sh
ipfw -f flush
ipfw -f pipe flush
ipfw disable one_pass

peer="192.168.101.136"
localhost="192.168.101.254"
lanaddr="192.168.101.0/24"
inetaddr="84.150.110.16"

ipfw="ipfw -q"
lancard="rl0"
wancard="tun0"

upload="180kbps"
download="180kbps"
highprior="50"
lowprior="2"
highport="20,21,22,23,25,80,110,179,443,2222,3389,8080,8081"

${ipfw} pipe 1 config bw 1000Mbit/s queue 20
${ipfw} pipe 2 config bw ${upload} queue 20
${ipfw} pipe 3 config bw ${download} queue 20
${ipfw} queue 1 config pipe 1 weight 100 queue 20 mask dst-ip 0xffffffff
${ipfw} queue 11 config pipe 1 weight 100 queue 20 mask src-ip 0xffffffff

${ipfw} queue  2 config pipe 2 weight ${highprior} queue 20 mask dst-ip 0xffffffff
${ipfw} queue  3 config pipe 2 weight ${lowprior} queue 20 mask dst-ip 0xffffffff
${ipfw} queue 22 config pipe 3 weight ${highprior} queue 20 mask src-ip 0xffffffff
${ipfw} queue 33 config pipe 3 weight ${lowprior} queue 20 mask src-ip 0xffffffff

#---begin-lan network
${ipfw} add 1 queue  1 ip from ${localhost} to ${lanaddr} out via ${lancard}
${ipfw} add 2 queue 11 ip from ${lanaddr} to ${localhost} in via ${lancard}
#---end-lan network
#---begin-wan network
${ipfw} add 5 queue 22 ip from any to any ${highport} out xmit ${wancard}
${ipfw} add 6 queue 2 ip from any ${highport} to any out xmit ${lancard}
${ipfw} add 7 queue 33 ip from any to any out xmit ${wancard}
${ipfw} add 8 queue 3 ip from any to any out xmit ${lancard}
#---end-wan network
${ipfw} add  100 pass all from ${peer} to any in via ${lancard}
${ipfw} add  101 divert natd  all from ${peer} to any out via ${wancard}
${ipfw} add  102 divert  natd  all from any to any in via ${wancard}
${ipfw} add  103 pass all from me to any out via ${wancard}
${ipfw} add  104 pass all from any to ${peer} out via ${lancard}
${ipfw} add  105 pass all from any to ${peer} in via ${wancard}
${ipfw} add  65000 pass all from any to any
*************************************************************************

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "ipfw pipe и половина канала"  +/
Сообщение от Pahanivo email(ok) on 13-Май-09, 13:19 
советую взять просто пример из какованидь хауту, упростить и двигаться от простого к сложному, а не мудрить свое тупо подставля все подряд параметры
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "ipfw pipe и половина канала"  +/
Сообщение от zhukovia email(??) on 15-Май-09, 21:38 
>советую взять просто пример из какованидь хауту, упростить и двигаться от простого
>к сложному, а не мудрить свое тупо подставля все подряд параметры

Я так и пробовал. Но как видно не получается. Может что БОЛЕЕ дельное подскажите?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "ipfw pipe и половина канала"  +/
Сообщение от Pahanivo (??) on 17-Май-09, 09:17 
>>советую взять просто пример из какованидь хауту, упростить и двигаться от простого
>>к сложному, а не мудрить свое тупо подставля все подряд параметры
>
>Я так и пробовал. Но как видно не получается. Может что БОЛЕЕ
>дельное подскажите?

я не буду коментить конкретно ваш пост - ибо зае... надоело коментить посты про пайпы (а также разбираться в вашем фареволах, корые не блешут понятностью) - варианты разные, а ошибки все теже. Просто повторю еще раз простые рекомендации:

1) НАЧНИТЕ С ОЧЕНЬ ПРОСТОЙ СХЕМЫ - поймите как это работает.
2) при конфиге пайпом обращайте внимание на маски - их тип и заначение: папйт исходящего трафика быдет по соур маске и наоборот, значение маски влеят на параметры агрегации.
3) важный параметр net.inet.ip.fw.one_pass
4) КРАЙНЕ ЖЕЛАТЕЛЬНО формулировать правило заворота на пайп в фареволе как можно строже - пакет должен попасть только на предназначенныю ему трубу, он не должен попасть туда дважды и тд - получаемые в случае ошибок глюки сложно интерпретировать и отловить.

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

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "ipfw pipe и половина канала"  +/
Сообщение от y (??) on 09-Июн-09, 14:17 
man pf.conf
там есть очень хорошо написаное - как сделать правильную приоритезацию с динамически изменяемой шириной канала - пайп не для таких сложностей
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "ipfw pipe и половина канала"  +/
Сообщение от korn (??) on 30-Июн-10, 19:08 
>man pf.conf
>там есть очень хорошо написаное - как сделать правильную приоритезацию с динамически
>изменяемой шириной канала - пайп не для таких сложностей

Трололо юноша. IPFW и dummynet это как раз таки то что надо для такой задачи. Если задача объёмнее то ng_ipfw + ng_car. Учите матчасть.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "ipfw pipe и половина канала"  +/
Сообщение от korn (??) on 30-Июн-10, 14:26 
>[оверквотинг удален]
>${ipfw} add  102 divert  natd  all from any to
>any in via ${wancard}
>${ipfw} add  103 pass all from me to any out via
>${wancard}
>${ipfw} add  104 pass all from any to ${peer} out via
>${lancard}
>${ipfw} add  105 pass all from any to ${peer} in via
>${wancard}
>${ipfw} add  65000 pass all from any to any
>*************************************************************************

Видимо у вас переменная ядра net.inet.ip.fw.one_pass=0, собственно при таком подходе пакеты не уходят из цепочки после пропадания в queue, а лезут в следующий queue.
Решение: после каждого правила с queue ставить аналогичное правило с skipto.
То есть:

/****** всё что выше не меняется ******/

#---begin-lan network
${ipfw} add queue  1 ip from ${localhost} to ${lanaddr} out via ${lancard}
${ipfw} add skipto 1000 ip from ${localhost} to ${lanaddr} out via ${lancard}
${ipfw} add queue 11 ip from ${lanaddr} to ${localhost} in via ${lancard}
${ipfw} add skipto 1000 ip from ${lanaddr} to ${localhost} in via ${lancard}
#---end-lan network
#---begin-wan network
${ipfw} add queue 22 ip from any to any ${highport} out xmit ${wancard}
${ipfw} add skipto 1000 ip from any to any ${highport} out xmit ${wancard}
${ipfw} add queue 2 ip from any ${highport} to any out xmit ${lancard}
${ipfw} add skipto 1000 ip from any ${highport} to any out xmit ${lancard}
${ipfw} add queue 33 ip from any to any out xmit ${wancard}
${ipfw} add skipto 1000 ip from any to any out xmit ${wancard}
${ipfw} add queue 3 ip from any to any out xmit ${lancard}
${ipfw} add skipto 1000 ip from any to any out xmit ${lancard}
#---end-wan network
${ipfw} add 1000 100 pass all from ${peer} to any in via ${lancard}
${ipfw} add  101 divert natd  all from ${peer} to any out via ${wancard}
${ipfw} add  102 divert  natd  all from any to any in via ${wancard}
${ipfw} add  103 pass all from me to any out via ${wancard}
${ipfw} add  104 pass all from any to ${peer} out via ${lancard}
${ipfw} add  105 pass all from any to ${peer} in via ${wancard}
${ipfw} add  65000 pass all from any to any

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "ipfw pipe и половина канала"  +/
Сообщение от korn (??) on 30-Июн-10, 14:31 
Вообще, в твоём случае ставь net.inet.ip.fw.one_pass=1 и не парься, обычно one_pass ставят 0 когда ng_nat используют, кстати очень хорошая штука.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "ipfw pipe и половина канала"  +/
Сообщение от korn (??) on 30-Июн-10, 14:33 
И ещё, я очепятался в правиле 1000, я написал
${ipfw} add 1000 100 pass all from ${peer} to any in via ${lancard}
А можно оставить как было у тебя, но skipto ставить не на 1000 а на 100
Сор, устал к вечеру и не заметил сразу
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "ipfw pipe и половина канала"  +/
Сообщение от Pahanivo (ok) on 02-Июл-10, 09:33 
>Сор, устал к вечеру и не заметил сразу

ты видать сильно устал если залез в уже год как закрытую тему и начал флеймить )

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "ipfw pipe и половина канала"  +/
Сообщение от korn (??) on 03-Июл-10, 21:39 
>>Сор, устал к вечеру и не заметил сразу
>
>ты видать сильно устал если залез в уже год как закрытую тему
>и начал флеймить )

Я уже устал объяснять вам, молодые люди, смысл конференций подобно этой. Дак вот, смысл их не в том чтобы решать проблемы одного конкретного человека, и не в том чтобы находить невероятно сложные узконаправленные решения, а в том, что находить стандартные решения, стандартных проблем.
Я столкнулся с подобной проблемой и естественно пошел в гугл, который выдал мне этот топик, в котором не было решения, мне пришлось расковыриваться самому, что я и сделал, после чего запостил решение сюда, чтобы другие, идущие моим путем, нашли здесь эту информацию и не тратили время зря, а вот то, что вы делаете - это не флейм, а флуд. Сомневаетесь ? Попробуйте перечитать свой пост и оценить его отношение к проблеме обсуждаемой в топике.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

11. "ipfw pipe и половина канала"  +/
Сообщение от Pahanivo (ok) on 05-Июл-10, 07:40 
>[оверквотинг удален]
>вот, смысл их не в том чтобы решать проблемы одного конкретного
>человека, и не в том чтобы находить невероятно сложные узконаправленные решения,
>а в том, что находить стандартные решения, стандартных проблем.
>Я столкнулся с подобной проблемой и естественно пошел в гугл, который выдал
>мне этот топик, в котором не было решения, мне пришлось расковыриваться
>самому, что я и сделал, после чего запостил решение сюда, чтобы
>другие, идущие моим путем, нашли здесь эту информацию и не тратили
>время зря, а вот то, что вы делаете - это не
>флейм, а флуд. Сомневаетесь ? Попробуйте перечитать свой пост и оценить
>его отношение к проблеме обсуждаемой в топике.

))) кто с дамминетом хочет разобраться - тот разберется, благо все уже обсосано и разжовано за столько лет

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру