Re: OT: iproute2
В Срд, 06/09/2006 в 11:36 +0300, Покотиленко Костик пишет:
> В Срд, 06/09/2006 в 11:47 +0400, Pavel Volkovitskiy пишет:
> > Покотиленко Костик wrote:
> > > В Срд, 06/09/2006 в 10:56 +0400, Pavel Volkovitskiy пишет:
> > >> Pavel Volkovitskiy wrote:
> > >>> Pavel Volkovitskiy wrote:
> > >>>> Добрый день!
> > >>>>
> > >>>> Необходимо каджому из N ip адресов выделить определённую фиксированую
> > >>>> скорость
> > >>> Сейчас настроил:
> > >>>
> > >>> для исходящего:
> > >>> tc qdisc del dev eth1 root
> > >>> tc qdisc add dev eth1 root handle 1: htb
> > >>> tc class add dev eth1 parent 1: classid 1:1 htb rate 100mbit
> > >>> tc class add dev eth1 parent 1:1 classid 1:10 htb \
> > >>> rate 128kbit ceil 128kbit burst 4k
> > >>>
> > >>> tc filter add dev eth1 parent 1: protocol ip prio 1 u32 \
> > >>> match ip dst 10.0.2.2/32 classid 1:10
> > >> Хорошо, нагрузки я не замечу :)
> > >>
> > >> А с этим скриптом всё правильно? Я до этого момента tc не использовал,
> > >> скрипт написан путём проб и ошибок, может что поправить надо?
> > >
> > > Входящий трафик лучше ограничивать как исходящий на интерфейсе смотрящем
> > > в сторону клиента тем же HTB.
> >
> > Тут всё немного "перевёрнуто"
> > вот схемка:
> >
> > INET - eth0 - NAT - eth1 - клиент
> >
> > т.е. сейчас htb на eth1 ограничевает "входящую" скорость для клиента
> >
> > у меня динамический SNAT, значит я не могу шейпить трафик от клиентов в
> > инет на eth0? ведь ip уже реальные, статической связи локальный ip -
> > прямой ip нет. или я не прав?
>
> Можешь, сам так делаю. Вот тебе рецепт по твоей схеме.
>
> 1. Создаёш классы HTB для ограничения входящего и исходящего трафика.
> Причём, все ограничения будут "исходящими", для входящего дисциплины
> вешаешь на eth1, для исходящего на eth0.
> 2. Ставишь фильтры на марки файрвола с помощью tc filter fwmark.
> Например, исходящий трафик будет с маркой 0x10, входящий 0x20.
> 3. В файрволе маркируешь пакеты как тебе угодно с помощью:
>
> iptables -t mangle -A PREROUTING -s <client_net> -i eth1 -j MARK
> --set-mark 0x10
> iptables -t mangle -A PREROUTING -s <client_net> -i eth1 -j RETURN
>
> iptables -t mangle -A PREROUTING -d <client_net> -i eth0 -j MARK
> --set-mark 0x20
> iptables -t mangle -A PREROUTING -d <client_net> -i eth0 -j RETURN
>
> Поскольку пакеты маркируются в PREROURING, до SNAT'а они ещё не дошли,
> т.к. SNAT обрабатывается на выходе в POSTROUTING.
>
> Ещё один момент, в tc и iptables марки подаются в разном виде
> (десятичный|шеснадцатиричный), я точно не помню, проверь сам.
Извиняюсь, в предыдущем, заменить
iptables -t mangle -A PREROUTING
на
iptables -t mangle -A FORWARD
--
Покотиленко Костик <casper@meteor.dp.ua>
Reply to: