O que você está tentando fazer é explicitamente negado pelo kernel .
You can't send packets from non 127/8 addresses to 127/8. The kernel filters them out and drops them as it considers them "martians".
Isso presumivelmente acontece porque rp_filter
está ativado. Possivelmente desativá-lo pode alterar esse comportamento (embora isso desative algumas proteções de segurança potencialmente cruciais).
Com o REDIRECT você não está mudando o IP, e é por isso que funciona. Em outras palavras, se você for usar o DNAT, pode enviá-lo para qualquer coisa fora de 127.0.0.0/8.