AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 419851
Accepted
F30
F30
Asked: 2018-01-27 06:30:59 +0800 CST2018-01-27 06:30:59 +0800 CST 2018-01-27 06:30:59 +0800 CST

Quando e como usar as prioridades da cadeia no nftables

  • 772

Ao configurar uma cadeia no nftables, é necessário fornecer um priorityvalor. Quase todos os exemplos online definem um piorityde 0; às vezes, um valor de 100 é usado com certos hooks ( output, postrouting).

O wiki nftables tem a dizer :

A prioridade pode ser usada para ordenar as cadeias ou colocá-las antes ou depois de algumas operações internas do Netfilter. Por exemplo, uma cadeia no gancho de pré-roteamento com prioridade -300 será colocada antes das operações de rastreamento de conexão.

Para referência, aqui está a lista de diferentes prioridades usadas no iptables:

  • NF_IP_PRI_CONNTRACK_DEFRAG (-400): prioridade de desfragmentação
  • NF_IP_PRI_RAW (-300): prioridade tradicional da tabela bruta colocada antes da operação de rastreamento de conexão
  • NF_IP_PRI_SELINUX_FIRST (-225): operações SELinux
  • NF_IP_PRI_CONNTRACK (-200): operações de rastreamento de conexão
  • NF_IP_PRI_MANGLE (-150): operação mangle
  • NF_IP_PRI_NAT_DST (-100): destino NAT
  • NF_IP_PRI_FILTER (0): operação de filtragem, tabela de filtros
  • NF_IP_PRI_SECURITY (50): Local da tabela de segurança onde secmark pode ser definido por exemplo
  • NF_IP_PRI_NAT_SRC (100): fonte NAT
  • NF_IP_PRI_SELINUX_LAST (225): SELinux na saída do pacote
  • NF_IP_PRI_CONNTRACK_HELPER (300): rastreamento de conexão na saída

Isso afirma que a priorityinteração dos controles com as operações internas do Netfilter, mas apenas menciona os valores usados ​​pelo iptables como exemplos.

Em que casos é priorityrelevante (ou seja, tem de ser definido para um valor ≠ 0)? Apenas para várias correntes com o mesmo gancho? Que tal combinar nftables e iptables? Quais operações internas do Netfilter são relevantes para determinar o priorityvalor correto?

linux firewall
  • 1 1 respostas
  • 6856 Views

1 respostas

  • Voted
  1. Best Answer
    A.B
    2018-05-09T16:15:29+08:002018-05-09T16:15:29+08:00

    ATUALIZAÇÃO: iptables-nft(em vez de iptables-legacy) está usando a API do kernel nftables e, além disso, uma camada de compatibilidade para reutilizar os módulos do kernel xtables (aqueles descritos em iptables-extensions) quando não há tradução nativa do nftables disponível. Deve ser tratado como nftables na maioria dos aspectos, exceto por esta questão que fixou prioridades como a versão legada, então as prioridades do nftables ainda importam aqui.


    iptables (legado) e nftables dependem da mesma infraestrutura netfilter e usam ganchos em vários lugares. está explicado lá: Ganchos do Netfilter , ou há esta página de manual do systemtap , que documenta um pouco do manuseio do gancho:

    PRIORITY é uma prioridade inteira que fornece a ordem na qual o ponto de teste deve ser acionado em relação a qualquer outra função netfilter hook que acione no mesmo pacote. As funções de gancho são executadas em cada pacote na ordem do menor número de prioridade para o maior número de prioridade. [...]

    ou também este blog sobre netfilter: How to Filter Network Packets using Netfilter–Part 1 Netfilter Hooks (blog desapareceu, usando um link Wayback Machine em seu lugar).

    Tudo isso junto informa que vários módulos/funcionalidades podem se cadastrar em cada um dos cinco hooks possíveis (para o caso do IPv4), e em cada hook eles serão chamados por ordem de prioridade registrada para este hook.

    Esses ganchos não são apenas para iptables ou nftables . Existem vários outros usuários, como o systemtap acima, ou mesmo os próprios submódulos do netfilter. Por exemplo, com IPv4 ao usar NAT com iptables ou nftables, nf_conntrack_ipv4registrará em 4 ganchos em várias prioridades para um total de 6 vezes . Este módulo, por sua vez, puxará nf_defrag_ipv4os registros 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 neste mesmo gancho existem vários usuários, e eles já têm sua prioridade pré-definida (com muitas vezes, mas nem sempre, o mesmo valor reutilizado em diferentes ganchos), portanto, para interagir corretamente em torno deles, uma prioridade compatível deve ser usada.

    Por exemplo, se as regras tiverem que ser feitas antecipadamente em pacotes não desfragmentados, depois (como de costume) com pacotes desfragmentados, apenas registre duas cadeias nftables no pré-roteamento, uma <= -401(por exemplo -450), a outra entre -399e -201(por exemplo -300). O melhor que o iptables podia fazer até recentemente era -300, ou seja, não conseguia ver pacotes fragmentados sempre que conntrack, portanto, a desfragmentação inicial estava em uso (desde o kernel 4.15 com a opção raw_before_defrag, ele se registrará em -450vez disso, mas não pode fazer os dois, mas iptables-nftnão aparece para oferecer tal escolha).


    Agora, sobre as interações entre nftables e iptables : ambos podem ser usados ​​juntos, com exceção do NAT em kernels mais antigos, onde ambos competem pelo recurso nat do netfilter: apenas um deve registrar nat, a menos que esteja usando um kernel >= 4.18 conforme explicado no . _ Os exemplos de configurações do nftables são fornecidos com as mesmas prioridades do iptables com pequenas diferenças.

    Se o iptables e o nftables forem usados ​​juntos e um deve ser usado antes do outro porque há interações e ordem de efeito necessárias, apenas reduza ou aumente ligeiramente a prioridade do nftables de acordo, já que o iptables não pode ser alterado.

    Por exemplo, em uma configuração principalmente de iptables , pode-se usar nftables com um recurso de correspondência específico não disponível em iptables para marcar um pacote e, em seguida, manipular essa marca em iptables , porque ele tem suporte para um alvo específico (por exemplo, o sofisticado alvo de LED do iptables para piscar um led) não disponível em nftables . Apenas registre um valor de prioridade ligeiramente mais baixo para o gancho nftables para ter certeza de que foi feito antes. Para uma regra de filtro de entrada usual, isso seria, por exemplo, -5em vez de 0. Então, novamente, esse valor não deve ser menor -149ou será executado antes do iptables' INPUT cadeia mangle que talvez não seja o que se pretende. Esse é o único outro valor baixo que importaria no caso de entrada. Por exemplo, não há NF_IP_PRI_CONNTRACKlimite a ser considerado, porque o conntrack não registra algo com esta prioridade em NF_INET_LOCAL_IN, nem o SELinux registra algo neste hook se algo relacionado a ele importa, então -225não tem nenhum significado especial aqui.

    • 14

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve