В конец запутался с я tc. Обчитался всего что было и тут и вообще в инете, и пришел к вам на поклон.
Суть проблемы. Циска (192.168.X.1) получая трафик (110,25,143,80) пробрасывает эти порты к серверу, что стоит в локалке (192.168.X.2), eth0, шлюз = 192.168.X.1
Хочу «прирезать» входящий трафик (органичить по скорости). Для это отмечаю нужные пакеты через iptables и далее вступает tc.
*mangle
#-A PREROUTING -p tcp -m multiport --dports 110,25,143,80 ! -s 192.168.0.0/16 -j LOG --log-level debug --log-prefix 'PREROUTING:'
-A PREROUTING -p tcp ! -s 192.168.0.0/16 --dport 25 -d 192.168.X.2 -j MARK --set-mark 2
-A PREROUTING -p tcp ! -s 192.168.0.0/16 --dport 110 -d 192.168.X.2 -j MARK --set-mark 3
-A PREROUTING -p tcp ! -s 192.168.0.0/16 --dport 143 -d 192.168.X.2 -j MARK --set-mark 4
-A PREROUTING -p tcp ! -s 192.168.0.0/16 --dport 80 -d 192.168.X.2 -j MARK --set-mark 5
далее tc
$DEV=eth0
$RATE_IN=1024
tc qdisc add dev $DEV handle ffff: ingress
#ВХОДЯЩИЙ из инета smtp трафик (0x2)
tc filter add dev $DEV parent ffff: protocol ip prio 3 handle 2 fw police rate $[$RATE_IN/4] burst 10000 drop flowid :1
#ВХОДЯЩИЙ из инета pop3 трафик (0x3)
tc filter add dev $DEV parent ffff: protocol ip prio 3 handle 3 fw police rate $[$RATE_IN/4] burst 10000 drop flowid :1
#ВХОДЯЩИЙ из инета imap4 трафик (0x4)
tc filter add dev $DEV parent ffff: protocol ip prio 3 handle 4 fw police rate $[$RATE_IN/4] burst 300kbit drop flowid :1
все проглатывается, но эффекта никакого. Попробовал ограничиывать траф не пользуя метки пакетов
tc filter add dev $DEV parent ffff: protocol ip u32 match ip dst 192.168.X.2 match ip dport 80 0xffff police rate 10kbit burst 10000 drop flowid :1
проверяю качая отдельный файл через http с помощью wget - получаю не 10kbit, а максимальную скорость.
Что я делаю не так?
p.s. и как tc выразить отрицание, т.е. обратное match ip dst 192.168.0.0/16. Воск. знак (!) и not - не принимаются, это вообще возможно?