Вот трассировка прохождения пакета, от меня (192.168.0.2) в интернет и обратно, через маршрутизатор (192.168.0.1)eth0 (192.168.0.1) =>
PREROUTING / mangle 192.168.0.2 => 213.180.204.8
PREROUTING / nat 192.168.0.2 => 213.180.204.8
FORWARD / mangle 192.168.0.2 => 213.180.204.8
POSTROUTING / nat SNAT 192.168.0.2 на 127.62.11.73
=> tun0 (127.62.11.73)
dvb0_1 =>
PREROUTING / mangle 213.180.204.8 => 127.62.11.73
PREROUTING / nat -нет-
FORWARD / mangle 213.180.204.8 => 192.168.0.2
=> eth0
1. Когда пакет возвращяется, цепочку "PREROUTING / nat" он даже и не проходит, видимо с ним на этом шаге происходит обратная трансляция NAT. Достаточно странно что пакет в этой цепочке не появляется, пусть после трансляции хоть бы всплывал тут...
2. Ядро скомпилировано так, чтобы пакет улетал в IMQ только после POSTROUTING / nat.
Какой глубинный смысл строчки "iptables -t mangle -A PREROUTING -i * -j IMQ --todev 0". Причем именно в _mangle_, если пакет туда попадет уже после PREROUTING / nat ?
3. Получается так, что входящий пакет, который проходит NAT, даже при использовании IMQ, невозможно отмаркировать для нужд шейпера.
Вот если NAT убрать, все получается красиво, если NAT работает, блин не получается...