Saber identificar onde cada tabela com suas respectivas listas atua e o poder que cada uma delas tem, é essencial para a correta construção de regras de firewall.
A figura 2 reúne todas as listas das tabelas filter e nat, identificando onde cada uma atua. A precedência das regras também está expressa na figura, pois em ganchos onde um pacote passa por mais de uma lista (como no exemplo do OUTPUT que passa pela nat OUTPUT e depois pela filter OUTPUT), saber qual delas será aplicada primeiro pode ser essencial.

Figura 2
Considerando que a tabela nat tem poder para reescrever números de ip e porta, deve-se ter em mente:
1. Para alterar ip ou porta de destino:
Isto deve NECESSARIAMENTE ser realizado antes da etapa de roteamento, pois o roteamento depende dos parâmetros de destino. Logo, as regras que alteram um pacote devem ser colocadas no nat PREROUTING, para pacotes que estão entrando na máquina, ou no nat OUTPUT, exclusivo para pacotes gerados por processos locais (pois eles não passam pelo PREROUTING). A ação básica (-j) que realiza esta alteração é DNAT (ou REDIRECT, para o IP do firewall).
2. Para alterar ip ou porta de origem:
Isto deve ser feito NECESSARIAMENTE após a etapa de roteamento, antes do pacote deixar a máquina em direção "ao mundo". Todos os pacotes que deixam a máquina, sejam os repassados ou os gerados localmente, passam pelo gancho POSTROUNTING, sendo que é neste local que se deve colocar as regras para alterar parâmetros de origem. A ação básica (-j) que realiza esta alteração é SNAT.
Também existem outras tabelas, como o mangle ou a raw, mas, por serem de uso muito particular, optei por não abordar nestes dois artigos. Contudo, só para não deixar passar, as listas da tabela raw vem antes de todas as demais, seguidas das listas da mangle e só depois vem as do nat e filter. Mangle atua em todos os ganchos.
Por fim, não poderia deixar de mencionar que isto é a ponta do iceberg sobre iptables. Por ser um filtro statefull, permite escrever regras muito interessantes e complexas, como limitar conexões, dropar pacotes randomicamente, realizar balanceamento de carga, e muito mais.