entende cadeias e tabelas no netfilter / iptables

0

Pelo que entendi, o kernel Linux tem cinco pontos de gancho para o fluxo de pacotes IPv4 definido em netfilter_ipv4.h file:

/* IP Hooks */
/* After promisc drops, checksum checks. */
#define NF_IP_PRE_ROUTING   0
/* If the packet is destined for this box. */
#define NF_IP_LOCAL_IN      1
/* If the packet is destined for another interface. */
#define NF_IP_FORWARD       2
/* Packets coming from a local process. */
#define NF_IP_LOCAL_OUT     3
/* Packets about to hit the wire. */
#define NF_IP_POST_ROUTING  4

.. e de acordo com netfilter_ipv6.h , o mesmo parece ser verdadeiro para o IPv6:

/* IP6 Hooks */
/* After promisc drops, checksum checks. */
#define NF_IP6_PRE_ROUTING  0
/* If the packet is destined for this box. */
#define NF_IP6_LOCAL_IN     1
/* If the packet is destined for another interface. */
#define NF_IP6_FORWARD      2
/* Packets coming from a local process. */
#define NF_IP6_LOCAL_OUT        3
/* Packets about to hit the wire. */
#define NF_IP6_POST_ROUTING 4

Isso me faz pensar que é correto pensar na arquitetura netfilter / iptables de forma que chains defina o local onde as operações acontecem e tables determine quais operações podem ser feitas? Além disso, o tables também é importante para o kernel ou eles simplesmente significam que iptables usuários agrupam tipos de processamento que podem ocorrer?

    
por Martin 06.05.2016 / 01:09

1 resposta

2

A chave é que as tabelas estão agrupando as coisas por intenção do design . Todas as suas regras destinadas a filtragem estão neste lugar, todas as suas regras de NAT por lá. As cadeias são sequências de regras e as cadeias padrão são percorridas em pontos específicos no caminho de um pacote.

Em teoria, você poderia adicionar uma regra que faça filtragem para, digamos, a tabela NAT. Mas o front end impede que você faça isso, com uma mensagem como

The "nat" table is not intended for filtering, the use of DROP is therefore inhibited.

A maneira que eu penso é que é realmente sobre cadeias, e as tabelas são um pouco de reflexão para ajudar você a organizá-las. É confuso porque é um design de interface de usuário ad-hoc e historicamente desenvolvido.

    
por 08.05.2016 / 15:34