На роутере стоит файрвол (с жёстким policy drop), немного nat, немного сервисов.
Хочется учитывать вообще весь фактический принятый, отправленный и зафорварженый трафик, с его фактическими же src/dst (тоесть до SNAT и после DNAT).
Как правильно расставить -j netflow чтобы трафик был различим и не путался?
Есть ли какая-то разница между вставлением в *filter (input, output, forward) или в *nat (prerouting, postrouting)?
Через таблицу nat проходят только первые пакеты соединения, для которых создаются записи в таблице коннтрака (то есть пакеты с состоянием NEW). Если же для пакета уже есть соответствующее соединение в таблице коннтрака (ESTABLISHED, RELATED и т.п.), то пакет в таблицу nat уже не попадёт. Лучше всего использовать новый форк iptables netflow с опцией nat events - он не требует добавления правил в файерволл и берёт данные из событий трассировщика соединений, что позволяет экспортировать статистику netflow с адресами до и после трансляции. Вот как-то так. Много информации по этому таргету вместе с обсуждением и ссылками на репозиторий можно найти здесь - forum.nag.ru/forum/index.php?showtopic=53979 (можно читать примерно с 10ой страницы).
Так же можно отказаться от ядерного модуля и использовать для сбора данных демон ULOGD2, который так же умеет экспорт в netflow, а так же сразу писать данные в базу данных, что может быть очень удобно.