Ядро 2.4.37, без возможности пересборки.
«типичная» ситуация - торрент качалка на сервере + небольшая локалка ,через нат выходящая в инет. Задача - шейпить трафик и серверный и пользовательский (не по отдельности, а как трафик одного вида).
И так: по умолчанию imq ловит трафик _до_ нат в prerouting => отловить по реальному ип не получится.
Что было предложено: форвардящиеся пакеты от каждого клиента snat'ить в заданный диапозон портов, те
iptables -t nat -A POSTROUTING -p tcp -o ppp0 -s 172.16.1.11 -j SNAT --to-source $INET_IP:6890-6895
Далее, через tc
tc qdisc del dev imq0 root tc qdisc add dev imq0 handle 1: root htb default 40
# root qdisc tc class add dev imq0 parent 1: classid 1:1 htb rate 1000kbit tc class add dev imq0 parent 1:1 classid 1:20 htb rate 100kbit ceil 100kbit prio 7 tc class add dev imq0 parent 1:1 classid 1:30 htb rate 100kbit ceil 200kbit prio 1 tc class add dev imq0 parent 1:1 classid 1:40 htb rate 100kbit ceil 800kbit prio 7
tc filter add dev imq0 parent 1:1 prio 1 protocol ip u32 match ip dport 0x1ae0 0x1ff0 flowid 1:30
те мы с помощью tc пытаемся выловить трафик на основании порта назначния; те мы форвардящиеся пакеты запихнули в диапозон портов 6880-6895, а затем через tc его выцепляем.
Но...ничего не выцепляется, не шейпится, в заданный класс ничего не попадает; хотя tc'шный фильтр и добавился, но всё равно трафик идёт в дефолтовый класс.
КАК РЕШИТЬ ЭТУ ***** ПРОБЛЕМУ???