The OpenNET Project / Index page

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



"Pipe: где я ошибся и почему не работает разделение по pipe"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Firewall, Фильтрация пакетов / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Evonder (ok) on 10-Май-18, 15:07 
Всем добрый день. Задам снова простой вопрос, и если кого не затруднит ответить буду благодарен.
    Необходимо ограничить входящий канал по трем группам.
    Ширина канала 30 мбит  

Создаю три pipe
pipe 1 5мбит  (основные пользователи)
ipfw queue  1 config pipe 1 weight 50 queue 60 mask dst-ip 0xffffffff

pipe 2 10мбит (руководство)
ipfw queue  2 config pipe 2 weight 50 queue 60 mask dst-ip 0xffffffff

pipe 3 10мбит (сервисы почта и остальное)

  Дальше правила входящего трафика:
$fwcmd 45  nat 1 all from any to any in recv $Inet
  И после нат идет правило с очередью и pipe.
  Как сделать так, чтобы в каждую очередь с нужным pipe попадали нужные пакеты?
  Т.е. например, нужно применить очередь с pipe 2 для компа руководителя (192.168.31.19/24)
$fwcmd 45  nat 1 all from any to any in recv $Inet
$fwcmd 46 queue  2 ip from any to 192.168.31.19 in recv re1
$fwcmd 47 queue  1 ip from any to any in recv re1

   В этом примере трафик проходит по обеим трубам и по сути правило 47 имея настройку на pipe меньшего объема срезает "трубу" по которое проходит правило для 192.168.31.19.
   Как логически правильно выстраивать pipe для ограничения канала?
   Можно было бы конечно сделать 3 таблицы, в одной ip адреса серверов, в другой пользователи, в третьей начальство. Т.е. 3 не пересекающихся диапазона. По другому никаким образом это не реализуется?
Предположим есть 2 пайпа, 1ый цепляет адреса из таблицы в которую вручную вносят адреса , предположим теже боссы, а второй включает в себя всю подсеть. Есть ли механизм переопределения? Т.е. например первая труба сверяет по адресу назначения, и все, следующая труба уже не обрабатывается, а вторая гребет всех остальных под единое ограничение?

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Дум Дум on 10-Май-18, 16:16 

> $fwcmd 46 queue  2 ip from any to 192.168.31.19 in recv
> re1
> $fwcmd 47 queue  1 ip from any to any in recv
> re1
>    В этом примере трафик проходит по обеим трубам и
> по сути правило 47 имея настройку на pipe меньшего объема срезает
> "трубу" по которое проходит правило для 192.168.31.19.

man ipfw:
pipe pipe_nr
         Pass packet to a dummynet ``pipe''    (for bandwidth limitation,
         delay, etc.).  See    the TRAFFIC SHAPER (DUMMYNET) CONFIGURATION
         Section for further information.  The search terminates; however,
         on    exit from the pipe and if the sysctl(8)    variable
         net.inet.ip.fw.one_pass is    not set, the packet is passed again to
         the firewall code starting    from the next rule.
net.inet.ip.fw.one_pass - ??
при "1" - не попадет.
при "0", кмк, - поменять очередность...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Goombert on 10-Май-18, 17:32 
>[оверквотинг удален]
> search terminates; however,
>       on exit from the pipe and
> if the sysctl(8) variable
>       net.inet.ip.fw.one_pass is not set, the packet
> is passed again to
>       the firewall code starting from the
> next rule.
> net.inet.ip.fw.one_pass - ??
> при "1" - не попадет.
> при "0", кмк, - поменять очередность...

Если не ошибаюсь при one_pass 1 не будет работать  нат вместе с пайп, поскольку сразу после любого из них пакет полетит минуя правила.
   Но если первой трубой будет идти канал в 1мбит а второй 5, разве во вторую трубу не будет заходить уже зашейпленный до 1мбита поток, смена ничего не даст

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Дум Дум on 11-Май-18, 10:19 
>[оверквотинг удален]
>>       net.inet.ip.fw.one_pass is not set, the packet
>> is passed again to
>>       the firewall code starting from the
>> next rule.
>> net.inet.ip.fw.one_pass - ??
>> при "1" - не попадет.
>> при "0", кмк, - поменять очередность...
> Если не ошибаюсь при one_pass 1 не будет работать  нат вместе
> с пайп, поскольку сразу после любого из них пакет полетит минуя
> правила.

$Inet это re1?
>    Но если первой трубой будет идти канал в 1мбит
> а второй 5, разве во вторую трубу не будет заходить уже
> зашейпленный до 1мбита поток, смена ничего не даст

Если верить ману: "Packets are appended to the queue as they come out from ipfw", а вообще стоит посмотреть в сторону "LOOKUP TABLES" с "tablearg" оттуда же.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Дум Дум on 11-Май-18, 10:21 
>[оверквотинг удален]
>> Если не ошибаюсь при one_pass 1 не будет работать  нат вместе
>> с пайп, поскольку сразу после любого из них пакет полетит минуя
>> правила.
>  $Inet это re1?
>>    Но если первой трубой будет идти канал в 1мбит
>> а второй 5, разве во вторую трубу не будет заходить уже
>> зашейпленный до 1мбита поток, смена ничего не даст
> Если верить ману: "Packets are appended to the queue as they come
> out from ipfw", а вообще стоит посмотреть в сторону "LOOKUP TABLES"
> с "tablearg" оттуда же.

man ipfw

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от artemrts2 email on 11-Май-18, 11:48 
>[оверквотинг удален]
>>> с пайп, поскольку сразу после любого из них пакет полетит минуя
>>> правила.
>>  $Inet это re1?
>>>    Но если первой трубой будет идти канал в 1мбит
>>> а второй 5, разве во вторую трубу не будет заходить уже
>>> зашейпленный до 1мбита поток, смена ничего не даст
>> Если верить ману: "Packets are appended to the queue as they come
>> out from ipfw", а вообще стоит посмотреть в сторону "LOOKUP TABLES"
>> с "tablearg" оттуда же.
> man ipfw

Дурень, еслы бы ты был достаточно умен, то не писал бы челу эту чушь. Мануал, который ты упомянул, далеко не хорошо написан для понимания и построения правильного фаервола. Как пример хорошего мана - man pf.conf.

По теме. Некоторое время назад в ipfw добавили codel/fq_codel. Очень рекомендую его использовать. Вот пример. Я использую так же и веса, например для сервисов в клетках один вес, для юзверей - другой.

####### traffic shaper/piper IN $ext_if
ipfw pipe 24 config bw 70Mbit/s
ipfw sched 24 config pipe 24 type fq_codel target 5ms interval 120ms ecn flows 2048

ipfw queue 410 config sched 24 weight 10
ipfw queue 420 config sched 24 weight 20
ipfw queue 430 config sched 24 weight 30
ipfw queue 440 config sched 24 weight 40
ipfw queue 450 config sched 24 weight 50
ipfw queue 460 config sched 24 weight 60
ipfw queue 470 config sched 24 weight 70
ipfw queue 480 config sched 24 weight 80
ipfw queue 490 config sched 24 weight 90
ipfw queue 4100 config sched 24 weight 100

и примерно такое же на выходе.

Так вот, у меня пол завода может торрентом качать, а я спокойно работаю по ssh или rdp.

Если нужен более подробный конфиг - могу поделиться.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Аноним (??) on 11-Май-18, 12:15 
> Дурень, еслы бы ты был достаточно умен, то не писал бы челу эту чушь.

Хмм.. однако - это сильное заявление!
Но не стоит ли его переадресовать самому себе?

> По теме.
> Так вот, у меня пол завода может торрентом качать, а я спокойно работаю по ssh или rdp.

Это какой такой завод? Вместо работы торренты??
Н-да.. поэтому так и живём.
Или работа у них такая - "торрентом качать"?!
Однако!

> Если нужен более подробный конфиг - могу поделиться.

Нужен! И Господь наш призывал делиться!
Так что, назвался груздём - открывай ворота и не говори, что не дюж.


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от artemrts2 email on 11-Май-18, 13:20 
>[оверквотинг удален]
>> По теме.
>> Так вот, у меня пол завода может торрентом качать, а я спокойно работаю по ssh или rdp.
> Это какой такой завод? Вместо работы торренты??
> Н-да.. поэтому так и живём.
> Или работа у них такая - "торрентом качать"?!
> Однако!
>> Если нужен более подробный конфиг - могу поделиться.
> Нужен! И Господь наш призывал делиться!
> Так что, назвался груздём - открывай ворота и не говори, что не
> дюж.

Если ТС захочет, и обратится с просьбой, то я скину, а ты анон проходи мимо, т.к. не потеме.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Evonder (ok) on 13-Май-18, 11:31 
>[оверквотинг удален]
>> Это какой такой завод? Вместо работы торренты??
>> Н-да.. поэтому так и живём.
>> Или работа у них такая - "торрентом качать"?!
>> Однако!
>>> Если нужен более подробный конфиг - могу поделиться.
>> Нужен! И Господь наш призывал делиться!
>> Так что, назвался груздём - открывай ворота и не говори, что не
>> дюж.
> Если ТС захочет, и обратится с просьбой, то я скину, а ты
> анон проходи мимо, т.к. не потеме.

  Всем добрый день! Прошу прощения что не отвечал долго, мне сейчас все варианты интересны, поскольку только изучаю возможности freebsd, свой изначальный вопрос я разрешил с помощью skipto, правила вот такого вида:

$fwcmd 30  nat 1 all from any to any in recv $Inet
$fwcmd 31  skipto 40  all from any to 192.168.31.19 in recv re1 #вместо адреса таблица с ip руководства
$fwcmd 32 queue  1 ip from any to any in recv re1 #полоса для всех в 2 мбит
$fwcmd 33  skipto 0100  all from any to any in recv re1 #чтобы избежать повторного шейпа в 40 и увеличения задержки
$fwcmd 40  queue  3 ip from any to 192.168.31.19 in recv re1

$fwcmd 0100 pass  all from any to any

   Не знаю насколько это граблями выглядит, но данный вариант позволяет не париться с разбитием на таблицы всех адресов из области, а лишь выдергивать нужные и засовывать в таблицу в правило 31.
  Дополнительные skipto позволят избежать лишнего прохождения через нижележащие шейпы не увеличивая тем самым задержку в получении пакетов.

    artemrts2  Если не затруднит скинте Ваш вариант конфигурации, почитаю про эту возможность, от Вас про нее в первый раз услышал.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

12. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Аноним (??) on 16-Май-18, 08:55 
>[оверквотинг удален]
>> Это какой такой завод? Вместо работы торренты??
>> Н-да.. поэтому так и живём.
>> Или работа у них такая - "торрентом качать"?!
>> Однако!
>>> Если нужен более подробный конфиг - могу поделиться.
>> Нужен! И Господь наш призывал делиться!
>> Так что, назвался груздём - открывай ворота и не говори, что не
>> дюж.
> Если ТС захочет, и обратится с просьбой, то я скину, а ты
> анон проходи мимо, т.к. не потеме.

На лету переобуваешься! Юлить начинаешь?

artemrts2! Ты чего это? Туды-сюды.. Я-то считал тебя человеком слова и дела.
А ты как продажная девка, сменил позу.
Что-то ты меняешь свою ориентацию очень быстро. Так нельзя!
Будь последовательным. Сказал "Если ТС захочет, и обратится с просьбой, то я скину".
А сам? Сдулся? Ну конечно, языком тереть - не кули ворочать.
За базар гнилой надо отвечать! В общем поступил ты не по-пацански.
Пацан ведь как? Сказал - сделал!

Короче, слив защитан.

> а ты анон проходи мимо

А это ещё что было? В свой профиль давно смотрел?
Такой же анон! Да ещё и "3.14здобол".

А может у тебя мания величия?
Типа - как челобитную царю подаешь?
Или работаешь на "очень сикретном заводе"? Где ползавода "качают торрентом"!
И конфиги нельзя выкладывать - хана будет. Причём всем и сразу.

А сдаётся мне мил человек, что ты - как тот неуловимый Джо, со своим конфигом.
Который и наx никому не нужен. Ни сам Джо, ни его сраный конфиг!

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Evonder (ok) on 13-Май-18, 11:36 
>[оверквотинг удален]
>> Если не ошибаюсь при one_pass 1 не будет работать  нат вместе
>> с пайп, поскольку сразу после любого из них пакет полетит минуя
>> правила.
>  $Inet это re1?
>>    Но если первой трубой будет идти канал в 1мбит
>> а второй 5, разве во вторую трубу не будет заходить уже
>> зашейпленный до 1мбита поток, смена ничего не даст
> Если верить ману: "Packets are appended to the queue as they come
> out from ipfw", а вообще стоит посмотреть в сторону "LOOKUP TABLES"
> с "tablearg" оттуда же.

  Изначально ответ прочитал с мобильного и смысл полностью не осознал))
Получается пакеты "прикладываются" к той же очереди, что шейпила их наружу.
В моем конфиге это не сработало видимо по той причине, что труба на ружу одна для всех, ведь по сути 99% трафика пользовательского идет in а не out, наружу ширина канала не так критична как закачка. Поэтому поставил единую очередь для всех кроме сервисов.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

10. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Evonder (ok) on 13-Май-18, 12:50 
>[оверквотинг удален]
>>> зашейпленный до 1мбита поток, смена ничего не даст
>> Если верить ману: "Packets are appended to the queue as they come
>> out from ipfw", а вообще стоит посмотреть в сторону "LOOKUP TABLES"
>> с "tablearg" оттуда же.
>   Изначально ответ прочитал с мобильного и смысл полностью не осознал))
> Получается пакеты "прикладываются" к той же очереди, что шейпила их наружу.
>  В моем конфиге это не сработало видимо по той причине, что
> труба на ружу одна для всех, ведь по сути 99% трафика
> пользовательского идет in а не out, наружу ширина канала не так
> критична как закачка. Поэтому поставил единую очередь для всех кроме сервисов.

Packets are appended to the queue as they come

  Не совсем понятен механизм работы.

Попробовал сэмулировать этот принцип работы. Два пайпа на выход, на 1 мбит и 2 мбита. Если первым идет 1мбит, то второй по сути не работает, поскольку канал уже заужен, смена мест суммы не меняет, все тоже самое и на вход. В итоге если нет четкого разделения по ip, то ничем другим как skipto потоки не разделить. Будут перемешиваться в pipe и шейпиться самым узким.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Pipe: где я ошибся и почему не работает разделение по pipe"  +/
Сообщение от Дум Дум on 14-Май-18, 10:25 

> В итоге если нет четкого
> разделения по ip, то ничем другим как skipto потоки не разделить.

ну или ещё
$fwcmd 46 allow ip from any to 192.168.31.19 in recv re1
после
$fwcmd 46 queue  2 ip from any to 192.168.31.19 in recv re1
из первого сообщения, что, может быть, правильнее...

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

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

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




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

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