방화벽 필터 FMC(Flexible Match Condition)
표준 방화벽 필터 일치 조건은 일치하는 트래픽의 프로토콜 제품군에 따라 다릅니다. 예를 들어, 브리지 프로토콜 트래픽에 사용할 수 있는 용어는 inet 또는 inet6 프로토콜 제품군에 사용할 수 있는 조건과 다릅니다. 그러나 각 프로토콜 제품군 내에서 매칭에 사용할 수 있는 필드는 고정되어 있거나 사전 정의되어 있습니다. 즉, 필터는 미리 정의된 필드 내의 패턴에 대해서만 일치시킬 수 있습니다.
유연한 일치 조건을 사용하여 레이어 2, 레이어 3, 레이어 4 또는 페이로드 위치에서 일치를 시작하는 방화벽 필터를 구성할 수 있습니다. 여기에서 추가 오프셋 기준을 지정하여 패킷 내의 사용자 정의 사용자 지정 위치에서 패턴 일치를 구현할 수 있습니다.
유연한 일치 필터 용어는 다른 방화벽 필터 용어와 마찬가지로 입력 또는 출력 필터로 MPC 또는 MIC 인터페이스에 적용됩니다. 유연한 일치 필터 용어를 계층 수준에서 템플릿으로 [edit firewall]
생성할 수도 있습니다. 그런 다음 유연한 일치 용어 내에서 이러한 템플릿을 참조할 수 있습니다.
MX 시리즈 라우터의 경우, 유연한 일치 조건은 MPC 또는 MIC에서만 지원됩니다. FPC, PIC 및/또는 DPC가 MPC 또는 MIC와 함께 설치된 환경에서는 유연한 일치 방화벽 필터 기준만 MPC 또는 MIC 인터페이스에 적용해야 합니다.
MPC가 있는 MX 시리즈 라우터의 경우, 해당 SNMP 관리 정보 베이스(MIB)를 걸어 관리 정보 베이스(MIB)에서 Trio 전용 일치 필터에 대한 필터 카운터를 초기화해야 합니다. 예를 들어 Trio 전용 필터와 관련하여 구성되거나 변경된 필터의 경우 다음과 같은 명령을 실행해야 합니다. show snmp mib walk (ascii | decimal) object-id
. 이는 Junos가 필터 카운터를 학습하고 필터 통계가 표시되도록 합니다(이는 통계를 필터링하기 위한 첫 번째 폴링이 모든 카운터를 표시하지 않을 수 있기 때문입니다). Trio 전용 일치 필터는 Trio 칩셋에서만 지원되는 하나 이상의 일치 조건 또는 작업을 포함하는 필터입니다.
이 지침은 모든 enhanced-mode
방화벽 필터에 적용됩니다. 또한 offset-range 또는 offset-maskgre-key
에 대한 유연한 일치 필터 용어 및 IPv6 트래픽에 대한 방화벽 필터 일치 조건과 다음 일치 조건 중 하나에 적용됩니다IPv4 트래픽 방화벽 일치 조건. payload-protocol
, extension headers
, is_fragment
. 다음 방화벽 필터 종료 동작중 하나가 있는 필터에도 적용됩니다. encapsulate
또는 decapsulate
, 또는 다음 방화벽 필터 비 종료 동작중 하나를 선택합니다. policy-map
, 및 clear-policy-map
.
명령문 계층
플렉서블 매치 필터 용어는 에 표 1표시된 대로 세 가지 변형으로 제공됩니다. flexible-match
변형은 계층 수준에서 구성됩니다[edit firewall]
. 유연한 일치 템플릿을 정의하는 데 사용됩니다. 및 flexible-match-range
은(는flexible-filter-match-mask
) 계층에서 [edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
구성됩니다. family ethernet-switching
EX9200 스위치용 필터를 사용합니다.
유연한 필터 일치 유형
유연한 필터 일치 유형 |
사용 가능한 속성 |
설명 |
---|---|---|
|
|
속성으로 <name> 명명된 유연한 일치 템플릿을 만듭니다. |
|
비트 단위로 일치할 데이터의 길이, 문자열 입력에 필요하지 않음(0..32) QFX5120 및 EX4650 스위치의 경우 16과 32가 유일하게 유효한 비트 길이입니다. |
|
|
(일치 시작 + 바이트) 오프셋(0..7) 이후의 비트 오프셋 |
|
|
일치 시작점 이후의 바이트 오프셋 |
|
|
패킷 일치 시작점 |
|
|
|
비트 단위로 일치할 데이터의 길이, 문자열 입력에 필요하지 않음(0..128) |
|
(일치 시작 + 바이트) 오프셋(0..7) 이후의 비트 오프셋 |
|
|
일치 시작점 이후의 바이트 오프셋 |
|
|
사전 정의된 템플릿 필드에서 유연한 일치를 선택합니다. 이(가) 구성되지 않는 한 |
|
|
매칭할 패킷 데이터의 비트를 마스킹합니다. |
|
|
패킷 일치 시작점. 이(가) 구성되지 않는 한 |
|
|
일치시킬 값 데이터/문자열입니다. |
|
|
|
일치시킬 데이터의 길이(비트)입니다. (0..32) 이(가) 구성되지 않는 한 |
|
(일치 시작 + 바이트) 오프셋 이후의 비트 오프셋입니다. (0..7) |
|
|
일치 시작점 이후의 바이트 오프셋 |
|
|
사전 정의된 템플릿에서 유연한 일치를 선택합니다. |
|
|
패킷 일치 시작점. 이(가) 구성되지 않는 한 |
|
|
일치시킬 값의 범위입니다. |
|
|
일치하지 않는 값의 범위입니다. |
flexible-match-range
EX2300, EX3400, EX4100 및 EX4400에서는 지원되지 않습니다.
유연한 필터 매치 시작 위치
유연한 일치 필터 용어는 패킷 내에 시작 위치 또는 앵커 포인트를 제공하여 구성됩니다. 시작 위치는 다음 중 하나일 수 있습니다. Layer-2, Layer-3, Layer-4 또는 Payload, 사용 중인 프로토콜 제품군에 따라 다름. 표 2 프로토콜 제품군별로 사용 가능한 유연한 필터 일치 시작 위치를 보여줍니다. 이러한 사용 가능한 시작 위치를 match-start
유연한 일치 필터 용어의 위치로 사용합니다.
이러한 시작 위치에서 특정 바이트 및 비트 오프셋을 활용하여 필터가 패킷 내의 매우 특정한 위치에서 패턴을 일치시킬 수 있습니다.
프로토콜 제품군 |
사용 가능한 시작 위치 |
---|---|
|
QFX5120 및 EX4650 스위치의 경우, 레이어 2 및 레이어 3(전용) 플렉서블 매치 필터에 대한 지원이 Junos 릴리스 20.1R1에 추가되었습니다. |
|
QFX5120 및 EX4650 스위치의 경우, 레이어 2 및 레이어 3(전용) 플렉서블 매치 필터에 대한 지원이 Junos 릴리스 20.1R1에 추가되었습니다. |
|
|
|
|
|
|
|
|
|
(EX9200 스위치) QFX5120 및 EX4650 스위치의 경우, 레이어 2 및 레이어 3(전용) 플렉서블 매치 필터에 대한 지원이 Junos 릴리스 20.1R1에 추가되었습니다. 레이어 2 패킷 오프셋 및 일치 길이를 사용하는 예는 아래에서 확인할 수 있습니다. |
유연한 필터 일치 예제
다음 예제에서는 의 사용 및 컨텍스트를 flexible-match-mask
보여 줍니다.
from { flexible-match-mask { flexible-mask-name <mask-name>; mask-in-hex <mask>; prefix <pattern>; } }
은(는 <mask-name> ) 유연한 일치 조건에 사용되는 사전 정의된 템플릿을 지정합니다 flexible-mask-name . 템플릿은 패킷에서 유연한 일치 조건이 실행되어야 하는 위치(위치)를 지정하도록 정의할 수 있습니다.
의 경우 <mask>mask-in-hex 16진수 형식입니다. 예를 들어, 의 구성된 마스크 0xf0fc
는 첫 번째 바이트의 첫 번째 4비트(에서 <mask-name>참조)와 두 번째 바이트의 처음 6비트에 대한 일치를 지정합니다. 패킷이 IPv4 패킷이고 <mask-name> L3 헤더의 처음 두 바이트를 참조하는 경우 IP 버전 필드 및 DSCP 필드가 검색됩니다. 또 다른 예로, 구성된 마스크 0xffc0
는 전체 첫 번째 바이트와 두 번째 바이트에서 두 비트에 대한 검색을 지정합니다. 이(가 <mask-name> ) L3 헤더의 처음 두 바이트를 참조하고 패킷이 IPv6 패킷인 경우, 트래픽 클래스 필드에 IP 버전 필드와 DSCP가 지정됩니다.
지정된 for prefix 는 <pattern> ASCII 문자열입니다. 처음 두 문자가 0x
인 경우 문자열은 적절한 비트를 인코딩하는 16진수로 처리됩니다. 예를 들어, 마스크 0xf0fc
와 조합되고 <mask-name> L3 헤더의 처음 2바이트를 참조하는 구성된 접두사 0x40c0
는 처음 4비트(버전 필드는 4와 같음) 및 1100 00
IPv4 DSCP 필드(DSCP는 cs6와 같음)에서 에 대한 0100
검색을 나타냅니다. 또는 마스크 <mask-name>0xffc0
와 함께 구성된 접두사 0x6c00
를 사용하고 L3 헤더의 처음 2바이트를 참조하여 처음 4비트(버전 필드는 6과 같음) 및 1100 00
IPv6 DSCP 필드(DSCP는 CS6과 같음)에서 에 대한 0110
검색을 지정합니다.
첫 번째 예제에서는 유연한 일치를 위해 L3 헤더에서 처음 2바이트(16비트)를 선택하는 마스크 템플릿을 정의합니다.
firewall { flexible-match FM-FIRST-TWO-L3-BYTES { match-start layer-3; byte-offset 0; bit-offset 0; bit-length 16; } }
다음 예제에서는 유연한 일치를 위해 패킷 페이로드의 세 번째에서 여섯 번째 바이트(32비트)를 선택하는 마스크 템플릿을 정의합니다.
firewall { flexible-match FM-FOUR-PAYLOAD-BYTES { match-start payload; byte-offset 2; bit-offset 0; bit-length 32; } }
이 예는 문자열 JNPR (ASCII 문자: 0x4a
, 0x4e
, 0x50
, ) 0x52
는 패킷 페이로드의 세 번째에서 여섯 번째 바이트에 있습니다. 필터는 이전 예제에서 정의한 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; } } } }
이 예는 캡슐화된 패킷이 IPv4인지 IPv6인지에 관계없이 DSCP가 DSCPef
와 같 cs6
음을 찾는 family ccc 필터를 보여줍니다. 첫 번째 예제에서 정의한 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; } } } }
이 예에서는 Junos 릴리스 20.1R1을 실행하는 QFX5120-32C, QFX5120-48Y 또는 EX4650 디바이스에 대한 방화벽 필터에서 레이어 2 패킷 오프셋부터 시작하여 일치 길이를 사용하는 방법을 보여줍니다. 여기서는 32 비트의 비트 길이와 패밀리를 ethernet-switching
사용합니다 (inet
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; } }
변경 내역 표
기능 지원은 사용 중인 플랫폼과 릴리스에 따라 결정됩니다. Feature Explorer 를 사용하여 플랫폼에서 기능이 지원되는지 확인하세요.