При SNAT транзитный пакет проходит через цепочку POSTROUTING таблицы nat где и происходит подмена адреса источника. В iptables-tutorial написано, что обратная трансляция(возвращение пришедшим транзитным пакетам адреса источника) происходит автоматически.
Другими словами в класическом случае имеем внутреннюю локальную сеть и шлюз с настроенным NAT во внешнюю сеть. Пакеты с локальной сети попадают на шлюз и в цепочке POSTROUTING таблицы nat (например при правиле iptables -t nat -A POSTROUTING -p tcp -s local_net -j SNAT --to-source gate_address) у транзитных пакетов меняется адрес источника. При получении ответа для транзитных пакетов на шлюзе меняется адрес приемника и пакет направляется в локальную сеть нужному хосту.
1) Где при SNAT(в какой цепочке и таблице) происходит изменение адреса приемника(при получении ответа из внешней сети)?
2) Как можно ли отследить(направить в -j ULOG) такие пакеты(вернувщиеся после с внешней сети при использовании NAT), но уже с адресами назначения локальных хостов?
P.S.
Надеюсь, что внятно описал проблему.