iptables e nftables ambos contam com a mesma infraestrutura de netfilters, e usam ganchos em vários lugares . é explicado lá: Netfilter ganchos , ou há este systemtap manpage , que documenta um pouco da manipulação do gancho:
PRIORITY is an integer priority giving the order in which the probe point should be triggered relative to any other netfilter hook functions which trigger on the same packet. Hook functions execute on each packet in order from smallest priority number to largest priority number. [...]
ou também este blog sobre netfilter: Como filtrar pacotes de rede usando Netfilter - Parte 1 Ganchos do Netfilter .
Tudo isso junto diz que vários módulos / funcionalidades podem se registrar em cada um dos cinco ganchos possíveis (para o caso IPv4), e em cada gancho eles serão chamados por ordem da prioridade registrada para este gancho.
Esses ganchos não são apenas para iptables ou nftables. Existem vários outros usuários, como o systemtap acima, ou até mesmo os submodules do netfilter. Por exemplo, com o IPv4 ao usar NAT com iptables ou nftables, nf_conntrack_ipv4
será registre-se em quatro ganchos em várias prioridades por um total de 6 vezes . Este módulo, por sua vez, puxará nf_defrag_ipv4
, que registra em NF_INET_PRE_ROUTING/NF_IP_PRI_CONNTRACK_DEFRAG
e NF_INET_LOCAL_OUT/NF_IP_PRI_CONNTRACK_DEFRAG
.
Então, sim, a prioridade é relevante apenas dentro do mesmo gancho. Mas nesse mesmo gancho há vários usuários, e eles já têm sua prioridade predefinida (com muitas vezes, mas nem sempre, o mesmo valor reutilizado em diferentes ganchos), então para interagir corretamente em torno deles, uma prioridade compatível deve ser usada. >
Por exemplo, se as regras tiverem que ser feitas cedo em pacotes não desfragmentados, mais tarde (como de costume) com pacotes desfragmentados, apenas registre duas cadeias nftables no reencaminhamento, uma < = -401
(por exemplo, -450
) , o outro entre -399
e -201
(por exemplo, -300
). O melhor iptables poderia fazer até recentemente foi -300
, ou seja, ele não podia ver pacotes fragmentados sempre conntrack, assim desfragmentação antecipada estava em uso (desde o kernel 4.15 com opção raw_before_defrag
ele irá registrar em -450
em vez disso, mas pode ' t fazer as duas coisas.
Então, agora, sobre as interações entre nftables e iptables: ambos podem ser usados juntos (com exceção do NAT, onde ambos competem pelo conteúdo nat do netfilter: apenas um deve se registrar). Os exemplos de configurações nftables são enviados com as mesmas prioridades do iptables com pequenas diferenças.
Se iptables e nftables forem usados juntos e um deve ser usado antes do outro, porque há interações e ordem de efeito necessárias, diminua ligeiramente ou aumente a prioridade dos nftables, pois iptables 'não podem ser alterados.
Por exemplo, em uma configuração principalmente iptables, usando nftables com um recurso de correspondência específico não disponível no iptables para marcar um pacote e, em seguida, manipular essa marca no iptables, porque ele tem suporte para um destino específico (por exemplo, a fantasia alvo de LED do iptables para piscar um led) não disponível em nftables. Basta registrar um valor de prioridade inferior para o gancho nftables para ter certeza de que foi feito antes. Para uma regra de filtro de entrada usual, seria por exemplo -5
em vez de 0
. Então, novamente, este valor não deve ser menor que -149
ou será executado antes da cadeia de entrada INPUT do iptables, o que talvez não seja o que é pretendido. Esse é o único outro valor baixo que importaria no caso de entrada. Por exemplo, não há NF_IP_PRI_CONNTRACK
a considerar, porque conntrack não registra algo com essa prioridade em NF_INET_LOCAL_IN
, o SELinux não registra algo neste gancho se algo relacionado a ele é importante, então -225
não tem significado especial aqui.