6.6. Usando mapas de veredictos em comandos nftables


Os mapas verídicos, que também são conhecidos como dicionários, permitem que nft execute uma ação baseada em informações de pacotes, mapeando critérios de correspondência a uma ação.

6.6.1. Usando mapas literais em nftables

Um mapa literal é um { match_criteria : action } declaração de que você usa diretamente em uma regra. A declaração pode conter vários mapeamentos separados por vírgula.

A desvantagem de um mapa literal é que se você quiser mudar o mapa, você deve substituir a regra. Para uma solução dinâmica, use mapas de veredictos nomeados, como descrito em Seção 6.6.2, “Usando mapas de veredictos mutáveis em nftables”.

O exemplo descreve como usar um mapa literal para encaminhar tanto os pacotes TCP e UDP do protocolo IPv4 e IPv6 para diferentes cadeias a fim de contar separadamente os pacotes TCP e UDP que chegam.

Procedimento

  1. Crie o example_table:

    # nft adicionar tabela inet exemplo_tabela
  2. Criar a cadeia tcp_packets em example_table:

    # nft add chain inet exemplo_tabela tcp_packets
  3. Adicione uma regra a tcp_packets que conta o tráfego nesta cadeia:

    # nft add rule inet example_table tcp_packets counter
  4. Crie a cadeia udp_packets em example_table

    # nft add chain inet exemplo_tabela udp_packets
  5. Adicione uma regra a udp_packets que conta o tráfego nesta cadeia:

    # nft add rule inet example_table udp_packets counter
  6. Criar uma cadeia para o tráfego de entrada. Por exemplo, para criar uma cadeia chamada incoming_traffic em example_table que filtra o tráfego de entrada:

    # nft add chain inet example_table incoming_traffic { type filter hook input priority 0 { type filter hook input priority 0}; }
  7. Adicione uma regra com um mapa literal a incoming_traffic:

    # nft add rule inet example_table incoming_traffic ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }

    O mapa literal distingue os pacotes e os envia para as diferentes cadeias de contadores com base em seu protocolo.

  8. Para listar os balcões de trânsito, exibir example_table:

    # nft list table inet example_table
    table inet example_table {
      chain tcp_packets {
        counter packets 36379 bytes 2103816
      }
    
      chain udp_packets {
        counter packets 10 bytes 1559
      }
    
      chain incoming_traffic {
        type filter hook input priority filter; policy accept;
        ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }
      }
    }

    Os balcões da cadeia tcp_packets e udp_packets exibem tanto o número de pacotes recebidos quanto o número de bytes.

Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja oBlog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.