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

Исходное сообщение
"htb.init и раздача безлимитки"

Отправлено zatei , 21-Фев-10 03:11 
Первый раз сталкиваюсь с нуждой настройки шейпера трафика под линухом. Три дня копания в гугле принесли результат в виде выбора для этого дела скрипта htb.init.

Ситуация такая:
Планируется локалка, 20 офисов, в офисе может быть несколько компьютеров, выход в инет через сервер с настроенным NAT'ом, канал в инет 100 мегабит анлим симметричный, 20 мегабит мы забираем себе остальные отдаем.

Требуется:
Настроить шейпер таким образом чтобы один компьютер в одном офисе получал канал от 4-х до 10-ти мегабит в зависимости от загрузки канала. Если в офисе n компьютеров и они одновременно используют выданный на офис канал то он соответственно делится на n, если из n компьютеров в инете сидит один то он получает весь канал, если допустим два из трех... ну вы поняли, динамическое распределение.

Вот что у меня получилось после денька мучений с виртуальными машинами, ткните носом в ошибки или помогите с правильным вариантом написания правил:

----------------------------------
eth1
DEFAULT=10
R2Q=70

eth1-2.root
RATE=99Mbit

eth1-2:20.default
RATE=1Mbit
CEIL=1Mbit
LEAF=sfq

eth1-2:22.usreserved # Наш резерв
RATE=20Mbit
CEIL=99Mbit

eth1-2:22:220.servers # Резерв для наших серверов
RATE=10Mbit
CEIL=99Mbit
LEAF=sfq
RULE=*,192.168.0.2
RULE=*,192.168.0.3
RULE=*,192.168.0.4

eth1-2:22:222.servers # Резерв для наших рабочих станций
RATE=10Mbit
CEIL=99Mbit
LEAF=sfq
RULE=*,192.168.0.10
RULE=*,192.168.0.11
RULE=*,192.168.0.12

eth1-2:30.office01 # В первой комнате 3 машины
RATE=4Mbit
CEIL=10Mbit
LEAF=sfq
RULE=*,192.168.0.20
RULE=*,192.168.0.21
RULE=*,192.168.0.22

eth1-2:32.office02 # А во второй одна
RATE=4Mbit
CEIL=10Mbit
LEAF=sfq
RULE=*,192.168.0.23

и т.д.
----------------------------------


Содержание

Сообщения в этом обсуждении
"htb.init и раздача безлимитки"
Отправлено zatei , 21-Фев-10 03:16 
и да, как сделать две вещи:

зашейпить исходящий трафик, т.к. используется NAT это кажется будет геморроем с маркировкой пакетов, или я ошибаюсь?

как с вышеуказанными правилами (если они верны конечно) снять шейпинг на трафик внутри локалки?


"htb.init и раздача безлимитки"
Отправлено Алекс , 21-Фев-10 18:57 
>и да, как сделать две вещи:
>
>зашейпить исходящий трафик, т.к. используется NAT это кажется будет геморроем с маркировкой
>пакетов, или я ошибаюсь?
>
>как с вышеуказанными правилами (если они верны конечно) снять шейпинг на трафик
>внутри локалки?

Поставь какую-нибудь машину перед нато. Объедени две сетевухи бриджом и на ней шейпи.
Будешь нормально резать в обе стороны.


"htb.init и раздача безлимитки"
Отправлено zatei , 21-Фев-10 22:47 
>Поставь какую-нибудь машину перед нато. Объедени две сетевухи бриджом и на ней
>шейпи.
>Будешь нормально резать в обе стороны.

А разве бридж в линухе действует не на канальном уровне? То есть на основе mac'ов а не ip'шников?


"htb.init и раздача безлимитки"
Отправлено Алекс , 22-Фев-10 09:10 
>>Поставь какую-нибудь машину перед нато. Объедени две сетевухи бриджом и на ней
>>шейпи.
>>Будешь нормально резать в обе стороны.
>
>А разве бридж в линухе действует не на канальном уровне? То есть
>на основе mac'ов а не ip'шников?

Действует-то он на основе маков, а пакетец проходит через ликункс, поэтому можно посмотреть IP адрес. Помимо шейпера можно и iptabels применить к нему.


"htb.init и раздача безлимитки"
Отправлено Koba LTD. , 22-Фев-10 11:15 
>>>Поставь какую-нибудь машину перед нато. Объедени две сетевухи бриджом и на ней
>>>шейпи.
>>>Будешь нормально резать в обе стороны.
>>
>>А разве бридж в линухе действует не на канальном уровне? То есть
>>на основе mac'ов а не ip'шников?
>
>Действует-то он на основе маков, а пакетец проходит через ликункс, поэтому можно
>посмотреть IP адрес. Помимо шейпера можно и iptabels применить к нему.
>

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


"htb.init и раздача безлимитки"
Отправлено Алекс , 22-Фев-10 13:12 

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

А как в свиче делать заимствование полосы?


"htb.init и раздача безлимитки"
Отправлено zatei , 22-Фев-10 13:24 
>не понятно зачем придумывать велесопед, ставите управляемый свич второго уровня, каждый офисе
>подключаеться перед натом через него в отдельный порт/vlan и просто на
>порту средствами свича ограничиваете скорость до нужных рамок. все и не
>надо придумывать какие либо велосипеды.

Трабл в том что сеть при этом беспроводная, то есть конечное оборудование в нашей серверной это мощный роутер, толку от управлялки при этом?

Идея с промежуточным мостом очень понравилась, настроил все это дело я на виртуальных машинах - вроде работает, трафик жмется, но при этом ужасные потери пакетов.

Есть мнение что это из-за кривых виртуальных девайсов, бриджи вообще хреновато держат многие сетевухи.

Как вы думаете, если мы купим для этой системы интеловские сетевухи, потерь не будет?


"htb.init и раздача безлимитки"
Отправлено Алекс , 22-Фев-10 14:12 
>>не понятно зачем придумывать велесопед, ставите управляемый свич второго уровня, каждый офисе
>>подключаеться перед натом через него в отдельный порт/vlan и просто на
>>порту средствами свича ограничиваете скорость до нужных рамок. все и не
>>надо придумывать какие либо велосипеды.
>
>Трабл в том что сеть при этом беспроводная, то есть конечное оборудование
>в нашей серверной это мощный роутер, толку от управлялки при этом?

Да тут не совсем в том дело. Свич тупо порт зарежит и все. Поставил 4 Мбита и он больше не даст. Не важно - сидит кто-то еще в инете или нет.

Вот на счет интеловских - не знаю. Он у нас стоял комп мостом без виртуализации. Шепирил человек 800. Это было давно даже щас не вспомню, что там у нас стояло. Ибо компьютер этот давным-давно разобран.


"htb.init и раздача безлимитки"
Отправлено Алекс , 22-Фев-10 17:01 
>Идея с промежуточным мостом очень понравилась, настроил все это дело я на
>виртуальных машинах - вроде работает, трафик жмется, но при этом ужасные
>потери пакетов.
>
>Есть мнение что это из-за кривых виртуальных девайсов, бриджи вообще хреновато держат
>многие сетевухи.

Попробуй еще изменить параметр ядра HZ на 500 или даже 1000.


"htb.init и раздача безлимитки"
Отправлено Gremlin , 26-Мрт-10 05:37 
Алекс
спрашивается и зачем лишняя железка ?

Koba LTD
стихи про велосипед понравились :))

предположим что eth1 это выход в интернет

iptables -t mangle -A POSTROUTING -s IP_ADDRESS -o eth1 -j MARK --set-mark 222

IP_ADDRESS - ip юзера

222 - произвольно выбрано мной :)

дальше

файлики eth1, eth1-2.root и тд
вместо RULE=ip, пишем MARK=222

собсно примерно так


"htb.init и раздача безлимитки"
Отправлено vvvua , 26-Мрт-10 20:57 
Поверхностный просмотр показал, что возможен один косяк: сумма всех чилд рейтов должна не превышать парент, иначе не будет шейпить.
Исходя из этого, советую написать генерилку динамических htb.init правил, т.к. rate будет зависеть от количества правил...
Для обжималки входящего - либо маркировка, как уже говорилось, либо виртуальный интерфейс ifb ( http://www.linuxfoundation.org/collaborate/workgroups/networ... ) и на его исходе жать. Т.е. весь входящий трафик eth1 (где юзеры) перенаправлять на ifb0. И правила писать относительно ifb0.


"htb.init и раздача безлимитки"
Отправлено Gremlin , 27-Мрт-10 02:34 
немного накосячил выше (не eth1 а ethX - короче тот который смотрит в сторону интернета)

с виртуальным интерфейсом тоже выход, мне лично было проще промаркировать пакеты
20 офисов и в каждом по 3 компьютера(к примеру) ну 60 маркеров в iptables - нормально.


"htb.init и раздача безлимитки"
Отправлено ALex_hha , 26-Мрт-10 21:35 
>eth1-2:20.default
>RATE=1Mbit
>CEIL=1Mbit

CEIL можно и так не указывать, по дефолту он равен RATE