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 filtros de firewall.enhanced-mode
También se aplica a los términos flexibles del filtro de coincidencia para el rango de desplazamiento o la máscara de desplazamiento, y las condiciones de coincidencia del filtro de firewall para el tráfico IPv6 con cualquiera de las siguientes condiciones de coincidencia:Condiciones de coincidencia del filtro de firewall para el tráfico IPv4gre-key
Condiciones de coincidencia del filtro de firewall para el tráfico IPv6 , , .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 o , o cualquiera de las siguientes opciones :encapsulate
decapsulate
Acciones de no terminación del filtro de firewall , y .policy-map
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 variación se configura en el nivel de jerarquía.flexible-match
[edit firewall]
Se utiliza para definir plantillas de coincidencia flexibles. Los y se configuran en la jerarquía.flexible-filter-match-mask
flexible-match-range
[edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
Utilice el filtro para conmutadores EX9200.family ethernet-switching
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 esté configurado. |
|
|
Enmascare los bits en los datos del paquete para que coincidan. |
|
|
Punto de inicio para que coincida en paquete. Obligatorio a menos que esté configurado. |
|
|
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 esté configurado. |
|
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 esté configurado. |
|
|
Rango de valores que deben coincidir. |
|
|
Rango de valores que no se van a coincidir. |
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. Muestra las ubicaciones de inicio de coincidencia de filtros flexibles disponibles por familia de protocolos.Tabla 2 Utilice estas ubicaciones de inicio disponibles como ubicaciones para los términos del filtro de coincidencia flexible.match-start
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 de .flexible-match-mask
from { flexible-match-mask { flexible-mask-name <mask-name>; mask-in-hex <mask>; prefix <pattern>; } }
El especifica para qué plantilla predefinida se usa para la condición de coincidencia flexible.<mask-name>flexible-mask-name Se pueden definir plantillas para especificar en qué lugar (posición) del paquete se debe ejecutar la condición de coincidencia flexible.
El for está en formato hexadecimal.<mask>mask-in-hex Por ejemplo, una máscara configurada de especifica una coincidencia para los primeros cuatro bits del primer byte (como se refiere a ), y para los primeros seis bits del segundo byte.0xf0fc
<mask-name> Si el paquete es un paquete IPv4 y 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.<mask-name> Como otro ejemplo, una máscara configurada especifica una búsqueda para todo el primer byte y para dos bits desde el segundo byte.0xffc0
Si el 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.<mask-name>
El especificado para es una cadena ASCII.<pattern>prefix Si los dos primeros caracteres son , la cadena se procesa como un número hexadecimal que codifica los bits apropiados.0x
Por ejemplo, el prefijo configurado en combinación con mask y que hace referencia a los dos primeros bytes en el encabezado L3, indica una búsqueda en los primeros cuatro bits (el campo de versión es igual a 4) y en el campo DSCP IPv4 (DSCP es igual a cs6).0x40c0
0xf0fc
<mask-name>0100
1100 00
O bien, utilizando el prefijo configurado en combinación con la máscara y haciendo referencia a los dos primeros bytes del encabezado L3, especifica una búsqueda en los primeros cuatro bits (el campo de versión es igual a 6) y en el campo DSCP IPv6 (DSCP es igual a cs6).0x6c00
0xffc0
<mask-name>0110
1100 00
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: , , , ) en el tercer a sexto byte de la carga del paquete.0x4a
0x4e
0x50
0x52
El filtro utiliza la plantilla de máscara definida en el ejemplo anterior.FM-FOUR-PAYLOAD-BYTES
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 y DSCP , independientemente de si los paquetes encapsulados son IPv4 o IPv6.cs6
ef
Utiliza la plantilla de máscara definida en el primer ejemplo.FM-FIRST-TWO-L3-BYTES
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 familia ( y también son compatibles, al igual que usar un desplazamiento de capa 3).ethernet-switching
inet
inet6
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.