Evitar conflictos cuando los términos coinciden
Un filtro de actualización rápida puede contener varios términos, cada uno con una variedad de condiciones de coincidencia. Sin embargo, cuando configure varios términos en un filtro, debe asegurarse de que los términos no se superpongan ni entren en conflicto entre sí. Se considera que dos términos se superponen cuando es posible que un paquete coincida con todas las condiciones de ambos términos. Dado que cada término especifica una acción diferente para las coincidencias, el enrutador no puede determinar qué acción realizar. Cuando los términos se superponen, se produce un error de conflicto y se produce un error en la sesión cuando el perfil dinámico intenta aplicar el filtro. El registro de errores indica los términos superpuestos.
Cómo evalúa el enrutador los términos de un filtro
El enrutador crea una tabla de condiciones de coincidencia al examinar los términos. La tabla, que es similar a una tabla de enrutamiento, se basa en las condiciones incluidas en la match-order instrucción. Cuando el enrutador recibe un paquete, el enrutador examina el contenido del paquete en la secuencia especificada en la match-order instrucción.
Por ejemplo, utilizando la configuración de ejemplo del siguiente ejemplo de orden de coincidencia, el enrutador examina primero el , del paquete source-address, luego el destination-address, y finalmente el destination-port. Como se muestra en la tabla siguiente, los dos términos del filtro no se superponen porque cada término tiene una especificación diferente destination-port . A continuación, el enrutador realiza la acción de filtro adecuada para el término que coincide con el destination-port valor del paquete.
Plazo |
dirección de origen |
dirección de destino |
puerto de destino |
Acción |
|---|---|---|---|---|
T55 |
Dirección del suscriptor |
203.0.113.2/32 |
http |
contar t55_cntr Aceptar |
T999 |
Dirección del suscriptor |
203.0.113.2/32 |
https |
contar t999_cntr Aceptar |
Ejemplo de orden de coincidencia
firewall {
family inet {
fast-update-filter psf1 {
interface-specific;
match-order [ source-address destination-address destination-port ];
term t55 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port http;
}
then {
count t55_cntr;
accept;
}
}
term t999 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port https;
}
then {
count t999_cntr;
accept;
}
}
}
}
}
Uso de comodines implícitos
En esta sección, se muestra un ejemplo de cómo se puede usar una especificación de comodín implícita en la configuración de coincidencia. Una condición en la match-order instrucción es un carácter comodín implícito cuando esa condición no está configurada en la from especificación de un término en el filtro.
Cuando se usan rangos (por ejemplo, un rango de valores o un comodín) en términos, los rangos no deben superponerse, ya que los rangos superpuestos crean un error de conflicto. Sin embargo, puede configurar un rango en un término y una coincidencia exacta en otro término. Por ejemplo, en la siguiente tabla de filtros, el valor del puerto de destino comodín en term t3 no se superpone a las especificaciones del puerto de destino en términos t55 y t999 porque los http valores y https son coincidencias exactas.
En la configuración Ejemplo de comodín implícito, el enrutador ve la destination-port condición de la match-order instrucción como un comodín implícito para el término t3, ya que no hay ningún destination-port valor configurado en ese término. Como resultado, el comodín especifica que para el término t3 se acepta cualquier destination-port valor. La tabla de filtros aparece de la siguiente manera:
Plazo |
dirección de origen |
dirección de destino |
puerto de destino |
Acción |
|---|---|---|---|---|
T3 |
Dirección del suscriptor |
203.0.113.2/32 |
Cualquiera (comodín) |
cuenta t3_cntr Aceptar |
T55 |
Dirección del suscriptor |
203.0.113.2/32 |
http |
contar t55_cntr Aceptar |
T999 |
Dirección del suscriptor |
203.0.113.2/32 |
https |
contar t999_cntr Aceptar |
En la siguiente configuración de filtro, el tráfico con un término t55 de puerto de coincidencias de http destino y el tráfico con un término t999de puerto de coincidencias de https destino. Tráfico con un puerto de destino distinto del http término o https coincide con el término t3, que es el comodín implícito.
Ejemplo de comodín implícito
firewall {
family inet {
fast-update-filter psf1 {
interface-specific;
match-order [ source-address destination-address dscp protocol destination-port ];
term t3 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
}
then {
count t3_cntr;
accept;
}
}
term t55 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port http;
}
then {
count t55_cntr;
accept;
}
}
term t999 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port https;
}
then {
count t999_cntr;
accept;
}
}
}
}
}
Conflicto causado por rangos superpuestos
En esta sección se muestran dos ejemplos de rangos superpuestos en términos. Cuando se usan rangos (como un comodín o un rango de valores) en términos, los rangos no deben superponerse: los rangos superpuestos crean un error de conflicto y se produce un error en la sesión.
En la siguiente configuración de filtro, los destination-port rangos de los dos términos se superponen. Los puertos en el intervalo del 50 al 80 coinciden con términos src0 y términos src1, cada uno de los cuales especifica diferentes acciones a realizar.
Puede configurar un rango en un término y una coincidencia exacta en otro término. Vea la sección Uso de comodines implícitos para ver un ejemplo que usa un comodín para una condición de coincidencia en un término y una coincidencia exacta para la condición en un segundo término.
Plazo |
dirección de origen |
dirección de destino |
puerto de destino |
Acción |
|---|---|---|---|---|
src0 |
Dirección del suscriptor |
203.0.113.2/32 |
0–80 |
Cuente c1_cntr Aceptar |
src1 |
Dirección del suscriptor |
203.0.113.2/32 |
50–100 |
contar c2_cntr Aceptar |
Ejemplo 1 de rangos superpuestos
firewall {
family inet {
fast-update-filter fuf–src {
interface-specific;
match-order [ source-address destination-address destination-port ];
term src0 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port 0–80;
}
then {
count c1_cntr;
accept;
}
}
term src1 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port 50–100;
}
then {
count c2_cntr;
accept;
}
}
}
En esta configuración de filtro, la protocol especificación en términos src21 y src22 el uso del comodín implícito, el cual configura un rango para cada término. Dado que no se permiten rangos superpuestos, se produce un error de conflicto.
Plazo |
dirección de origen |
dirección de destino |
protocolo |
puerto de destino |
Acción |
|---|---|---|---|---|---|
SRC20 |
Dirección del suscriptor |
203.0.113.2/32 |
UDP |
Cualquiera (comodín) |
contar c20_cntr Aceptar |
SRC21 |
Dirección del suscriptor |
203.0.113.2/32 |
Cualquiera (comodín) |
http |
contar c21_cntr Aceptar |
SRC21 |
Dirección del suscriptor |
203.0.113.2/32 |
Cualquiera (comodín) |
https |
contar c22_cntr Aceptar |
Ejemplo 2 de rangos superpuestos
firewall {
family inet {
fast-update-filter fuf–src2 {
interface-specific;
match-order [ source-address destination-address protocol destination-port ];
term src20 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
protocol udp;
}
then {
count c20_cntr;
accept;
}
}
term src21 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port http;
}
then {
count c21_cntr;
accept;
}
}
term src22 {
from {
source-address $junos-subscriber-ip-address;
destination-address 203.0.113.2/32;
destination-port https;
}
then {
count c22_cntr;
accept;
}
}
}