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 [edit firewall]
hierarquia. 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 enhanced-mode
filtros de firewall. Também se aplica a Condições de correspondência do filtro de firewall para tráfego IPv4 termos flexíveis de filtro de correspondência para offset-range ou offset-mask, gre-key
e condições de correspondência do filtro de firewall para tráfego IPv6 com qualquer uma das seguintes condições de correspondência: 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: encapsulate
ou decapsulate
, ou qualquer um dos seguintes Firewall filtra ações sem administração: policy-map
e 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 flexible-match
variação está configurada no nível de [edit firewall]
hierarquia. Ele é usado para definir modelos de correspondência flexíveis. flexible-match-range
E flexible-filter-match-mask
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 switches EX9200.
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 <name> atributo. |
|
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 |
|
|
Mascarar bits nos dados do pacote a serem combinados. |
|
|
Ponto de partida para combinar no pacote. Necessário, a menos que |
|
|
Valorize dados/string a serem combinados. |
|
|
|
Comprimento dos dados a serem combinados em bits. (0.32) Necessário a menos que |
|
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 |
|
|
Gama de valores a serem combinados. |
|
|
Gama de valores a não serem combinados. |
flexible-match-range
não é compatível com EX2300, EX3400, EX4100 e EX4400.
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. Tabela 2 mostra locais de partida de correspondência de filtro flexíveis disponíveis por família de protocolo. Você usa esses locais de início disponíveis como match-start
locais para os termos flexíveis do filtro de correspondência.
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 <mask-name> para flexible-mask-name qual modelo predefinido é usado para a condição de correspondência flexível. 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 <mask> importância mask-in-hex está no formato hexadimamal. Por exemplo, uma máscara 0xf0fc
configurada especifica uma combinação para o punho quatro bits no primeiro byte (como referido), <mask-name>e para os primeiros seis bits no segundo byte. Se o pacote for pacote IPv4 e <mask-name> se refere aos dois primeiros bytes no cabeçalho L3, a busca é pelo campo de versão IP e campo DSCP. Como outro exemplo, uma máscara 0xffc0
configurada especifica uma busca por um byte inteiro e por dois bits a partir do segundo byte. Se se <mask-name> 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.
A <pattern> especificação é prefix uma string ASCII. Se os dois primeiros caracteres forem 0x
, então a corda é processada como um número hexadecimal codificando bits apropriados. Por exemplo, o prefixo 0x40c0
configurado em combinação com a máscara 0xf0fc
e <mask-name> os dois primeiros bytes em cabeçalho L3 indicam uma busca nos 0100
quatro primeiros bits (o campo de versão é igual a 4) e 1100 00
no campo DSCP IPv4 (DSCP é igual a cs6). Ou, usando o prefixo 0x6c00
configurado em combinação com a máscara 0xffc0
e <mask-name> os dois primeiros bytes em cabeçalho L3, especifica uma busca pelos 0110
primeiros quatro bits (o campo de versão é igual a 6) e 1100 00
no campo DSCP IPv6 (DSCP é igual a cs6).
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: 0x4a
, 0x4e
, 0x50
) 0x52
no terceiro a sexto byte da carga de pacotes. O filtro usa o FM-FOUR-PAYLOAD-BYTES
modelo 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 familiar à procura de DSCP igual e cs6
DSCP ef
, independentemente de os pacotes encapsulados serem IPv4 ou IPv6. Ele usa o FM-FIRST-TWO-L3-BYTES
modelo 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 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 ethernet-switching
família (inet
e inet6
também temos suporte, assim como usar uma compensação de camada 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; } }
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.