LINUX.ORG.RU

История изменений

Исправление 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

Все остальные версии с ошибкой.