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 Copiar o linkLink copiado para a área de transferência!
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
Crie o
example_table:nft adicionar tabela inet exemplo_tabela
# nft adicionar tabela inet exemplo_tabelaCopy to Clipboard Copied! Toggle word wrap Toggle overflow Criar a cadeia
tcp_packetsemexample_table:nft add chain inet exemplo_tabela tcp_packets
# nft add chain inet exemplo_tabela tcp_packetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Adicione uma regra a
tcp_packetsque conta o tráfego nesta cadeia:nft add rule inet example_table tcp_packets counter
# nft add rule inet example_table tcp_packets counterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Crie a cadeia
udp_packetsemexample_tablenft add chain inet exemplo_tabela udp_packets
# nft add chain inet exemplo_tabela udp_packetsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Adicione uma regra a
udp_packetsque conta o tráfego nesta cadeia:nft add rule inet example_table udp_packets counter
# nft add rule inet example_table udp_packets counterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Criar uma cadeia para o tráfego de entrada. Por exemplo, para criar uma cadeia chamada
incoming_trafficemexample_tableque 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}; }# nft add chain inet example_table incoming_traffic { type filter hook input priority 0 { type filter hook input priority 0}; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 }# nft add rule inet example_table incoming_traffic ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }Copy to Clipboard Copied! Toggle word wrap Toggle overflow O mapa literal distingue os pacotes e os envia para as diferentes cadeias de contadores com base em seu protocolo.
Para listar os balcões de trânsito, exibir
example_table:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Os balcões da cadeia
tcp_packetseudp_packetsexibem tanto o número de pacotes recebidos quanto o número de bytes.