O Kernel do Linux fornece o Netfilter como um mecanismo para a funcionalidade de NAT e firewall. Ambas as funcionalidades requerem análise e classificação dos pacotes de entrada, o que é apelidado de "inspeção de estado de pacotes".
Para a maioria do tráfego, observar os cabeçalhos dos pacotes IP é suficiente. No entanto, protocolos como FTP, IRC, H.323 (e mais alguns) possuem módulos específicos na configuração do kernel para facilitar a passagem NAT apropriada para esses pacotes. No kernel, esses são chamados de 'módulos conntrack'.
Agora, meu entendimento é que a carga útil desses pacotes é examinada para permitir que o netfilter reconheça quando uma conexão externa chega e precisa ser roteada para o respectivo cliente. Isso ocorre porque o protocolo espera informações transmitidas na camada OSI 7 que tem um impacto direto nos pacotes IP reais que estão sendo enviados na camada 3. Em outras palavras, o código do aplicativo faz com que a criação de outra conexão TCP, que deve ser roteada pelo Dispositivo NAT.
Agora, minhas perguntas: