Como as tabelas e cadeias iptables são percorridas

17

Eu sei que o linux tem 3 tabelas embutidas e cada uma delas tem suas próprias cadeias como segue:

FILTRO : PREROUTING, FORWARD, POSTROUTING

NAT : PREROUTING, INPUT, OUTPUT, POSTROUTING

MANGLE : PREROUTING, INPUT, FRONTAL, OUTPUT, POSTROUTING

Mas não consigo entender como eles são percorridos, em que ordem, se houver. Por exemplo, como são percorridos quando:

  1. Eu envio um pacote para um pc na minha mesma rede local
  2. quando envio um pacote para um pc em uma rede diferente
  3. quando um gateway recebe um pacote e ele precisa encaminhá-lo
  4. quando recebo um pacote destinado a mim
  5. qualquer outro caso (se houver)
por zer0uno 13.03.2015 / 10:06

1 resposta

22

A Wikipédia possui um diagrama para mostrar a ordem de processamento.

Para mais detalhes, você também pode consultar a documentação do iptables, especificamente o cruzamento do capítulo de tabelas e cadeias . Que também inclui um diagrama de fluxo .

A ordem muda dependendo de como o netfilter está sendo usado (como ponte ou filtro de rede e se tem interação com a camada de aplicação).

Geralmente (embora haja mais diabo nos detalhes do capítulo acima), as cadeias são processadas como:

  • Veja a cadeia INPUT como "tráfego de entrada de fora para este host".
  • Veja a cadeia FORWARD como "tráfego que usa este host como um roteador" (a origem e o destino não são neste host).
  • veja a cadeia OUTPUT como "tráfego que este host deseja enviar".
  • PREROUTING / POSTROUTING tem usos diferentes para cada um dos tipos de tabela (por exemplo, para as tabelas nat, PREROUTING é para tráfego SNAT de entrada (encaminhado / encaminhado) e POSTROUTING é para tráfego DNAT de saída (encaminhado / encaminhado). docs para mais detalhes.

As várias tabelas são:

  • O Mangle é para alterar os pacotes (Tipo de serviço, Tempo de vida, etc.) na passagem.
  • Nat é colocar as regras NAT.
  • Raw deve ser usado para marcação e acompanhamento de conexão.
  • O filtro é para filtrar pacotes.

Então, para seus cinco cenários:

  1. Se o host de envio seu host com iptables, OUTPUT
  2. O mesmo que acima
  3. A cadeia FORWARD (desde que o gateway seja o host com iptables)
  4. Se "me" for o host com iptables, INPUT
  5. Observe as regras da cadeia acima (que é a regra geral) e o diagrama de fluxo (e isso também varia em o que você está tentando alcançar com o IPTables)
por 13.03.2015 / 10:14