Condições de combinação flexíveis do filtro de firewall
As condições de combinação de filtro de firewall padrão variam de acordo com a família de protocolo do tráfego que está sendo correspondente. Por exemplo, os termos disponíveis para tráfego de protocolo de ponte são diferentes dos disponíveis para as famílias de protocolo inet ou inet6. Os campos disponíveis para correspondência em cada família de protocolos são, no entanto, fixos ou pré-definidos. Isso significa que os filtros podem combinar com padrões apenas nesses campos pré-definidos.
Usando condições de combinação flexíveis, filtros de firewall podem ser construídos para iniciar a combinação em locais de camada 2, camada 3, camada 4 ou payload. A partir disso, critérios de deslocamento adicionais podem ser especificados, permitindo que as partidas de padrão sejam feitas em locais personalizados e definidos pelo usuário dentro de um pacote.
Termos flexíveis de filtro de combinação são aplicados às interfaces MPC ou MIC, como filtros de entrada ou saída, como qualquer outro termos de filtro de firewall. Termos flexíveis de filtro de combinação também podem ser criados como modelos em [edit firewall]
nível de hierarquia. Esses modelos podem ser referenciados em um termo de combinação flexível.
Para roteadores da série MX, as condições de combinação flexíveis só são suportadas com MPCs ou MICs. Para ambientes nos quais FPCs, PICs e ou DPCs sejam instalados junto com MPCs ou MICs, certifique-se de aplicar apenas os critérios flexíveis de filtro de firewall de combinação às interfaces MPC ou MIC.
Para roteadores da Série MX com MPCs, você precisa inicializar o contador de filtros para filtros de combinação somente Trio no MIB, acionando o SNMP MIB. Por exemplo, para qualquer filtro configurado ou alterado com relação aos filtros somente Trio, é necessário executar um comando como o seguinte: show snmp mib walk (ascii | decimal) object-id
. Isso força o Junos a aprender os contadores de filtro e a garantir que as estatísticas do filtro sejam visualizadas (isso é porque a primeira pesquisa para filtrar estatísticas pode não mostrar todos os contadores). Filtros de combinação somente de trio são aqueles que incluem pelo menos uma condição ou ação de combinação que só é suportado pelo chipset Trio.
Essa orientação se aplica a todos os filtros enhanced-mode
de firewall. Ele também se aplica a termos de filtro de combinação flexível para deslocamento de intervalo ou máscara de deslocamento, e condições de combinação de filtro de firewall para As condições de combinação do filtro de firewall para o tráfego IPv4gre-key
tráfego IPv6 com qualquer uma das seguintes condições de combinação: payload-protocol
, extension headers
, is_fragment
. Ele também se aplica a filtros com qualquer um dos Ações de terminação do filtro de firewall seguintes: encapsulate
ou, decapsulate
ou um dos Ações não filtradas por filtro de firewall seguintes: policy-map
e. clear-policy-map
Hierarquia de declarações
Termos flexíveis de filtro de combinação estão disponíveis em três variações, como mostrado em Tabela 1 . A flexible-match
variação está configurada em nível de [edit firewall]
hierarquia. Ele é usado para definir modelos de combinação flexíveis. Os flexible-filter-match-mask
e flexible-match-range
estão configurados na [edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
hierarquia. Use o family ethernet-switching
filtro para EX9200 switches.
Tipos de combinação de filtro flexível
Tipo de combinação de filtro flexível |
Atributos disponíveis |
Descrição |
---|---|---|
|
|
Crie um modelo de combinação flexível chamado < nome >tributo. |
|
Comprimento dos dados a serem igualados em bits, não necessário para a entrada de string (0,32) Para QFX5120 e EX4650, 16 e 32 são os únicos comprimentos de bits válidos. |
|
|
Compensação de bits após o deslocamento (início da partida + byte) (0,7) |
|
|
Deslocamento de byte após o ponto de partida da partida |
|
|
Ponto de partida para combinar em pacote |
|
|
|
Comprimento dos dados a serem igualados em bits, não necessário para a entrada de string (0.128) |
|
Compensação de bits após o deslocamento (início da partida + byte) (0,7) |
|
|
Deslocamento de byte após o ponto de partida da partida |
|
|
Selecione uma combinação flexível do campo de modelos predefinido. Obrigatório, a menos |
|
|
Mascarar bits nos dados do pacote a serem matched. |
|
|
Ponto de partida para combinar em pacote. Obrigatório, a menos |
|
|
Dados/cadeia de valores a serem combinados. |
|
|
|
Comprimento dos dados a serem igualados em bits. (0.32) Obrigatório, a menos que |
|
Compensação de bits após o deslocamento (match-start + byte). (0..7) |
|
|
Deslocamento de byte após o ponto de partida da partida |
|
|
Selecione uma combinação flexível de um modelo predefinido. |
|
|
Ponto de partida para combinar em pacote. Obrigatório, a menos |
|
|
Uma variedade de valores a serem auados. |
|
|
Uma variedade de valores a não ser igualado. |
Locais de início de partida de filtro flexível
Termos flexíveis de filtro de combinação são construídos dando um local de início ou ponto de ancoragem dentro do pacote. Os locais de início podem ser: camada 2, camada 3, camada 4 ou carga, dependendo da família de protocolos em uso. Tabela 2 mostra os locais de início dos filtros flexíveis disponíveis por família de protocolo. Você usa esses locais de início disponíveis como os locais para os termos flexíveis do filtro match-start
de combinação.
A partir desses locais de início, deslocamentos de byte e bit específicos podem ser usados para permitir que o filtro se iguale a padrões em locais muito específicos do pacote.
Família de protocolo |
Locais de início disponíveis |
---|---|
|
Para QFX5120 e EX4650 switches, foi adicionado suporte a filtros de combinação flexíveis de camada 2 e camada 3 (somente) no Junos Release 20.1R1. |
|
Para QFX5120 e EX4650 switches, foi adicionado suporte a filtros de combinação flexíveis de camada 2 e camada 3 (somente) no Junos Release 20.1R1. |
|
|
|
|
|
|
|
|
|
(EX9200 switches) Para switches QFX5120 e EX4650, o suporte para filtros de combinação flexíveis de camada 2 e camada 3 (somente) foi adicionado no Junos Release 20.1R1. Um exemplo de como usar um deslocamento de pacote de camada 2 e o comprimento da combinação podem ser encontrados abaixo. |
Exemplos de combinação de filtro flexível
O exemplo a seguir ilustra o uso e o contexto para flexible-match-mask
.
from { flexible-match-mask { flexible-mask-name <mask-name>; mask-in-hex <mask>; prefix <pattern>; } }
O <mask> especifica o nome de máscara flexível que o modelo predefinido é usado para a condição de combinação flexível. Os modelos podem ser definidos para especificar em qual local (posição) no pacote a condição de combinação flexível deve ser executada.
A < de > para mask-in-hex está em formato hexadecimal. Por exemplo, uma máscara configurada especifica uma combinação para os quatro bits em primeiro byte (como indicado por 0xf0fc
<mask-name>)e para os primeiros seis bits no segundo byte. Se o pacote for pacote IPv4 e < nome de máscara>refere os dois primeiros bytes no header L3, a pesquisa será no campo da versão ip e no campo DSCP. Como outro exemplo, uma máscara configurada especifica uma pesquisa por um byte inteiro e dois bits a partir 0xffc0
do segundo byte. Se o nome <mask> for os dois primeiros bytes no header L3, e o pacote for pacote IPv6, isso especificará o campo da versão IP e o DSCP no campo Classe de tráfego.
A <patern> específica para prefixo é uma string ASCII. Se os dois primeiros caracteres 0x
são, a string é processada como um número hexadecimal codificando bits apropriados. Por exemplo, o prefixo configurado em combinação com a máscara e o nome de <mask>referindo os dois primeiros bytes no header L3 indica uma pesquisa nos primeiros quatro bits (o campo da versão é igual a 4) e no campo 0x40c0
0xf0fc
0100
1100 00
DSCP IPv4 (DSCP é igual a cs6). Ou, usando o prefixo configurado em combinação com máscara e nome de <mask>referindo os dois primeiros bytes no header L3, especifica uma pesquisa para os primeiros quatro bits (o campo da versão é igual a 6) e no campo 0x6c00
0xffc0
0110
1100 00
DSCP IPv6 (DSCP é igual a cs6).
O primeiro exemplo define um modelo de máscara que escolhe os dois primeiros bytes (16 bits) do cabeador L3 para combinar flexível:
firewall { flexible-match FM-FIRST-TWO-L3-BYTES { match-start layer-3; byte-offset 0; bit-offset 0; bit-length 16; } }
O próximo exemplo define um modelo de máscara que escolhe o terceiro a seis byte (32 bits) do payload de pacotes para combinação flexível:
firewall { flexible-match FM-FOUR-PAYLOAD-BYTES { match-start payload; byte-offset 2; bit-offset 0; bit-length 32; } }
Este exemplo mostra uma combinação de caracteres ASCII para o JNPR da string (caracteres ASCII: 0x4a
, ), do terceiro ao 0x4e
0x50
sexto 0x52
byte do payload de pacotes. O filtro usa o modelo FM-FOUR-PAYLOAD-BYTES
de máscara definido no exemplo 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; } } } }
Este exemplo mostra um filtro ccc da família procurando por DSCP igual a e DSCP, independentemente de os cs6
ef
pacotes encapsulados ser IPv4 ou IPv6. Ele usa o modelo FM-FIRST-TWO-L3-BYTES
de máscara definido no primeiro exemplo.
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; } } } }
Este exemplo mostra como usar um comprimento de combinação, a partir de um deslocamento de pacote de camada 2, em um filtro de firewall para um QFX5120-32C, QFX5120-48Y ou um dispositivo EX4650 executando o Junos Release 20.1R1. Aqui, usamos um comprimento de bit de 32 bits e a família ( e também temos suporte, assim como um deslocamento ethernet-switching
inet
de camada inet6
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; } }