I'm trying to get
IMQ working correctly as incoming on a box that is running
SNAT.
I've modified imq.c
so that it fires after IP_PRI_NAT_DST instead of mangle and am using tc filter
commands to choose the flowid based on the destination address. IMQ still
seems to be firing before the system has reversed the SNAT.
scripts I'm
using
tc qdisc add
dev imq0 root handle 1: htb default 20
DOWNLINK=512
LIMIT="ceil
${DOWNLINK}kbit"
tc class add
dev imq0 parent 1: classid 1:1 htb rate ${DOWNLINK}kbit
tc class add dev imq0 parent 1:1 classid 1:10 htb rate 64kbit $LIMIT
tc class add dev imq0 parent 1:1 classid 1:20 htb rate 64kbit $LIMIT
tc qdisc add dev imq0 parent 1:10 handle 10:
sfq
tc qdisc add dev imq0 parent 1:20 handle 20: sfq
tc qdisc add dev imq0 parent 1:20 handle 20: sfq
tc filter add dev imq0 parent 1: protocol ip
prio 1 u32 match ip dst 172.30.0.2/32 flowid 1:10
iptables -t mangle -A PREROUTING -i eth0 -j
IMQ --todev 0
iptables -t nat -A PREROUTING -s 172.30.0.0/24 -d
! 172.30.0.0/24 -j MASQUERADE
ip link set imq0
up