[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: