Condiciones de coincidencia flexibles del filtro de firewall
Las condiciones de coincidencia del filtro de firewall estándar varían según la familia de protocolos del tráfico que se coincide. Por ejemplo, los términos disponibles para el tráfico de protocolo de puente son diferentes de los disponibles para las familias de protocolos inet o inet6. Sin embargo, los campos disponibles para la coincidencia dentro de cada familia de protocolos son fijos o predefinidos. Esto significa que los filtros solo pueden coincidir en patrones dentro de esos campos predefinidos.
Mediante condiciones de coincidencia flexibles, se pueden construir filtros de firewall que inicien la coincidencia en ubicaciones de capa 2, capa 3, capa 4 o carga útil. A partir de ahí, se pueden especificar criterios de desplazamiento adicionales, lo que permite coincidencias de patrones en ubicaciones personalizadas definidas por el usuario dentro de un paquete.
Los términos de filtro de coincidencia flexible se aplican a las interfaces MPC o MIC como filtros de entrada o salida, al igual que cualquier otro término de filtro de firewall. Los términos de filtro de coincidencia flexibles también se pueden crear como plantillas en el nivel jerárquico [edit firewall]
. A continuación, se puede hacer referencia a estas plantillas dentro de un plazo de coincidencia flexible.
En el caso de los enrutadores de la serie MX, las condiciones de coincidencia flexible solo se admiten con MPC o MIC. En el caso de entornos en los que se instalan FPC, PIC o DPC junto con MPC o MIC, asegúrese de aplicar únicamente los criterios de filtro de firewall de coincidencia flexible a las interfaces MPC o MIC.
En el caso de los enrutadores de la serie MX con MPC, debe inicializar el contador de filtros para los filtros de coincidencia solo Trio en la MIB caminando por la MIB SNMP correspondiente. Por ejemplo, para cualquier filtro que esté configurado o cambiado con respecto a sus filtros de solo Trio, debe ejecutar un comando como el siguiente: show snmp mib walk (ascii | decimal) object-id
. Esto obliga a Junos a aprender los contadores de filtro y asegurarse de que se muestran las estadísticas de filtro (esto se debe a que es posible que el primer sondeo para filtrar estadísticas no muestre todos los contadores). Los filtros de coincidencia solo Trio son aquellos que incluyen al menos una condición o acción de coincidencia que solo es compatible con el chipset Trio.
Esta guía se aplica a todos los enhanced-mode
filtros de firewall. También se aplica a Condiciones de coincidencia del filtro de firewall para el tráfico IPv4 los términos flexibles del filtro de coincidencia para el rango de desplazamiento o la máscara de desplazamiento, gre-key
y las condiciones de coincidencia del filtro de firewall para el tráfico IPv6 con cualquiera de las siguientes condiciones de coincidencia: payload-protocol
, extension headers
, is_fragment
. También se aplica a los filtros con cualquiera de los siguientes Acciones de finalización del filtro de firewall: encapsulate
o decapsulate
, o cualquiera de las siguientes opciones Acciones de no terminación del filtro de firewall: policy-map
, y clear-policy-map
.
Jerarquía de instrucciones
Los términos flexibles del filtro de coincidencia están disponibles en tres variaciones, como se muestra en Tabla 1. La flexible-match
variación se configura en el nivel de [edit firewall]
jerarquía. Se utiliza para definir plantillas de coincidencia flexibles. Los flexible-filter-match-mask
y flexible-match-range
se configuran en la [edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
jerarquía. Utilice el family ethernet-switching
filtro para conmutadores EX9200.
Tipos flexibles de coincidencia de filtros
Tipo de coincidencia de filtro flexible |
Atributos disponibles |
Description |
---|---|---|
|
|
Cree una plantilla de coincidencia flexible denominada atributo <name> . |
|
Longitud de los datos que deben coincidir en bits, no necesaria para la entrada de cadena (0..32) Para los conmutadores QFX5120 y EX4650, 16 y 32 son las únicas longitudes de bits válidas. |
|
|
Desplazamiento de bits después del desplazamiento (match-start + byte) (0..7) |
|
|
Desplazamiento de bytes después del punto de inicio de la coincidencia |
|
|
Punto de inicio para que coincida en el paquete |
|
|
|
Longitud de los datos que deben coincidir en bits, no necesaria para la entrada de cadena (0..128) |
|
Desplazamiento de bits después del desplazamiento (match-start + byte) (0..7) |
|
|
Desplazamiento de bytes después del punto de inicio de la coincidencia |
|
|
Seleccione una coincidencia flexible en el campo de plantilla predefinido. Obligatorio a menos que |
|
|
Enmascare los bits en los datos del paquete para que coincidan. |
|
|
Punto de inicio para que coincida en paquete. Obligatorio a menos que |
|
|
Datos de valor/cadena que se van a coincidir. |
|
|
|
Longitud de los datos que se van a emparejar en bits. (0..32) Obligatorio a menos que |
|
Desplazamiento de bits después del desplazamiento (match-start + byte). (0..7) |
|
|
Desplazamiento de bytes después del punto de inicio de la coincidencia |
|
|
Seleccione una coincidencia flexible de la plantilla predefinida. |
|
|
Punto de inicio para que coincida en paquete. Obligatorio a menos que |
|
|
Rango de valores que deben coincidir. |
|
|
Rango de valores que no se van a coincidir. |
flexible-match-range
no es compatible con EX2300, EX3400, EX4100 y EX4400.
Ubicaciones de inicio de coincidencia de filtro flexible
Los términos flexibles del filtro de coincidencia se construyen proporcionando una ubicación de inicio o un punto de anclaje dentro del paquete. Las ubicaciones de inicio pueden ser cualquiera de: capa-2, capa-3, capa-4 o carga útil, dependiendo de la familia de protocolos en uso. Tabla 2 Muestra las ubicaciones de inicio de coincidencia de filtros flexibles disponibles por familia de protocolos. Utilice estas ubicaciones de inicio disponibles como match-start
ubicaciones para los términos del filtro de coincidencia flexible.
Desde estas ubicaciones de inicio, se pueden utilizar desplazamientos de bytes y bits específicos para permitir que el filtro coincida con patrones en ubicaciones muy específicas dentro del paquete.
Familia de protocolos |
Ubicaciones de inicio disponibles |
---|---|
|
Para los conmutadores QFX5120 y EX4650, en Junos versión 20.1R1 se agregó compatibilidad con filtros de coincidencia flexibles de capa 2 y capa 3 (únicamente). |
|
Para los conmutadores QFX5120 y EX4650, en Junos versión 20.1R1 se agregó compatibilidad con filtros de coincidencia flexibles de capa 2 y capa 3 (únicamente). |
|
|
|
|
|
|
|
|
|
(Conmutadores EX9200) Para los conmutadores QFX5120 y EX4650, en Junos versión 20.1R1 se agregó compatibilidad con filtros de coincidencia flexibles de capa 2 y capa 3 (únicamente). A continuación encontrará un ejemplo del uso de un desplazamiento de paquete de capa 2 y una longitud de coincidencia. |
Ejemplos de coincidencia de filtros flexibles
En el ejemplo siguiente se ilustra el uso y el contexto flexible-match-mask
de .
from { flexible-match-mask { flexible-mask-name <mask-name>; mask-in-hex <mask>; prefix <pattern>; } }
El <mask-name> especifica flexible-mask-name para qué plantilla predefinida se usa para la condición de coincidencia flexible. Se pueden definir plantillas para especificar en qué lugar (posición) del paquete se debe ejecutar la condición de coincidencia flexible.
El <mask> for mask-in-hex está en formato hexadecimal. Por ejemplo, una máscara configurada de 0xf0fc
especifica una coincidencia para los primeros cuatro bits del primer byte (como se refiere a <mask-name>), y para los primeros seis bits del segundo byte. Si el paquete es un paquete IPv4 y <mask-name> hace referencia a los dos primeros bytes del encabezado L3, la búsqueda se realiza para el campo de versión IP y el campo DSCP. Como otro ejemplo, una máscara 0xffc0
configurada especifica una búsqueda para todo el primer byte y para dos bits desde el segundo byte. Si el <mask-name> hace referencia a los dos primeros bytes del encabezado L3 y el paquete es un paquete IPv6, se especifica el campo Versión IP y DSCP en el campo Clase de tráfico.
El <pattern> especificado para prefix es una cadena ASCII. Si los dos primeros caracteres son 0x
, la cadena se procesa como un número hexadecimal que codifica los bits apropiados. Por ejemplo, el prefijo 0x40c0
configurado en combinación con 0xf0fc
mask y <mask-name> que hace referencia a los dos primeros bytes en el encabezado L3, indica una búsqueda 0100
en los primeros cuatro bits (el campo de versión es igual a 4) y 1100 00
en el campo DSCP IPv4 (DSCP es igual a cs6). O bien, utilizando el prefijo 0x6c00
configurado en combinación con la máscara 0xffc0
y <mask-name> haciendo referencia a los dos primeros bytes del encabezado L3, especifica una búsqueda en 0110
los primeros cuatro bits (el campo de versión es igual a 6) y 1100 00
en el campo DSCP IPv6 (DSCP es igual a cs6).
El primer ejemplo define una plantilla de máscara que selecciona los dos primeros bytes (16 bits) del encabezado L3 para una coincidencia flexible:
firewall { flexible-match FM-FIRST-TWO-L3-BYTES { match-start layer-3; byte-offset 0; bit-offset 0; bit-length 16; } }
En el siguiente ejemplo se define una plantilla de máscara que selecciona del tercer al sexto byte (32 bits) de la carga del paquete para una coincidencia flexible:
firewall { flexible-match FM-FOUR-PAYLOAD-BYTES { match-start payload; byte-offset 2; bit-offset 0; bit-length 32; } }
En este ejemplo se muestra una coincidencia de caracteres ASCII para la cadena JNPR (caracteres ASCII: 0x4a
, 0x4e
, 0x50
, 0x52
) en el tercer a sexto byte de la carga del paquete. El filtro utiliza la plantilla de FM-FOUR-PAYLOAD-BYTES
máscara definida en el ejemplo anterior.
firewall { family ccc filter FF-COUNT-JNPR-PACKETS { term JNPR-STRING { from { flexible-match-mask { mask-in-hex 0xffffffff; prefix JNPR; flexible-mask-name FM-FOUR-PAYLOAD-BYTES; } } then { count CNT-JNPR-YES accept; } } term DEAFULT { then { count CNT-JNPR-NO accept; } } } }
En este ejemplo se muestra un filtro ccc de familia que busca DSCP igual a cs6
y DSCP ef
, independientemente de si los paquetes encapsulados son IPv4 o IPv6. Utiliza la plantilla de FM-FIRST-TWO-L3-BYTES
máscara definida en el primer ejemplo.
firewall { family ccc filter FF-DSCP-CLASSIFY { term ROUTING-IPV4 { from { flexible-match-mask { mask-in-hex 0xf0fc; prefix 0x40c0; # DSCP=cs6 in IPv4 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count ROUTING-IPV4; accept; } } term ROUTING-IPV6 { from { flexible-match-mask { mask-in-hex 0xffc0; prefix 0x6c00; # DSCP=cs6 in IPv6 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count ROUTING-IPV6; accept; } } term VOICE-IPV4 { from { flexible-match-mask { mask-in-hex 0xf0fc; prefix 0x40b8; # DSCP=ef in IPv4 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count VOICE-IPV4; accept; } } term VOICE-IPV6 { from { flexible-match-mask { mask-in-hex 0xffc0; prefix 0x6b80; # DSCP=ef in IPv6 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count VOICE-IPV6; accept; } } term DEFAULT { then { accept; } } } }
En este ejemplo se muestra cómo usar una longitud de coincidencia, a partir de un desplazamiento de paquetes de capa 2, en un filtro de firewall para un dispositivo QFX5120-32C, QFX5120-48Y o EX4650 que ejecuta Junos versión 20.1R1. Aquí, usamos una longitud de bits de 32 bits y la ethernet-switching
familia (inet
y inet6
también son compatibles, al igual que usar un desplazamiento de capa 3).
user@device# show firewall family ethernet-switching filter udf_eth { term t1 { from { flexible-match-mask { match-start layer-2; byte-offset 8; bit-length 32; prefix 168430090; } } then count c1; } }
Tabla de historial de cambios
La compatibilidad de la función depende de la plataforma y la versión que utilice. Utilice Feature Explorer a fin de determinar si una función es compatible con la plataforma.