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_tabela
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Criar a cadeia
tcp_packets
emexample_table
:nft add chain inet exemplo_tabela tcp_packets
# nft add chain inet exemplo_tabela tcp_packets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Adicione uma regra a
tcp_packets
que conta o tráfego nesta cadeia:nft add rule inet example_table tcp_packets counter
# nft add rule inet example_table tcp_packets counter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Crie a cadeia
udp_packets
emexample_table
nft add chain inet exemplo_tabela udp_packets
# nft add chain inet exemplo_tabela udp_packets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Adicione uma regra a
udp_packets
que conta o tráfego nesta cadeia:nft add rule inet example_table udp_packets counter
# nft add rule inet example_table udp_packets counter
Copy 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_traffic
emexample_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}; }
# 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_packets
eudp_packets
exibem tanto o número de pacotes recebidos quanto o número de bytes.