Condições flexíveis de correspondência do filtro de firewall
As condições padrão de correspondência do filtro de firewall variam com base na família de protocolo do tráfego que está sendo compatível. Por exemplo, os termos disponíveis para tráfego de protocolo de ponte são diferentes daqueles disponíveis para as famílias de protocolo inet ou inet6. Os campos disponíveis para correspondência em cada família de protocolo são, no entanto, fixos ou pré-definidos. Isso significa que os filtros podem combinar apenas com padrões dentro desses campos pré-definidos.
Usando condições flexíveis de correspondência, podem ser construídos filtros de firewall que iniciam a correspondência em locais de camada 2, camada 3, camada 4 ou carga. A partir daí, critérios de compensação adicionais podem ser especificados, permitindo assim correspondências de padrões em locais personalizados e definidos pelo usuário dentro de um pacote.
Os termos flexíveis do filtro de correspondência são aplicados às interfaces MPC ou MIC, como filtros de entrada ou saída, assim como qualquer outro termos de filtro de firewall. Termos flexíveis de filtro de correspondência também podem ser criados como modelos no nível de hierarquia.[edit firewall]
Esses modelos podem então ser referenciados em um termo de correspondência flexível.
Para os roteadores da série MX, as condições flexíveis de correspondência só são suportadas com MPCs ou MICs. Para ambientes em que FPCs, PICs e ou DPCs estejam instalados junto com MPCs ou MICs, não se esqueça de aplicar apenas os critérios flexíveis de filtro de firewall de correspondência nas interfaces MPC ou MIC.
Para roteadores da Série MX com MPCs, você precisa inicializar o contador de filtros para filtros de correspondência somente de Trio no MIB, andando pelo SNMP MIB correspondente. Por exemplo, para qualquer filtro que seja configurado ou alterado em relação aos seus filtros somente trio, você precisa 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 garantir que as estatísticas do filtro sejam exibidas (isso é porque a primeira pesquisa a filtrar estatísticas pode não mostrar todos os contadores). Os filtros de correspondência somente para trios são aqueles que incluem pelo menos uma condição ou ação de correspondência que só é suportada pelo chipset Trio.
Essa orientação se aplica a todos os filtros de firewall.enhanced-mode
Também se aplica a termos flexíveis de filtro de correspondência para offset-range ou offset-mask, e condições de correspondência do filtro de firewall para tráfego IPv6 com qualquer uma das seguintes condições de correspondência:Condições de correspondência do filtro de firewall para tráfego IPv4gre-key
Condições de correspondência do filtro de firewall para tráfego IPv6 , . .payload-protocol
extension headers
is_fragment
Também se aplica a filtros com qualquer um dos seguintes :Ações de terminação de filtros de firewall ou , ou qualquer um dos seguintes :encapsulate
decapsulate
Firewall filtra ações sem administração e ...policy-map
clear-policy-map
Hierarquia de declarações
Os termos flexíveis do filtro de correspondência estão disponíveis em três variações conforme mostrado em .Tabela 1 A variação está configurada no nível de hierarquia.flexible-match
[edit firewall]
Ele é usado para definir modelos de correspondência flexíveis. E estão configurados na hierarquia.flexible-filter-match-mask
flexible-match-range
[edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
Use o filtro para switches EX9200.family ethernet-switching
Tipos flexíveis de correspondência de filtro
Tipo de correspondência flexível de filtro |
Atributos disponíveis |
Descrição |
---|---|---|
|
|
Crie um modelo de correspondência flexível nomeado como atributo.<name> |
|
Comprimento dos dados a serem combinados em bits, não necessário para entrada de string (0,32) Para switches QFX5120 e EX4650, 16 e 32 são os únicos comprimentos de bit válidos. |
|
|
Compensação de bits após a compensação (match-start + byte) (0,7) |
|
|
Byte offset após o ponto de partida da partida |
|
|
Ponto de partida para combinar em pacote |
|
|
|
Comprimento dos dados a serem combinados em bits, não necessário para entrada de string (0.128) |
|
Compensação de bits após a compensação (match-start + byte) (0,7) |
|
|
Byte offset após o ponto de partida da partida |
|
|
Selecione uma combinação flexível no campo de modelo predefinido. Necessário, a menos que esteja configurado. |
|
|
Mascarar bits nos dados do pacote a serem combinados. |
|
|
Ponto de partida para combinar no pacote. Necessário, a menos que esteja configurado. |
|
|
Valorize dados/string a serem combinados. |
|
|
|
Comprimento dos dados a serem combinados em bits. (0.32) Necessário a menos que esteja configurado. |
|
Compensação de bits após a compensação (match-start + byte). (0..7) |
|
|
Byte offset após o ponto de partida da partida |
|
|
Selecione uma combinação flexível do modelo predefinido. |
|
|
Ponto de partida para combinar no pacote. Necessário, a menos que esteja configurado. |
|
|
Gama de valores a serem combinados. |
|
|
Gama de valores a não serem combinados. |
Locais de partida flexíveis de correspondência de filtros
Os termos flexíveis do filtro de correspondência são construídos dando um local de partida ou ponto âncora dentro do pacote. Os locais de início podem ser: camada 2, camada 3, camada 4 ou carga útil, dependendo da família de protocolo em uso. mostra locais de partida de correspondência de filtro flexíveis disponíveis por família de protocolo.Tabela 2 Você usa esses locais de início disponíveis como locais para os termos flexíveis do filtro de correspondência.match-start
A partir desses locais de início, compensações específicas de byte e bit podem ser usadas para permitir que o filtro combine padrões em locais muito específicos dentro do pacote.
Família de protocolos |
Locais de início disponíveis |
---|---|
|
Para switches QFX5120 e EX4650, o suporte para filtros de correspondência flexíveis de camada 2 e camada 3 (apenas) foi adicionado no Junos Release 20.1R1. |
|
Para switches QFX5120 e EX4650, o suporte para filtros de correspondência flexíveis de camada 2 e camada 3 (apenas) foi adicionado no Junos Release 20.1R1. |
|
|
|
|
|
|
|
|
|
(switches EX9200) Para, QFX5120 e switches EX4650, o suporte para filtros de correspondência flexíveis de camada 2 e camada 3 (apenas) foi adicionado no Junos Release 20.1R1. Um exemplo de uso de compensação de pacotes de camada 2 e comprimento de correspondência pode ser encontrado abaixo. |
Exemplos flexíveis de correspondência de filtros
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>; } }
Especifica para qual modelo predefinido é usado para a condição de correspondência flexível.<mask-name>flexible-mask-name Os modelos podem ser definidos para especificar em qual lugar (posição) no pacote a condição flexível de correspondência deve ser executada.
A importância está no formato hexadimamal.<mask>mask-in-hex Por exemplo, uma máscara configurada especifica uma combinação para o punho quatro bits no primeiro byte (como referido), e para os primeiros seis bits no segundo byte.0xf0fc
<mask-name> Se o pacote for pacote IPv4 e se refere aos dois primeiros bytes no cabeçalho L3, a busca é pelo campo de versão IP e campo DSCP.<mask-name> Como outro exemplo, uma máscara configurada especifica uma busca por um byte inteiro e por dois bits a partir do segundo byte.0xffc0
Se se refere aos dois primeiros bytes no cabeçalho L3, e o pacote for pacote IPv6, isso especifica o campo de versão IP e o DSCP no campo de Classe de tráfego.<mask-name>
A especificação é uma string ASCII.<pattern>prefix Se os dois primeiros caracteres forem , então a corda é processada como um número hexadecimal codificando bits apropriados.0x
Por exemplo, o prefixo configurado em combinação com a máscara e os dois primeiros bytes em cabeçalho L3 indicam uma busca nos quatro primeiros bits (o campo de versão é igual a 4) e no campo DSCP IPv4 (DSCP é igual a cs6).0x40c0
0xf0fc
<mask-name>0100
1100 00
Ou, usando o prefixo configurado em combinação com a máscara e os dois primeiros bytes em cabeçalho L3, especifica uma busca pelos primeiros quatro bits (o campo de versão é igual a 6) e no campo DSCP IPv6 (DSCP é igual a cs6).0x6c00
0xffc0
<mask-name>0110
1100 00
O primeiro exemplo define um modelo de máscara que seleciona os dois primeiros bytes (16 bits) do cabeçalho L3 para uma combinação flexível:
firewall { flexible-match FM-FIRST-TWO-L3-BYTES { match-start layer-3; byte-offset 0; bit-offset 0; bit-length 16; } }
O exemplo seguinte define um modelo de máscara que seleciona o byte de terceiro a sexto (32 bits) da carga do pacote para uma correspondência 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 correspondência de caracteres ASCII para o JNPR de cordas (caracteres ASCII: , , ) no terceiro a sexto byte da carga de pacotes.0x4a
0x4e
0x50
0x52
O filtro usa o modelo de máscara definido no exemplo 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; } } } }
Este exemplo mostra um filtro ccc familiar à procura de DSCP igual e DSCP , independentemente de os pacotes encapsulados serem IPv4 ou IPv6.cs6
ef
Ele usa o modelo de máscara definido no primeiro exemplo.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; } } } }
Este exemplo mostra como usar um comprimento de correspondência, a partir de uma compensação de pacotes de camada 2, em um filtro de firewall para um dispositivo QFX5120-32C, QFX5120-48Y ou EX4650 que executa o Junos Release 20.1R1. Aqui, usamos um pouco de comprimento de 32 bits e a família ( e também temos suporte, assim como usar uma compensação de camada 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; } }
Tabela de histórico de alterações
A compatibillidadde com o recurso dependerá da platadorma e versão utilizada. Use o Feature Explorer para saber se o recurso é compatível com sua plataforma.