netfilter
O netfilter é um conjunto de ganchos espalhados por todo o código de rede no kernel. Isso significa que se um pedaço de código está prestes a fazer algo significativo (vamos chamá-lo de X), ele chama uma função que diz "Estou prestes a fazer X". Essa função notificaria qualquer outra parte interessada através de um retorno de chamada registrado. Também é usado por outros sistemas (não iptables) como o IPVS.
Onetfilter também inclui mecanismos para passar pacotes para programas userspace - isto é usado pelo iptables para os targets QUEUE e ULOG para permitir ao usuário processar pacotes no espaço do usuário.
ip_tables (o módulo do kernel)
ip_tables é um módulo que usa o netfilter para obter esses avisos. Ele identifica os pacotes que foram informados como relevantes e faz as ações que foram instruídos a fazer. Ele sabe quais pacotes são relevantes e as ações a serem executadas neles com base nas regras que o usuário forneceu; Ele armazena essas regras em uma tabela. Na verdade, ele usa um módulo mais genérico, xtables, que o ip_tables usa.
Módulos de extensão
Os módulos de extensão fazem grande parte do trabalho de fornecer critérios de correspondência e ações de destino. Alguns exemplos de módulos de extensão incluem IP_NF_TARGET_LOG e NF_NAT.
iptables (a ferramenta userspace)
iptables é uma ferramenta de espaço de usuário para configurar essas regras no módulo ip_tables. A ferramenta também vem com muitos plugins que analisam opções de linha de comando e registram regras.
Saiba mais sobre o iptables internals
Se você quiser saber mais sobre os internos, há um livro excelente sobre o assunto. O livro tem tudo o que você precisa se você quer criar funcionalidades adicionais para o iptables, mas não fará muito para aumentar sua compreensão de como usar o iptables.
Saiba mais sobre como usar o iptables
Se você quiser entender melhor como usar o iptables, é melhor ler várias partes diferentes da documentação para ver as coisas explicadas de maneiras diferentes. Ainda mais importante, é jogar com o iptables você mesmo . Eu particularmente apreciei usar o alvo LOG para ver o fluxo de pacotes através das tabelas e cadeias e os efeitos das regras neles. Além disso, um gráfico do fluxo de pacotes através das tabelas é extremamente útil. Finalmente, se você está tentando fazer algo com o iptables e não está fazendo o que você espera, faça uma pergunta específica aqui no site; há um número de pessoas que respondem regularmente a perguntas que estão familiarizadas com o iptables.