Порядок прохождения а через в зависит о типа трафика.

Для транзитного трафика он выглядит так:

Транзитный трафик обозначен оранжевой стрелкой

Самое важное, что следует понять из этой схемы, что транзитный трафик никогда не попадает в цепочки INPUT и OUTPUT, а преобразование адреса назначения (DNAT) выполняется перед фильтрацией.

Для локальных пакетов стандартный порядок будет следующим:

Локальный трафик

Прежде всего следует запомнить, что локальный трафик никогда не попадает в цепочки FORWARD. Также, в отличии от транзитного трафика, локальный представлен двумя видами пакетов: входящими и исходящими. Путь входящего пакета ограничивается цепочками PREROUTING и INPUT, а исходящего OUTPUT и POSTROUTING, т.е. если нам нужно выполнить преобразование адреса назначения (DNAT) для локального пакета, то мы должны сделать это в цепочке OUTPUT, потому что в PREROUTING такой пакет никогда не попадет.

Список доступных цепочек в таблицах :

Цепочки в таблицах iptables

Маршрутизация трафика DNAT и SNAT выглядит следующим образом: