6.6. Uso de mapas de veredicto en los comandos de nftables
Los mapas de veredicto, también conocidos como diccionarios, permiten a nft
realizar una acción basada en la información del paquete mediante la asignación de criterios de coincidencia a una acción.
6.6.1. Uso de mapas literales en nftables Copiar enlaceEnlace copiado en el portapapeles!
Un mapa literal es una { match_criteria : action }
que se utiliza directamente en una regla. La sentencia puede contener múltiples mapeos separados por comas.
El inconveniente de un mapa literal es que si se quiere cambiar el mapa, hay que sustituir la regla. Para una solución dinámica, utilice mapas de veredicto con nombre como se describe en Sección 6.6.2, “Uso de mapas de veredicto mutables en nftables”.
El ejemplo describe cómo utilizar un mapa literal para enrutar paquetes TCP y UDP del protocolo IPv4 e IPv6 a diferentes cadenas para contar los paquetes TCP y UDP entrantes por separado.
Procedimiento
Cree la página web
example_table
:nft add table inet example_table
# nft add table inet example_table
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cree la cadena
tcp_packets
enexample_table
:nft add chain inet example_table tcp_packets
# nft add chain inet example_table tcp_packets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Agregue una regla a
tcp_packets
que cuente el tráfico en esta cadena: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 Cree la cadena
udp_packets
enexample_table
nft add chain inet example_table udp_packets
# nft add chain inet example_table udp_packets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Agregue una regla a
udp_packets
que cuente el tráfico en esta cadena: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 Cree una cadena para el tráfico entrante. Por ejemplo, para crear una cadena llamada
incoming_traffic
enexample_table
que filtre el tráfico entrante:nft add chain inet example_table incoming_traffic { type filter hook input priority 0 \; }
# nft add chain inet example_table incoming_traffic { type filter hook input priority 0 \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Añade una regla con un 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 El mapa literal distingue los paquetes y los envía a las diferentes cadenas de contadores en función de su protocolo.
Para listar los contadores de tráfico, visualice
example_table
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Los contadores de la cadena
tcp_packets
yudp_packets
muestran tanto el número de paquetes como de bytes recibidos.