История изменений
Исправление vel, (текущая версия) :
Да, у меня на старой картинке нет nat/input.
В wiki (2021) «reroute check» нарисован некорректно, т.к. он не выполняется после forward, только для local_output.
Открой код linux/net/ipv4/netfilter/iptable_mangle.c
Посмотри код iptable_mangle_hook()
ipt_mangle_out() в котором есть «reroute check» выполняется только для NF_INET_LOCAL_OUT и сразу после mangle/output.
Из-за этого nat/output не может изменить output интерфейс. Это большое неудобство. Об этом на лоре куча тредов.
«reroute check» не выполняется в postrouting.
https://upload.wikimedia.org/wikipedia/commons/archive/3/37/20190514145455!Ne... и https://upload.wikimedia.org/wikipedia/commons/archive/3/37/20190928173658!Ne... - правильные, но без nat/input
Все остальные версии с ошибкой.
Ответные пакеты вообще в не попадают в NAT-правила (но обрабатываются в nat-conntrack).
Смотри linux/net/netfilter/nf_nat_core.c nf_nat_inet_fn() (особенно интересно goto oif_changed)
Пропусти пакет через TRACE туда и обратно - убедишься в этом.
NAT-правила срабатывают только для NEW.
Исправление vel, :
Да, у меня на старой картинке нет nat/input.
В wiki (2021) «reroute check» нарисован некорректно, т.к. он не выполняется после forward, только для local_output.
Открой код linux/net/ipv4/netfilter/iptable_mangle.c
Посмотри код iptable_mangle_hook()
ipt_mangle_out() в котором есть «reroute check» выполняется только для NF_INET_LOCAL_OUT и сразу после mangle/output.
Из-за этого nat/output не может изменить output интерфейс. Это большое неудобство. Об этом на лоре куча тредов.
«reroute check» не выполняется в postrouting.
https://upload.wikimedia.org/wikipedia/commons/archive/3/37/20190514145455!Ne... и https://upload.wikimedia.org/wikipedia/commons/archive/3/37/20190928173658!Ne... - правильные, но без nat/input
Все остальные версии с ошибкой.
Ответные пакеты вообще в не попадают в NAT-правила (но обрабатываются в nat-conntrack).
Пропусти пакет через TRACE туда и обратно - убедишься в этом.
NAT-правила срабатывают только для NEW.
Исходная версия vel, :
Да, у меня на старой картинке нет nat/input.
В wiki (2021) «reroute check» нарисован некорректно, т.к. он не выполняется после forward, только для local_output.
Открой код linux/net/ipv4/netfilter/iptable_mangle.c
Посмотри код iptable_mangle_hook()
ipt_mangle_out() в котором есть «reroute check» выполняется только для NF_INET_LOCAL_OUT и сразу после mangle/output.
Из-за этого nat/output не может изменить output интерфейс. Это большое неудобство. Об этом на лоре куча тредов.
«reroute check» не выполняется в postrouting.
https://upload.wikimedia.org/wikipedia/commons/archive/3/37/20190514145455!Ne... и https://upload.wikimedia.org/wikipedia/commons/archive/3/37/20190928173658!Ne... - правильные, но без nat/input
Все остальные версии с ошибкой.