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

Исходное сообщение
"Pipe: где я ошибся и почему не работает разделение по pipe"

Отправлено Evonder , 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ый цепляет адреса из таблицы в которую вручную вносят адреса , предположим теже боссы, а второй включает в себя всю подсеть. Есть ли механизм переопределения? Т.е. например первая труба сверяет по адресу назначения, и все, следующая труба уже не обрабатывается, а вторая гребет всех остальных под единое ограничение?


Содержание

Сообщения в этом обсуждении
"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Дум Дум , 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", кмк, - поменять очередность...


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Goombert , 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мбита поток, смена ничего не даст


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Дум Дум , 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" оттуда же.


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Дум Дум , 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


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено artemrts2 , 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.

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


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Аноним , 11-Май-18 12:15 
> Дурень, еслы бы ты был достаточно умен, то не писал бы челу эту чушь.

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

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

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

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

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



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

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


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Evonder , 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  Если не затруднит скинте Ваш вариант конфигурации, почитаю про эту возможность, от Вас про нее в первый раз услышал.


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

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

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

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

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

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

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

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


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Evonder , 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, наружу ширина канала не так критична как закачка. Поэтому поставил единую очередь для всех кроме сервисов.


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Evonder , 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 и шейпиться самым узким.


"Pipe: где я ошибся и почему не работает разделение по pipe"
Отправлено Дум Дум , 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
из первого сообщения, что, может быть, правильнее...