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

Re: OT: iproute2



Покотиленко Костик wrote:
В Срд, 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 марки подаются в разном виде
(десятичный|шеснадцатиричный), я точно не помню, проверь сам.

Ок, спасибо, буду пробовать :)

--
Pavel



Reply to: