У меня вопрос о том, где находится Netfilter в сетевом стеке в ядре Linux.
Я знаю, что это сетевой уровень, netfilter и затем TCP уровень. Фактически, после декапсуляции пакета на уровне IP в ядре, он будет разобран Netfilter, а затем декапсулирован в TCP. Поэтому мне интересно, как он может фильтровать пакеты на основе номера порта, как это сделано в заголовке TCP.
Netfilter не маршрутизирует пакеты, маршрутизация выполняется в отдельной части сетевого стека.
https://en.wikipedia.org/wiki/Netfilter#/media/File:Netfilter-packet-flow.svg показывает поток пакетов в подсистеме Netfilter.
Внутри Netfilter работает со структурами skb, которые содержат кадры L2 или пакеты L3 и связанные с ними метаданные.