Так вот в том и дело. Именно так и делаю - но там у пакетов ещё не вернулись внутренние адреса
Ну и что?
Connmark на каждое новое соединение conntrack повесили. Каждый пакет на входе пометили номером метки от соединения в conntrack.
Чисто по метке на пакете сунули куда нужно его.
Адреса там участие принимают только в развешивании меток на новые соединения. И там точно внутренние ещё известны. Дальше чисто на метки смотрим, остальное - жопоболь conntrack