Bug 4045

Summary: REDIRECT target in OUTPUT chain not worked
Product: Sisyphus Reporter: Andy Gorev <master>
Component: kernel-image-std-upAssignee: Sergey Vlasov <vsu>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P2    
Version: unstable   
Hardware: all   
OS: Linux   

Description Andy Gorev 2004-04-27 20:16:21 MSD
После обновления с 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 объясняется тем, что нужно перебрасывать
порты для локального трафика, например с реального адреса на фэйковый в пределах
одной машины.
Comment 1 Sergey Vlasov 2004-06-06 19:36:59 MSD
Исправлено в 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 не работает.