Здравствуйте! Помогите разобраться с шейпером.
Шлюз организован на сервере (Centos 5.4) с двумя сетевыми картами. eth0 - внешняя, eth1 - внутренняя.
В биллинге (4.6) конфигурация шлюза:
Код:
user_rule.editor.class=bitel.billing.module.services.ipn.editor.ManadContractRuleEditor
gate_manager.class=bitel.billing.server.ipn.ManadGateWorker
Команды:
Код:
[DEFAULT]
[OPEN]
<LOOP>
iptables -A FORWARD -t filter -s {A} -j ACCEPT
</LOOP>
/sbin/tc class add dev eth1 parent 1:0 classid 1:[N1] htb rate ${speed} burst 4k prio 1
/sbin/tc qdisc add dev eth1 parent 1:[N1] handle [N1]: sfq perturb 10 quantum 1500
/sbin/tc class add dev eth1 parent 1:0 classid 1:[N2] htb rate ${speed} burst 4k prio 1
/sbin/tc qdisc add dev eth1 parent 1:[N2] handle [N2]: sfq perturb 10 quantum 1500
<LOOP>
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio [N1] u32 match ip dst {A} flowid 1:[N1]
</LOOP>
<LOOP>
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio [N2] u32 match ip src {A} flowid 1:[N2]
</LOOP>
[/OPEN]
[CLOSE]
<LOOP>
/sbin/iptables -D FORWARD -t filter -s {A} -j ACCEPT
</LOOP>
/sbin/tc filter del dev eth1 parent 1:0 protocol ip prio [N1]
/sbin/tc filter del dev eth1 parent 1:0 protocol ip prio [N2]
/sbin/tc class del dev eth1 parent 1:0 classid 1:[N1] htb rate ${speed} burst 4k prio 1
/sbin/tc class del dev eth1 parent 1:0 classid 1:[N2] htb rate ${speed} burst 4k prio 1
[/CLOSE]
[/DEFAULT]
В типах правил - скорости.
На шлюзе установлен manad_linux.pl (от 08.04.08).
В init_shaping.sh:
Код:
#!/bin/sh
INDEV="eth1"
/sbin/tc qdisc del dev $INDEV root 2> /dev/null
##### speed server->client(downstream)
/sbin/tc qdisc add dev $INDEV root handle 1: htb default ffff r2q 1
#default
/sbin/tc class add dev $INDEV parent 1:0 classid 1:ffff htb rate 100mbit burst 4k prio 3
/sbin/tc qdisc add dev $INDEV parent 1:ffff handle ffff: sfq perturb 10 quantum 1500
tc monitor показывает, что фильтры добавляются.
Код:
class htb 1:7 dev eth1 root prio 1 rate 8192Kbit ceil 8192Kbit burst 4Kb cburst 2623b
qdisc sfq 7: dev eth1 parent 1:7 limit 128p quantum 1500b perturb 10sec
class htb 1:8 dev eth1 root prio 1 rate 8192Kbit ceil 8192Kbit burst 4Kb cburst 2623b
qdisc sfq 8: dev eth1 parent 1:8 limit 128p quantum 1500b perturb 10sec
filter dev eth1 parent 1: protocol ip pref 7 u32 fh 810::800 order 2048 key ht 810 bkt 0 flowid 1:7
match 0a31403e/ffffffff at 16
filter dev eth1 parent 1: protocol ip pref 8 u32 fh 811::800 order 2048 key ht 811 bkt 0 flowid 1:8
match 0a31403e/ffffffff at 12
При закрытии шлюза - удаляются:
Код:
deleted filter dev eth1 parent 1: protocol ip pref 7 u32
deleted filter dev eth1 parent 1: protocol ip pref 8 u32
deleted class htb 1:7 dev eth1 root leaf 7: prio 1 rate 8192Kbit ceil 8192Kbit burst 4Kb cburst 2623b
deleted class htb 1:8 dev eth1 root leaf 8: prio 1 rate 8192Kbit ceil 8192Kbit burst 4Kb cburst 2623b
Мало того, они работают! Но работают только в одну сторону. Входящий траффик ограничивается, а вот исходящий не желает!
В командах шлюза вроде присутствует строчка и для аплоада, а не работает. Третий день парюсь с этим - отупел.

Натолкните на мысль, где я сделал не так.