После обновления с 2.4.22-std-smp-alt15 до 2.4.25-std-up-alt6 перестал работать таржет REDIRECT iptables в цепочке OUTPUT таблицы nat, при этом в цепочке PREROUTING он продолжает нормально работать. iptables при этом использовался в обоих случаях 1.2.9-alt4. Применявшиеся правила: *nat :PREROUTING ACCEPT :POSTROUTING ACCEPT :OUTPUT ACCEPT -A PREROUTING -d $local_ip -p tcp -m tcp --dport 25 -j REDIRECT --to-ports 7999 -A OUTPUT -d $local_ip -p tcp -m tcp --dport 25 -j REDIRECT --to-ports 7999 Попытка изваять воркэраунд на DNAT тоже привела к провалу в этой-же цепочке как на этом ядре, так и на шлаке, :( в результате пришлось откатиться на старое ядро. Необходимость работы в OUTPUT объясняется тем, что нужно перебрасывать порты для локального трафика, например с реального адреса на фэйковый в пределах одной машины.
Исправлено в kernel-image-std-{up,smp}-alt2. Проблема была в отсутствии в конфигурации ядра поддержки NAT для локальных соединений (CONFIG_IP_NF_NAT_LOCAL=y). На самом деле в 2.4.22 поддержка CONFIG_IP_NF_NAT_LOCAL тоже не была включена, но REDIRECT делал вид, что работает (хотя это могло приводить к странным проблемам). В последующих версиях ядра код netfilter в этом месте исправили, и теперь без CONFIG_IP_NF_NAT_LOCAL NAT в OUTPUT не работает.