ALG 응용 분야
응용 프로그램 속성 구성
응용 프로그램 속성을 구성하려면 계층 수준에서 [edit applications]
문을 포함합니다application
.
[edit applications] application application-name { application-protocol protocol-name; child-inactivity-timeout seconds; destination-port port-number; gate-timeout seconds; icmp-code value; icmp-type value; inactivity-timeout value; protocol type; rpc-program-number number; snmp-command command; source-port port-number; ttl-threshold value; uuid hex-value; }
문을 구성 application-set
하여 응용 프로그램 객체를 그룹화할 수 있습니다. 자세한 내용은 응용 프로그램 세트 구성을 참조하십시오.
이 섹션에는 응용 프로그램을 구성하기 위한 다음 작업이 포함되어 있습니다.
- 응용 프로그램 프로토콜 구성
- 네트워크 프로토콜 구성
- ICMP 코드 및 유형 구성
- 소스 및 대상 포트 구성
- 비활성 시간 초과 기간 구성
- IKE(Internet Key Exchange) ALG 애플리케이션 구성
- SIP 구성
- 패킷 매칭을 위한 SNMP 명령 구성
- RPC 프로그램 번호 구성
- TTL 임계값 구성
- 범용 고유 식별자(Universal Unique Identifier) 구성
응용 프로그램 프로토콜 구성
application-protocol
문을 사용하면 지원되는 ALG(애플리케이션 프로토콜) 중 어떤 것을 구성하고 서비스 처리를 위해 애플리케이션 세트에 포함할지 지정할 수 있습니다. 애플리케이션 프로토콜을 구성하려면 계층 수준에서 명령문을 포함 application-protocol
하십시오.[edit applications application application-name]
[edit applications application application-name] application-protocol protocol-name;
표 1 에는 지원되는 프로토콜 목록이 표시되어 있습니다. 특정 프로토콜에 대한 자세한 내용은 ALG 설명 을 참조하십시오.
프로토콜 이름 |
CLI 값 |
코멘트 |
---|---|---|
부트스트랩 프로토콜(BOOTP) |
|
BOOTP 및 DHCP(Dynamic Host Configuration Protocol)를 지원합니다. |
DCE(분산 컴퓨팅 환경) RPC(원격 프로시저 호출) |
|
명령문에 |
DCE RPC 포트맵 |
|
명령문에 |
DNS(도메인 이름 시스템) |
|
문에 |
이그제큐티브 |
|
|
증권 시세 표시기 |
|
|
H.323 시리즈 |
|
– |
IKE(Internet Key Exchange) ALG |
|
문에 |
ICMP(Internet Control Message Protocol) |
|
|
인터넷 ORB 간 프로토콜 |
|
– |
지적재산권 |
|
– |
로그인 |
|
– |
넷BIOS |
|
|
넷쇼(NetShow) |
|
|
포인트 투 포인트 터널링 프로토콜 |
|
– |
리얼오디오 |
|
– |
실시간 스트리밍 프로토콜(RTSP) |
|
|
RPC UDP(사용자 데이터그램 프로토콜) 또는 TCP |
|
명령문에 |
RPC 포트 매핑 |
|
명령문에 |
포탄 |
|
|
세션 시작 프로토콜 |
|
– |
증권 시세 표시기 |
|
|
SQLNet |
|
|
토크 프로그램 |
|
|
경로 추적 |
|
|
트리비얼 FTP(TFTP) |
|
|
윈프레임(WinFrame) |
|
– |
동일한 서비스 집합에서 네트워크 주소 변환(NAT)이 두 번 구성된 경우 상태 저장 방화벽, NAT 또는 CoS 규칙에 따라 ICMP용 ALG(애플리케이션 수준 게이트웨이)를 구성하고 경로를 추적할 수 있습니다. 이러한 ALG는 PGCP(Packet Gateway Controller Protocol)에 의해 생성된 흐름에 적용할 수 없습니다. 두 번 NAT는 다른 ALG를 지원하지 않습니다. NAT는 IP 주소와 TCP 또는 UDP 헤더만 적용하고 페이로드에는 적용하지 않습니다.
2회 네트워크 주소 변환(NAT) 구성에 대한 자세한 내용은 Junos Address Aware 네트워크 주소 지정 개요를 참조하십시오.
네트워크 프로토콜 구성
protocol
문을 사용하면 응용 프로그램 정의에서 일치시킬 지원되는 네트워크 프로토콜을 지정할 수 있습니다. 네트워크 프로토콜을 구성하려면 계층 수준에서 [edit applications application application-name]
문을 포함합니다protocol
.
[edit applications application application-name] protocol type;
프로토콜 유형을 숫자 값으로 지정합니다. 보다 일반적으로 사용되는 프로토콜의 경우 텍스트 이름도 명령줄 인터페이스(CLI)에서 지원됩니다. 표 2 에는 지원되는 프로토콜 목록이 표시되어 있습니다.
네트워크 프로토콜 유형 |
CLI 값 |
코멘트 |
---|---|---|
IP 보안(IPsec) 인증 헤더(AH) |
|
– |
외부 게이트웨이 프로토콜(EGP) |
|
– |
IPsec ESP(Encapsulating Security Payload) |
|
– |
일반 라우팅 캡슐화(GR) |
|
– |
ICMP (영문) |
|
의 값이 |
ICMPv6 (영문) |
|
의 값이 |
IGMP(Internet Group Management Protocol) |
|
– |
IP의 IP |
|
– |
최단 경로 우선(OSPF) |
|
– |
PIM(Protocol Independent Multicast) |
|
– |
리소스 예약 프로토콜(RSVP) |
|
– |
TCP (영문) |
|
또는 |
UDP (영어) |
|
또는 |
가능한 숫자 값의 전체 목록은 RFC 1700, 할당된 번호(인터넷 프로토콜 제품군용)를 참조하십시오.
IP 버전 6(IPv6)은 응용 프로그램 정의에서 네트워크 프로토콜로 지원되지 않습니다.
기본적으로 두 번 NAT 기능은 ICMP 오류 메시지의 페이로드에 포함된 IP, TCP 및 UDP 헤더에 영향을 줄 수 있습니다. 두 번의 NAT 구성에 protocol tcp
대해 애플리케이션 문과 함께 및 protocol udp
문을 포함할 수 있습니다. 2회 네트워크 주소 변환(NAT) 구성에 대한 자세한 내용은 Junos Address Aware 네트워크 주소 지정 개요를 참조하십시오.
ICMP 코드 및 유형 구성
ICMP 코드 및 유형은 애플리케이션 정의에서 패킷 매칭을 위해 네트워크 프로토콜과 함께 추가 사양을 제공합니다. ICMP 설정을 구성하려면 계층 수준에서 및 icmp-type
명령문을 [edit applications application application-name]
포함합니다icmp-code
.
[edit applications application application-name] icmp-code value; icmp-type value;
ICMP 코드 및 유형 값은 하나만 포함할 수 있습니다. 문은 application-protocol
값을 icmp
가져야 합니다. 표 3 에는 지원되는 ICMP 값 목록이 표시되어 있습니다.
CLI 문 |
묘사 |
---|---|
|
이 값 또는 키워드는 보다 더 구체적인 정보를 숫자 값을 대신해 다음 텍스트 동의어 중 하나를 지정할 수 있습니다(필드 값도 나열되어 있음). 키워드는 ICMP 유형별로 그룹화되어 있으며 이는 다음과 관련이 있습니다. 매개 변수 문제 : 리디렉션: 시간 초과: 연결할 수 없음: |
|
일반적으로 이 일치 조건은 현재 포트에서 어떤 프로토콜이 사용되고 있는지 알아내기 위해 일치 명령문과 숫자 값 대신 텍스트 동의어(필드 값도 나열 |
거부 작업을 포함하는 입력 방화벽 필터와 스테이트풀 방화벽 규칙을 포함하는 서비스 세트로 인터페이스를 구성하는 경우, 라우터는 스테이트풀 방화벽 규칙이 패킷에서 실행되기 전에 입력 방화벽 필터를 실행합니다. 따라서 패킷 포워딩 엔진이 인터페이스를 통해 ICMP 오류 메시지를 보낼 때 입력 방향으로 표시되지 않기 때문에 상태 저장 방화벽 규칙이 패킷을 삭제할 수 있습니다.
가능한 해결 방법은 포워딩 테이블 필터를 포함하여 거부 작업을 수행하거나(이 유형의 필터가 입력 방향의 스테이트풀 방화벽 이후에 실행되기 때문에) 출력 서비스 필터를 포함하여 로컬에서 생성된 ICMP 패킷이 스테이트풀 방화벽 서비스로 이동하지 않도록 하는 것입니다.
소스 및 대상 포트 구성
TCP 또는 UDP 원본 및 대상 포트는 응용 프로그램 정의에서 패킷 일치를 위해 네트워크 프로토콜과 함께 추가 사양을 제공합니다. 포트를 구성하려면 계층 수준에서 및 source-port
명령문을 [edit applications application application-name]
포함합니다destination-port
.
[edit applications application application-name] destination-port value; source-port value;
하나의 원본 또는 대상 포트를 정의해야 합니다. 일반적으로 이 일치 조건은 포트에서 어떤 프로토콜이 사용되고 있는지 알아내기 위해 일치 명령문과 protocol
함께 지정합니다. 제약 조건에 대해서는 표 1을 참조하십시오.
숫자 값 또는 표 4에 나열된 텍스트 동의어 중 하나를 지정할 수 있습니다.
포트 이름 |
해당 포트 번호 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
일치 기준에 대한 자세한 내용은 라우팅 정책, 방화벽 필터 및 트래픽 폴리서 사용자 설명서를 참조하십시오.
비활성 시간 초과 기간 구성
응용 프로그램 비활성에 대한 제한 시간을 지정할 수 있습니다. 소프트웨어가 기간 동안 활동을 감지하지 못한 경우 타이머가 만료되면 흐름이 무효화됩니다. 타임아웃 기간을 구성하려면 계층 레벨에서 [edit applications application application-name]
문을 포함합니다inactivity-timeout
.
[edit applications application application-name] inactivity-timeout seconds;
기본값은 30초입니다. 응용 프로그램에 대해 구성하는 값은 계층 수준에서 구성된 [edit interfaces interface-name service-options]
모든 전역 값을 재정의하며, 자세한 내용은 서비스 인터페이스에 대한 기본 시간 제한 설정 구성을 참조하십시오.
IKE(Internet Key Exchange) ALG 애플리케이션 구성
Junos OS 릴리스 17.4R1 이전에는 MX 시리즈 라우터의 Junos VPN Site Secure IPsec 기능 제품군에 대해 NAT-T(네트워크 주소 변환-Traversal)가 지원되지 않습니다. IKE ALG를 사용하면 NAT-T를 준수하지 않는 IPsec 피어 간에 NAPT-44 및 NAT64 필터를 통해 IKEv1 및 IPsec 패킷을 전달할 수 있습니다. 이 ALG는 ESP 터널 모드만 지원합니다. 대상 포트(500), 비활성 타임아웃(30초), 게이트 타임아웃(120초) 및 ESP 세션 유휴 타임아웃(800초)에 대한 사전 정의된 값을 갖는 사전 정의된 IKE ALG 애플리케이션을 junos-ike
사용할 수 있습니다. 사전 정의된 junos-ike
애플리케이션과 다른 값을 가진 IKE ALG를 사용하려면 새로운 IKE ALG 애플리케이션을 구성해야 합니다.
IKE(Internet Key Exchange) ALG 애플리케이션을 구성하려면 다음을 수행합니다.
응용 프로그램의 이름을 지정합니다.
[edit applications] user@host# set application junos-ike
IKE(Internet Key Exchange) ALG를 지정합니다.
[edit applications application junos-ike] user@host# set application-protocol ike-esp-nat
UDP 프로토콜을 지정합니다.
[edit applications application junos-ike] user@host# set protocol udp
대상 포트로 500을 지정합니다.
[edit applications application junos-ike] user@host# set destination-port 500
-
IKE 세션이 삭제되기 전에 비활성 상태인 시간(초)을 지정합니다. 기본값은 30초입니다.
[edit applications application junos-ike] user@host# set inactivity-timeout seconds
IKE가 IPsec 클라이언트와 서버 간의 보안 연결을 설정한 후 ESP 트래픽이 양방향으로 시작되기 전에 경과할 수 있는 시간(초)을 지정합니다. 이 타임아웃 값 이전에 ESP 트래픽이 시작되지 않은 경우, ESP 게이트가 삭제되고 ESP 트래픽이 차단됩니다. 기본값은 120초입니다.
[edit applications application junos-ike] user@host# set gate-timeout seconds
ESP 세션(IPsec 데이터 트래픽) 유휴 시간 제한(초)을 지정합니다. 이 시간 동안 ESP 세션에서 IPsec 데이터 트래픽이 전달되지 않으면 세션이 삭제됩니다. 기본값은 800초입니다.
[edit applications application junos-ike] user@host# set child-inactivity-timeout seconds
SIP 구성
SIP(Session Initiation Protocol)는 전화 통신, 팩스, 화상 회의, 인스턴트 메시징 및 파일 교환과 같은 인터넷 서비스와 관련된 끝점 간의 통신을 위한 일반화된 프로토콜입니다.
Junos OS는 RFC 3261, SIP: 세션 시작 프로토콜에 설명된 표준에 따라 ALG 서비스를 제공합니다. Junos OS에 따른 SIP 플로우는 RFC 3665, SIP(Session Initiation Protocol) 기본 통화 플로우 예에 설명되어 있습니다.
Junos OS SIP ALG를 구현하기 전에 Junos OS SIP ALG 제한 사항에 설명된 특정 제한 사항을 숙지해야 합니다
SIP ALG와 함께 NAT를 사용하면 주소 변환으로 인해 SIP 헤더 필드가 변경됩니다. 이러한 변환에 대한 설명은 SIP ALG Interaction with 네트워크 주소 변환를 참조하십시오.
적응형 서비스 인터페이스에서 SIP를 구현하려면 값을 sip
사용하여 계층 수준에서 문을 [edit applications application application-name]
구성합니다application-protocol
. 이 명령문에 대한 자세한 내용은 애플리케이션 프로토콜 구성을 참조하십시오. 또한 SIP 구현 방법을 수정하기 위해 구성할 수 있는 다른 두 개의 문이 있습니다.
라우터가 NAT 방화벽 뒤에 있는 엔드포인트 디바이스에 대한 수신 SIP 통화를 수락하도록 설정할 수 있습니다. 방화벽 뒤에 있는 디바이스가 방화벽 외부에 있는 프록시에 등록하면 AS 또는 멀티서비스 PIC가 등록 상태를 유지합니다.
learn-sip-register
문이 활성화되면 라우터는 이 정보를 사용하여 인바운드 통화를 수락할 수 있습니다. 이 문이 구성되지 않은 경우 인바운드 통화가 허용되지 않습니다. 방화벽 뒤에 있는 디바이스만 방화벽 외부의 디바이스를 호출할 수 있습니다.SIP 등록을
learn-sip-register
구성하려면 계층 수준에서 문을[edit applications application application-name]
포함합니다.[edit applications application application-name] learn-sip-register;
메모:명령문은
learn-sip-register
차세대 서비스 MX-SPC3에 적용되지 않습니다.또한 명령을 실행하여 SIP 레지스터를
show services stateful-firewall sip-register
수동으로 검사할 수도 있습니다. 자세한 내용은 Junos OS 시스템 기본 사항 및 서비스 명령 참조를 참조하십시오. 이show services stateful-firewall sip-register
명령은 차세대 서비스에서 지원되지 않습니다.보류된 SIP 통화 기간에 대한 시간 초과 기간을 지정할 수 있습니다. 통화가 보류되면 활동이 없으며 구성된
inactivity-timeout
기간이 만료된 후 플로우가 시간 초과되어 통화 상태가 삭제될 수 있습니다. 이를 방지하기 위해 통화가 보류되면 플로우 타이머가 주기로sip-call-hold-timeout
재설정되어 통화 상태와 플로우를 기간보다inactivity-timeout
오래 보존합니다.메모:명령문은
sip-call-hold-timeout
차세대 서비스 MX-SPC3에 적용되지 않습니다.타임아웃 기간을 구성하려면 계층 레벨에서
[edit applications application application-name]
문을 포함합니다sip-call-hold-timeout
.[edit applications application application-name] sip-call-hold-timeout seconds;
기본값은 7200초이고 범위는 0에서 36,000초(10시간)까지입니다.
SIP ALG와 네트워크 주소 변환의 상호 작용
NAT(네트워크 주소 변환) 프로토콜을 사용하면 프라이빗 서브넷의 여러 호스트가 단일 공용 IP 주소를 공유하여 인터넷에 액세스할 수 있습니다. 나가는 트래픽의 경우 NAT는 프라이빗 서브넷에 있는 호스트의 프라이빗 IP 주소를 퍼블릭 IP 주소로 바꿉니다. 들어오는 트래픽의 경우 공용 IP 주소가 다시 개인 주소로 변환되고 메시지가 전용 서브넷의 적절한 호스트로 라우팅됩니다.
SIP 메시지에는 SIP 헤더와 SIP 본문에 IP 주소가 포함되어 있기 때문에 SIP(Session Initiation Protocol) 서비스와 함께 NAT를 사용하는 것은 더 복잡합니다. SIP 서비스와 함께 NAT를 사용하는 경우 SIP 헤더에는 발신자 및 수신자에 대한 정보가 포함되며 디바이스는 이 정보를 변환하여 외부 네트워크에서 숨깁니다. SIP 본문에는 미디어 전송을 위한 IP 주소 및 포트 번호를 포함하는 SDP(Session Description Protocol) 정보가 포함되어 있습니다. 디바이스는 리소스를 할당하여 미디어를 송수신하기 위해 SDP 정보를 변환합니다.
SIP 메시지의 IP 주소 및 포트 번호가 대체되는 방법은 메시지의 방향에 따라 다릅니다. 보내는 메시지의 경우 클라이언트의 개인 IP 주소 및 포트 번호가 주니퍼 네트웍스 방화벽의 공용 IP 주소 및 포트 번호로 대체됩니다. 들어오는 메시지의 경우 방화벽의 공용 주소가 클라이언트의 개인 주소로 바뀝니다.
INVITE 메시지가 방화벽을 통해 전송되면 SIP ALG(애플리케이션 레이어 게이트웨이)는 메시지 헤더의 정보를 통화 테이블로 수집하여 후속 메시지를 올바른 엔드포인트로 전달하는 데 사용합니다. 새 메시지(예: ACK 또는 200 OK)가 도착하면 ALG는 "From:, To: 및 Call-ID:" 필드를 호출 테이블과 비교하여 메시지의 호출 컨텍스트를 식별합니다. 기존 호출과 일치하는 새로운 INVITE 메시지가 도착하면 ALG는 이를 REINVITE로 처리합니다.
SDP 정보가 포함된 메시지가 도착하면 ALG는 포트를 할당하고 포트와 SDP의 포트 간에 NAT 매핑을 생성합니다. SDP는 RTP(Real-Time Transport Protocol) 및 RTCP(Real-Time Control Protocol) 채널에 순차적 포트가 필요하기 때문에 ALG는 연속적인 짝수-홀수 포트를 제공합니다. 포트 쌍을 찾을 수 없는 경우 SIP 메시지를 삭제합니다.
이러한 주제에는 다음 섹션이 포함됩니다.
발신 전화
SIP 요청이 내부 네트워크에서 외부 네트워크로 전송되면서 SIP 통화가 시작되면 NAT는 SDP의 IP 주소와 포트 번호를 대체하고 IP 주소와 포트 번호를 주니퍼 네트웍스 방화벽에 바인딩합니다. Via(통해), Contact(연락처), Route(경로) 및 Record-Route SIP 헤더 필드(있는 경우)도 방화벽 IP 주소에 바인딩됩니다. ALG는 재전송 및 SIP 응답 메시지에 사용하기 위해 이러한 매핑을 저장합니다.
그런 다음 SIP ALG는 방화벽의 핀홀을 열어 SDP 및 Via, Contact 및 Record-Route 헤더 필드의 정보를 기반으로 협상된 동적으로 할당된 포트에서 디바이스를 통해 미디어를 허용합니다. 또한 핀홀을 사용하면 수신 패킷이 연락처, 비아 및 레코드 경로 IP 주소 및 포트에 도달할 수 있습니다. 반환 트래픽을 처리할 때 ALG는 원래 Contact, Via, Route 및 Record-Route SIP 필드를 패킷에 다시 삽입합니다.
걸려오는 전화
수신 통화는 공용 네트워크에서 공용 고정 NAT 주소 또는 디바이스의 인터페이스 IP 주소로 시작됩니다. 정적 NAT는 내부 호스트를 가리키는 정적으로 구성된 IP 주소입니다. 인터페이스 IP 주소는 내부 호스트가 SIP 레지스트라로 보낸 REGISTER 메시지를 모니터링할 때 ALG에 의해 동적으로 기록됩니다. 디바이스가 수신 SIP 패킷을 수신하면 세션을 설정하고 패킷의 페이로드를 SIP ALG로 전달합니다.
ALG는 SIP 요청 메시지(처음에는 INVITE)를 검사하고 SDP의 정보를 기반으로 발신 미디어에 대한 게이트를 엽니다. 200 OK 응답 메시지가 도착하면 SIP ALG는 IP 주소 및 포트에서 NAT를 수행하고 아웃바운드 방향으로 핀홀을 엽니다. (열린 게이트는 지속 시간이 짧으며 200 OK 응답 메시지가 신속하게 수신되지 않으면 시간 초과됩니다.)
200 OK 응답이 도착하면 SIP 프록시는 SDP 정보를 검사하고 각 미디어 세션의 IP 주소 및 포트 번호를 읽습니다. 디바이스의 SIP ALG는 주소 및 포트 번호에 대해 NAT를 수행하고, 아웃바운드 트래픽에 대한 핀홀을 열고, 인바운드 방향의 게이트에 대한 시간 제한을 새로 고칩니다.
ACK가 200 OK에 도착하면 SIP ALG도 통과합니다. 메시지에 SDP 정보가 포함된 경우 SIP ALG는 IP 주소 및 포트 번호가 이전 INVITE에서 변경되지 않도록 합니다. 변경된 경우 ALG는 이전 핀홀을 삭제하고 미디어가 통과할 수 있도록 새 핀홀을 만듭니다. 또한 ALG는 Via, Contact 및 Record-Route SIP 필드를 모니터링하고 이러한 필드가 변경된 것으로 확인되면 새 핀홀을 엽니다.
착신 전환 통화
착신 전환된 통화는 예를 들어 네트워크 외부의 사용자 A가 네트워크 내부의 사용자 B에게 전화를 걸고 사용자 B가 네트워크 외부의 사용자 C에게 통화를 착신 전환하는 경우입니다. SIP ALG는 사용자 A의 INVITE를 정상적인 수신 통화로 처리합니다. 그러나 ALG가 네트워크 외부에서 B에서 C로 전달된 통화를 검사하고 동일한 인터페이스를 사용하여 B와 C에 도달하는 것을 감지하면 미디어가 사용자 A와 사용자 C 사이에 직접 흐르기 때문에 방화벽에 핀홀이 열리지 않습니다.
통화 종료
BYE 메시지는 통화를 종료합니다. 디바이스가 BYE 메시지를 수신하면 다른 메시지와 마찬가지로 헤더 필드를 변환합니다. 그러나 BYE 메시지는 수신자가 200 OK로 승인해야 하므로 ALG는 200 OK의 전송 시간을 허용하기 위해 5초 동안 통화 해제를 지연합니다.
다시 초대 메시지에 전화 걸기
다시 초대 메시지는 통화에 새 미디어 세션을 추가하고 기존 미디어 세션을 제거합니다. 통화에 새 미디어 세션이 추가되면 방화벽에서 새 핀홀이 열리고 새 주소 바인딩이 만들어집니다. 이 프로세스는 원래 통화 설정과 동일합니다. 통화에서 하나 이상의 미디어 세션이 제거되면 BYE 메시지와 마찬가지로 핀홀이 닫히고 바인딩이 해제됩니다.
통화 세션 타이머
SIP ALG는 Re-INVITE 또는 UPDATE 메시지가 수신되지 않은 경우 Session-Expires 값을 사용하여 세션의 시간을 초과합니다. ALG는 INVITE에 대한 200 OK 응답에서 Session-Expires 값(있는 경우)을 가져오고 이 값을 신호 타임아웃에 사용합니다. 세션 시간이 초과되기 전에 ALG가 다른 INVITE를 수신하면 모든 타임아웃 값을 이 새로운 INVITE 또는 기본값으로 재설정하고 이 프로세스가 반복됩니다.
예방 조치로 SIP ALG는 하드 시간 제한 값을 사용하여 통화가 존재할 수 있는 최대 시간을 설정합니다. 이렇게 하면 다음 이벤트 중 하나가 발생할 경우 장치가 보호됩니다.
통화 중에 종료 시스템이 충돌하고 BYE 메시지가 수신되지 않습니다.
악의적인 사용자는 SIP ALG를 공격하기 위해 BYE를 보내지 않습니다.
SIP 프록시의 잘못된 구현은 Record-Route를 처리하지 못하고 BYE 메시지를 보내지 않습니다.
네트워크 장애로 인해 BYE 메시지가 수신되지 않습니다.
통화 취소
양 당사자는 CANCEL 메시지를 보내 통화를 취소할 수 있습니다. CANCEL 메시지를 수신하면 SIP ALG는 방화벽을 통해 핀홀을 닫고(핀홀이 열려 있는 경우) 주소 바인딩을 해제합니다. 리소스를 해제하기 전에 ALG는 약 5초 동안 제어 채널 에이징 아웃을 지연하여 최종 200 OK가 통과할 시간을 허용합니다. 487 또는 200이 아닌 응답이 도착하는지 여부에 관계없이 5초 시간 제한이 만료되면 통화가 종료됩니다.
분기
포크를 사용하면 SIP 프록시가 단일 INVITE 메시지를 여러 대상에 동시에 보낼 수 있습니다. 단일 통화에 대해 여러 200개의 OK 응답 메시지가 도착하면 SIP ALG는 구문 분석하지만 수신한 처음 200개의 OK 메시지로 통화 정보를 업데이트합니다.
SIP 메시지
SIP 메시지 형식은 SIP 헤더 섹션과 SIP 본문으로 구성됩니다. 요청 메시지에서 헤더 섹션의 첫 번째 줄은 메서드 유형, request-URI 및 프로토콜 버전을 포함하는 요청 줄입니다. 응답 메시지에서 첫 번째 줄은 상태 코드가 포함된 상태 줄입니다. SIP 헤더에는 시그널링에 사용되는 IP 주소 및 포트 번호가 포함되어 있습니다. 헤더 섹션과 빈 줄로 구분된 SIP 본문은 선택 사항인 세션 설명 정보용으로 예약됩니다. Junos OS는 현재 SDP만 지원합니다. SIP 본문에는 미디어를 전송하는 데 사용되는 IP 주소 및 포트 번호가 포함되어 있습니다.
SIP 헤더
다음 샘플 SIP 요청 메시지에서 NAT는 헤더 필드의 IP 주소를 대체하여 외부 네트워크에서 숨깁니다.
INVITE bob@10.150.20.5
SIP/2.0 Via: SIP/2.0/UDP10.150.20.3
:5434 From: alice@10.150.20.3
To: bob@10.150.20.5
Call-ID: a12abcde@10.150.20.3
Contact: alice@10.150.20.3
:5434 Route: <sip:netscreen@10.150.20.3
:5060> Record-Route: <sip:netscreen@10.150.20.3
:5060>
IP 주소 변환이 수행되는 방법은 메시지의 유형과 방향에 따라 달라집니다. 메시지는 다음 중 하나일 수 있습니다.
인바운드 요청
아웃바운드 응답
아웃바운드 요청
인바운드 응답
표 5 는 이러한 각 경우에 NAT가 수행되는 방법을 보여줍니다. 여러 헤더 필드의 경우 ALG는 메시지가 네트워크 내부 또는 외부에서 오는지 여부 이상을 결정합니다. 또한 호출을 시작한 클라이언트와 메시지가 요청인지 응답인지를 결정해야 합니다.
인바운드 요청 (공개에서 비공개로) |
받는 사람: |
도메인을 로컬 주소로 바꾸기 |
보낸 사람: |
없음 |
|
통화 ID: |
없음 |
|
통해: |
없음 |
|
요청 URI: |
ALG 주소를 로컬 주소로 교체 |
|
접촉: |
없음 |
|
레코드 경로: |
없음 |
|
경로: |
없음 |
|
아웃바운드 응답 (비공개에서 공개로) |
받는 사람: |
ALG 주소를 로컬 주소로 교체 |
보낸 사람: |
없음 |
|
통화 ID: |
없음 |
|
통해: |
없음 |
|
요청 URI: |
해당 사항 없음 |
|
접촉: |
로컬 주소를 ALG 주소로 바꾸기 |
|
레코드 경로: |
로컬 주소를 ALG 주소로 바꾸기 |
|
경로: |
없음 |
|
아웃바운드 요청 (비공개에서 공개로) |
받는 사람: |
없음 |
보낸 사람: |
로컬 주소를 ALG 주소로 바꾸기 |
|
통화 ID: |
없음 |
|
통해: |
로컬 주소를 ALG 주소로 바꾸기 |
|
요청 URI: |
없음 |
|
접촉: |
로컬 주소를 ALG 주소로 바꾸기 |
|
레코드 경로: |
로컬 주소를 ALG 주소로 바꾸기 |
|
경로: |
ALG 주소를 로컬 주소로 교체 |
|
아웃바운드 응답 (공개에서 비공개로) |
받는 사람: |
없음 |
보낸 사람: |
ALG 주소를 로컬 주소로 교체 |
|
통화 ID: |
없음 |
|
통해: |
ALG 주소를 로컬 주소로 교체 |
|
요청 URI: |
해당 사항 없음 |
|
접촉: |
없음 |
|
레코드 경로: |
ALG 주소를 로컬 주소로 교체 |
|
경로: |
ALG 주소를 로컬 주소로 교체 |
SIP 본체
SIP 본문의 SDP 정보에는 ALG가 미디어 스트림에 대한 채널을 생성하는 데 사용하는 IP 주소가 포함됩니다. SDP 섹션의 변환은 리소스를 할당합니다. 즉, 미디어를 보내고 받을 포트 번호도 할당됩니다.
샘플 SDP 섹션에서 발췌한 다음 내용은 리소스 할당을 위해 변환되는 필드를 보여줍니다.
o=user 2344234 55234434 IN IP410.150.20.3
c=IN IP410.150.20.3
m=audio43249
RTP/AVP 0
SIP 메시지에는 둘 이상의 미디어 스트림이 포함될 수 있습니다. 이 개념은 전자 메일 메시지에 여러 파일을 첨부하는 것과 비슷합니다. 예를 들어, SIP 클라이언트에서 SIP 서버로 보낸 INVITE 메시지에는 다음 필드가 있을 수 있습니다.
c=IN IP410.123.33.4
m=audio33445
RTP/AVP 0 c=IN IP410.123.33.4
m=audio33447
RTP/AVP 0 c=IN IP410.123.33.4
m=audio33449
RTP/AVP 0
Junos OS는 각 방향에 대해 협상된 최대 6개의 SDP 채널, 통화당 총 12개의 채널을 지원합니다.
Junos OS SIP ALG 제한 사항
SIP ALG의 구성에는 다음과 같은 제한이 적용됩니다.
RFC 3261에 설명된 방법만 지원됩니다.
SIP 버전 2만 지원됩니다.
TCP는 MS-MPC의 메시지 시그널링을 위한 전송 메커니즘으로 지원되지 않지만 차세대 서비스에는 지원됩니다.
STUN을 사용할 때 SIP ALG를 구성하지 마십시오. 클라이언트가 STUN/TURN을 사용하여 발신자와 응답자 또는 프록시 간의 방화벽 또는 NAT 디바이스를 탐지하는 경우 클라이언트는 NAT 디바이스 동작을 가장 잘 추측하고 그에 따라 작동하여 전화를 걸려고 시도합니다.
MS-MPC에서는 SIP ALG와 함께 엔드포인트 독립 매핑 NAT 풀 옵션을 사용하지 마십시오. 오류가 발생합니다. 이는 차세대 서비스에는 적용되지 않습니다.
IPv6 신호 데이터는 MS-MPC에서 지원되지 않지만 차세대 서비스에서는 지원됩니다.
인증은 지원되지 않습니다.
암호화된 메시지는 지원되지 않습니다.
SIP 단편화는 MS-MPC에서 지원되지 않지만 차세대 서비스에서는 지원됩니다.
SIP 메시지를 포함하는 최대 UDP 패킷 크기는 9KB로 가정합니다. 이보다 큰 SIP 메시지는 지원되지 않습니다.
SIP 메시지의 최대 미디어 채널 수는 6개로 가정합니다.
FQDN(정규화된 도메인 이름)은 중요 필드에서 지원되지 않습니다.
QoS는 지원되지 않습니다. SIP는 DSCP 재작성을 지원합니다.
웜 대기를 제외하고는 고가용성이 지원되지 않습니다.
never의 시간 제한 설정은 SIP 또는 NAT에서 지원되지 않습니다.
멀티캐스트(포크 프록시)는 지원되지 않습니다.
패킷 매칭을 위한 SNMP 명령 구성
패킷 매칭을 위해 SNMP 명령 설정을 지정할 수 있습니다. SNMP를 snmp-command
구성하려면 계층 수준에서 문을 포함합니다.[edit applications application application-name]
[edit applications application application-name] snmp-command value;
지원되는 값은 , get-next
, set
및 trap
입니다get
. 일치를 위해 하나의 값만 구성할 수 있습니다. 계층 수준의 문 [edit applications application application-name]
은 application-protocol
값을 snmp
가져야 합니다. 응용 프로그램 프로토콜 지정에 대한 자세한 내용은 응용 프로그램 프로토콜 구성을 참조하십시오.
RPC 프로그램 번호 구성
패킷 매칭을 위해 RPC 프로그램 번호를 지정할 수 있습니다. RPC 프로그램 번호를 구성하려면 계층 수준에서 문을 [edit applications application application-name]
포함합니다rpc-program-number
.
[edit applications application application-name] rpc-program-number number;
DCE 또는 RPC에 사용되는 값의 범위는 100,000에서 400,000까지입니다. 계층 수준의 문 [edit applications application application-name]
은 application-protocol
값을 rpc
가져야 합니다. 응용 프로그램 프로토콜 지정에 대한 자세한 내용은 응용 프로그램 프로토콜 구성을 참조하십시오.
TTL 임계값 구성
추적 라우팅에 허용되는 네트워크 침투 수준을 제어하는 추적 경로 TTL(Time-to-Live) 임계값을 지정할 수 있습니다. TTL 값을 구성하려면 계층 수준에서 문을 포함합니다ttl-threshold
.[edit applications application application-name]
[edit applications application application-name] ttl-threshold value;
계층 수준의 문 [edit applications application application-name]
은 application-protocol
값을 traceroute
가져야 합니다. 응용 프로그램 프로토콜 지정에 대한 자세한 내용은 응용 프로그램 프로토콜 구성을 참조하십시오.
범용 고유 식별자(Universal Unique Identifier) 구성
DCE RPC 개체에 대해 UUID(Universal Unique Identifier)를 지정할 수 있습니다. UUID 값을 구성하려면 계층 수준에서 문을 [edit applications application application-name]
포함합니다uuid
.
[edit applications application application-name] uuid hex-value;
uuid
값은 16진수 표기법으로 표시됩니다. 계층 수준의 문 [edit applications application application-name
은 application-protocol
값을 dce-rpc
가져야 합니다. 응용 프로그램 프로토콜 지정에 대한 자세한 내용은 응용 프로그램 프로토콜 구성을 참조하십시오. UUID 번호에 대한 자세한 내용은 을 참조하십시오http://www.opengroup.org/onlinepubs/9629399/apdxa.htm
.
참조
응용 프로그램 집합 구성
각 응용 프로그램에 대한 문과 application-set
함께 application
계층 수준에서 문을 [edit applications]
포함하여 정의한 응용 프로그램을 명명된 개체로 그룹화할 수 있습니다.
[edit applications] application-set application-set-name { application application; }
일반적인 응용 프로그램 집합의 예는 예: 응용 프로그램 프로토콜 구성을 참조하십시오.
예: 응용 프로그램 프로토콜 구성
다음 예제에서는 포트 78에서 실행되는 특수 FTP 응용 프로그램을 설명하는 응용 프로그램 프로토콜 정의를 보여 줍니다.
[edit applications] application my-ftp-app { application-protocol ftp; protocol tcp; destination-port 78; timeout 100; # inactivity timeout for FTP service }
다음 예는 유형 8(ICMP 에코)의 특수 ICMP 프로토콜(application-protocol icmp
)을 보여줍니다.
[edit applications] application icmp-app { application-protocol icmp; protocol icmp; icmp-type icmp-echo; }
다음 예제에서는 가능한 응용 프로그램 집합을 보여 줍니다.
[edit applications] application-set basic { http; ftp; telnet; nfs; icmp; }
이 소프트웨어에는 잘 알려진 애플리케이션 프로토콜의 사전 정의된 세트가 포함되어 있습니다. 이 세트에는 TCP 및 UDP 대상 포트가 상태 비저장 방화벽 필터에 의해 이미 인식된 애플리케이션이 포함됩니다.
ALG 세션의 출력 확인
이 섹션에는 ALG 세션의 성공적인 출력 예와 시스템 로그 구성에 대한 정보가 포함되어 있습니다. 세션 결과를 비교하여 구성이 올바르게 작동하는지 확인할 수 있습니다.
FTP 예
이 예는 활성 FTP 세션 중 출력을 분석합니다. 네 가지 흐름으로 구성됩니다. 2개는 제어 흐름이고 2개는 데이터 흐름입니다. 예제는 다음과 같은 부분으로 구성됩니다.
샘플 출력
MS-MPC 카드
MS-MPC의 경우, 다음은 작동 모드 명령의 전체 샘플 출력입니다 show services stateful-firewall conversations application-protocol ftp
.
user@host>show services stateful-firewall conversations application-protocol ftp Interface: ms-1/3/0, Service set: CLBJI1-AAF001 Conversation: ALG protocol: ftp Number of initiators: 2, Number of responders: 2 Flow State Dir Frm count TCP 1.1.79.2:14083 -> 2.2.2.2:21 Watch I 13 NAT source 1.1.79.2:14083 -> 194.250.1.237:50118 TCP 1.1.79.2:14104 -> 2.2.2.2:20 Forward I 3 NAT source 1.1.79.2:14104 -> 194.250.1.237:50119 TCP 2.2.2.2:21 -> 194.250.1.237:50118 Watch O 12 NAT dest 194.250.1.237:50118 -> 1.1.79.2:14083 TCP 2.2.2.2:20 -> 194.250.1.237:50119 Forward O 5 NAT dest 194.250.1.237:50119 -> 1.1.79.2:14104
각 플로우의 경우, 첫 번째 줄에는 프로토콜(TCP), 소스 주소, 소스 포트, 대상 주소, 대상 포트, 플로우 상태, 방향, 프레임 수 등을 포함한 플로우 정보가 표시됩니다.
흐름의 상태는 ,
Forward
, 또는Drop
일 수 있습니다Watch
.플로우 상태는
Watch
페이로드의 정보에 대해 ALG가 제어 플로우를 모니터링함을 나타냅니다. NAT 처리는 필요에 따라 헤더 및 페이로드에서 수행됩니다.플로우는
Forward
페이로드를 모니터링하지 않고 패킷을 전달합니다. NAT는 필요에 따라 헤더에서 수행됩니다.플로우는
Drop
5 튜플과 일치하는 모든 패킷을 삭제합니다.
프레임 수(
Frm count
)는 해당 플로우에서 처리된 패킷 수를 보여줍니다.
두 번째 줄은 NAT 정보를 보여줍니다.
source
소스 네트워크 주소 변환(NAT)을 나타냅니다.dest
대상 네트워크 주소 변환(NAT)을 나타냅니다.NAT 라인의 첫 번째 주소와 포트는 해당 플로우에 대해 변환되는 원본 주소와 포트입니다.
NAT 라인의 두 번째 주소와 포트는 해당 플로우에 대해 변환된 주소 및 포트입니다.
MX-SPC3 카드
MX-SPC3 서비스 카드에서 다음은 작동 모드 명령의 전체 샘플 출력입니다 show services sessions application-protocol ftp
.
user@host>show services sessions application-protocol ftp Session ID: 536870917, Service-set: ss1, Policy name: p1/131085, Timeout: 1, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 1 In: 12.10.10.10/35281 --> 22.20.20.3/8204;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 6, Bytes: 320, Out: 22.20.20.3/8204 --> 60.1.1.2/48747;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 9, Bytes: 8239, Session ID: 536870919, Service-set: ss1, Policy name: p1/131085, Timeout: 29, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 0 In: 12.10.10.10/44194 --> 22.20.20.3/21;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 13, Bytes: 585, Out: 22.20.20.3/21 --> 60.1.1.2/48660;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 11, Bytes: 650, Total sessions: 2
각 세션의 경우:
첫 번째 줄에는 세션 ID, 서비스 세트 이름, 정책 이름, 세션 시간 초과, 논리적 시스템 이름 및 상태를 포함한 플로우 정보가 표시됩니다.
두 번째 줄인
Resource information
은(는) ALG 이름(FTP ALG) 및 ASL 그룹 ID(1)와 ASL 리소스 ID(제어 세션의 경우 0, 데이터 세션의 경우 1)를 포함하여 세션이 ALG에 의해 생성되었음을 나타냅니다.세 번째 줄
In
은 순방향 흐름이고 네 번째 줄Out
은 역방향 흐름이며, 여기에는 원본 주소, 원본 포트, 대상 주소, 대상 포트, 프로토콜(TCP), 세션 연결 태그, 인터페이스 수신In
및 발신Out
, 수신 프레임 수, 바이트가 포함됩니다. NAT는 필요에 따라 헤더에서 수행됩니다.
FTP 시스템 로그 메시지
시스템 로그 메시지는 FTP 세션 중에 생성됩니다. 시스템 로그에 대한 자세한 내용은 시스템 로그 메시지를 참조하세요.
MS-MPC 카드
FTP 제어 플로우를 생성하는 동안 다음과 같은 시스템 로그 메시지가 생성됩니다.
규칙 수락 시스템 로그:
Oct 27 11:42:54 (FPC Slot 1, PIC Slot 1) {ss_ftp}[FWNAT]: ASP_SFW_RULE_ACCEPT: proto 6 (TCP) application: ftp, fe-3/3/3.0:1.1.1.2:4450 -> 2.2.2.2:21, Match SFW accept rule-set:, rule: ftp, term: 1
수락 흐름 시스템 로그 생성:
Oct 27 11:42:54 (FPC Slot 1, PIC Slot 1) {ss_ftp}[FWNAT]: ASP_SFW_CREATE_ACCEPT_FLOW: proto 6 (TCP) application: ftp, fe-3/3/3.0:1.1.1.2:4450 -> 2.2.2.2:21, creating forward or watch flow
데이터 흐름 생성에 대한 시스템 로그:System log for data flow creation:
Oct 27 11:43:30 (FPC Slot 1, PIC Slot 1) {ss_ftp}[FWNAT]: ASP_SFW_FTP_ACTIVE_ACCEPT: proto 6 (TCP) application: ftp, so-2/1/2.0:2.2.2.2:20 -> 1.1.1.2:50726, Creating FTP active mode forward flow
MX-SPC3 카드 카드
FTP 제어 플로우를 생성하는 동안 다음과 같은 시스템 로그 메시지가 생성됩니다.
FTP 제어 세션 생성을 위한 시스템 로그:
Mar 23 23:58:54 esst480r RT_FLOW: RT_FLOW_SESSION_CREATE_USF: Tag svc-set-name ss1: session created 20.1.1.2/52877->30.1.1.2/21 0x0 junos-ftp 20.1.1.2/52877->30.1.1.2/21 0x0 N/A N/A N/A N/A 6 p1 ss1-ZoneIn ss1-ZoneOut 818413576 N/A(N/A) ge-1/0/2.0 UNKNOWN UNKNOWN UNKNOWN N/A N/A -1 N/A Mar 23 23:59:00 esst480r junos-alg: RT_ALG_FTP_ACTIVE_ACCEPT: application:ftp data, vms-3/0/0.0 30.1.1.2:20 -> 20.1.1.2:33947 (TCP)
FTP 데이터 세션 생성을 위한 시스템 로그:
Mar 23 23:59:00 esst480r RT_FLOW: RT_FLOW_SESSION_CREATE_USF: Tag svc-set-name ss1: session created 30.1.1.2/20->20.1.1.2/33947 0x0 junos-ftp-data 30.1.1.2/20->20.1.1.2/33947 0x0 N/A N/A N/A N/A 6 p1 ss1-ZoneOut ss1-ZoneIn 818413577 N/A(N/A) ge-1/1/6.0 FTP-DATA UNKNOWN UNKNOWN Infrastructure File-Servers 2 N/A
FTP 데이터 세션 삭제에 대한 시스템 로그:
Mar 23 23:59:02 esst480r RT_FLOW: RT_FLOW_SESSION_CLOSE_USF: Tag svc-set-name ss1: session closed TCP FIN: 30.1.1.2/20->20.1.1.2/33947 0x0 junos-ftp-data 30.1.1.2/20->20.1.1.2/33947 0x0 N/A N/A N/A N/A 6 p1 ss1-ZoneOut ss1-ZoneIn 818413577 2954(4423509) 281(14620) 2 FTP-DATA UNKNOWN N/A(N/A) ge-1/1/6.0 No Infrastructure File-Servers 2 N/A
FTP 제어 세션 삭제에 대한 시스템 로그:
Mar 23 23:59:39 esst480r RT_FLOW: RT_FLOW_SESSION_CLOSE_USF: Tag svc-set-name ss1: session closed Closed by junos-tcp-clt-emul: 20.1.1.2/52877->30.1.1.2/21 0x0 junos-ftp 20.1.1.2/52877->30.1.1.2/21 0x0 N/A N/A N/A N/A 6 p1 ss1-ZoneIn ss1-ZoneOut 818413576 23(1082) 18(1176) 45 UNKNOWN UNKNOWN N/A(N/A) ge-1/0/2.0 No N/A N/A -1 N/A
분석
제어 흐름
MS-MPC 카드
제어 흐름은 3방향 핸드셰이크가 완료된 후에 설정됩니다.
FTP 클라이언트에서 FTP 서버로의 흐름을 제어합니다. TCP 대상 포트는 21입니다.
TCP 1.1.79.2:14083 -> 2.2.2.2:21 Watch I 13 NAT source 1.1.79.2:14083 -> 194.250.1.237:50118
FTP 서버에서 FTP 클라이언트로의 흐름을 제어합니다. TCP 원본 포트는 21입니다.
TCP 2.2.2.2:21 -> 194.250.1.237:50118 Watch O 12 NAT dest 194.250.1.237:50118 -> 1.1.79.2:14083
MX-SPC3 카드
제어 흐름은 3방향 핸드셰이크가 완료된 후에 설정됩니다.
FTP 클라이언트에서 FTP 서버로의 세션 제어, TCP 대상 포트는 21입니다.
Session ID: 536870919, Service-set: ss1, Policy name: p1/131085, Timeout: 29, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 0 In: 12.10.10.10/44194 --> 22.20.20.3/21;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 13, Bytes: 585, Out: 22.20.20.3/21 --> 60.1.1.2/48660;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 11, Bytes: 650,
FTP 클라이언트에서 FTP 서버로의 데이터 세션은 FTP 패시브 모드용입니다.
Session ID: 536870917, Service-set: ss1, Policy name: p1/131085, Timeout: 1, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 1 In: 12.10.10.10/35281 --> 22.20.20.3/8204;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 6, Bytes: 320, Out: 22.20.20.3/8204 --> 60.1.1.2/48747;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 9, Bytes: 8239,
FTP 서버에서 FTP 클라이언트로의 데이터 세션은 FTP 활성 모드용입니다.
Session ID: 549978117, Service-set: ss1, Policy name: p1/131085, Timeout: 1, Valid Logical system: root-logical-system Resource information : FTP ALG, 1, 1 In: 22.20.20.3/20 --> 60.1.1.3/6049;tcp, Conn Tag: 0x0, If: vms-2/0/0.200, Pkts: 10, Bytes: 8291, Out: 12.10.10.10/33203 --> 22.20.20.3/20;tcp, Conn Tag: 0x0, If: vms-2/0/0.100, Pkts: 5, Bytes: 268,
데이터 플로우
데이터 포트 20은 FTP 제어 프로토콜 과정에서 데이터 전송을 위해 협상됩니다. 이 두 흐름은 FTP 클라이언트와 FTP 서버 간의 데이터 흐름입니다.
TCP 1.1.79.2:14104 -> 2.2.2.2:20 Forward I 3 NAT source 1.1.79.2:14104 -> 194.250.1.237:50119 TCP 2.2.2.2:20 -> 194.250.1.237:50119 Forward O 5 NAT dest 194.250.1.237:50119 -> 1.1.79.2:14104
문제 해결 질문
FTP ALG가 활성화되어 있는지 어떻게 알 수 있습니까?
대화의 ALG 프로토콜 필드에 가 표시
ftp
되어야 합니다.제어 흐름에 유효한 프레임 수(
Frm count
)가 있어야 합니다.데이터 흐름의 유효한 프레임 수는 데이터 전송이 수행되었음을 나타냅니다.
FTP 연결이 설정되었지만 데이터 전송이 이루어지지 않는 경우 무엇을 확인해야 합니까?
대부분의 경우 제어 연결은 작동 중이지만 데이터 연결은 중단된 상태입니다.
대화 출력을 확인하여 제어 흐름과 데이터 흐름이 모두 있는지 확인합니다.
각 흐름을 어떻게 해석해야 하나요? 각 흐름은 무엇을 의미하나요?
FTP 제어 플로우 개시자 flow—목적지 포트 21이 있는 플로우
FTP 제어 플로우 응답자 flow—소스 포트가 있는 플로우 ; 21
FTP 데이터 플로우 개시자 flow—목적지 포트 20의 플로우
FTP 데이터 플로우 응답자 flow—소스 포트 20이 있는 플로우
RTSP ALG 예시
다음은 RTSP 대화의 예입니다. 애플리케이션은 연결을 제어하기 위해 RTSP 프로토콜을 사용합니다. 연결이 설정되면 미디어는 UDP 프로토콜(RTP)을 사용하여 전송됩니다.
이 예제는 다음과 같이 구성됩니다.
MS-MPC의 샘플 출력
다음은 작동 모드 명령의 출력입니다 show services stateful-firewall conversations
.
user@host# show services stateful-firewall conversations Interface: ms-3/2/0, Service set: svc_set Conversation: ALG protocol: rtsp Number of initiators: 5, Number of responders: 5 Flow State Dir Frm count TCP 1.1.1.3:58795 -> 2.2.2.2:554 Watch I 7 UDP 1.1.1.3:1028 -> 2.2.2.2:1028 Forward I 0 UDP 1.1.1.3:1029 -> 2.2.2.2:1029 Forward I 0 UDP 1.1.1.3:1030 -> 2.2.2.2:1030 Forward I 0 UDP 1.1.1.3:1031 -> 2.2.2.2:1031 Forward I 0 TCP 2.2.2.2:554 -> 1.1.1.3:58795 Watch O 5 UDP 2.2.2.2:1028 -> 1.1.1.3:1028 Forward O 6 UDP 2.2.2.2:1029 -> 1.1.1.3:1029 Forward O 0 UDP 2.2.2.2:1030 -> 1.1.1.3:1030 Forward O 3 UDP 2.2.2.2:1031 -> 1.1.1.3:1031 Forward O 0
MX-SPC3 서비스 카드의 샘플 출력
다음은 작동 모드 명령의 출력입니다 show services sessions application-protocol rtsp
.
user@host# run show services sessions application-protocol rtsp Session ID: 1073741828, Service-set: sset1, Policy name: p1/131081, Timeout: 116, Valid Logical system: root-logical-system Resource information : RTSP ALG, 1, 0 In: 31.0.0.2/33575 --> 41.0.0.2/554;tcp, Conn Tag: 0x0, If: vms-4/0/0.1, Pkts: 8, Bytes: 948, Out: 41.0.0.2/554 --> 131.10.0.1/7777;tcp, Conn Tag: 0x0, If: vms-4/0/0.2, Pkts: 6, Bytes: 1117, Session ID: 1073741829, Service-set: sset1, Policy name: p1/131081, Timeout: 120, Valid Logical system: root-logical-system Resource information : RTSP ALG, 1, 1 In: 41.0.0.2/35004 --> 131.10.0.1/7780;udp, Conn Tag: 0x0, If: vms-4/0/0.2, Pkts: 220, Bytes: 79200, Out: 31.0.0.2/30004 --> 41.0.0.2/35004;udp, Conn Tag: 0x0, If: vms-4/0/0.1, Pkts: 0, Bytes: 0, Session ID: 1073741830, Service-set: sset1, Policy name: p1/131081, Timeout: 120, Valid Logical system: root-logical-system Resource information : RTSP ALG, 1, 4 In: 41.0.0.2/35006 --> 131.10.0.1/7781;udp, Conn Tag: 0x0, If: vms-4/0/0.2, Pkts: 220, Bytes: 174240, Out: 31.0.0.2/30006 --> 41.0.0.2/35006;udp, Conn Tag: 0x0, If: vms-4/0/0.1, Pkts: 0, Bytes: 0, Total sessions: 3
분석
RTSP 대화는 RTSP 제어 연결에 해당하는 TCP 흐름으로 구성되어야 합니다. 클라이언트에서 서버로, 서버에서 클라이언트로 각 방향에 하나씩 두 개의 흐름이 있어야 합니다.
TCP 1.1.1.3:58795 -> 2.2.2.2:554 Watch I 7 TCP 2.2.2.2:554 -> 1.1.1.3:58795 Watch O 5
개시자 흐름에 대한 RTSP 제어 연결은 대상 포트 554에서 전송됩니다.
응답자 흐름에 대한 RTSP 제어 연결은 원본 포트 554에서 전송됩니다.
UDP 흐름은 RTSP 연결을 통해 전송되는 RTP 미디어에 해당합니다.
문제 해결 질문
RTSP ALG가 구성되면 미디어가 작동하지 않습니다. 뭐 할까요?
RTSP 대화를 확인하여 TCP 및 UDP 흐름이 모두 있는지 확인합니다.
ALG 프로토콜은 로
rtsp
표시되어야 합니다.
메모:ALG 처리가 진행 중이고 클라이언트가 애플리케이션에 해당하는 페이로드를 "감시" 또는 처리하고 있기 때문에 플로우 상태는 (
Watch
으)로 표시됩니다. FTP 및 RTSP ALG 플로우의 경우, 제어 연결은 항상Watch
플로우입니다.ALG 오류는 어떻게 확인합니까?
다음 명령을 실행하여 오류를 확인할 수 있습니다. 각 ALG에는 ALG 패킷 오류에 대한 별도의 필드가 있습니다.
user@host# show services stateful-firewall statistics extensive Interface: ms-3/2/0 Service set: svc_set New flows: Accepts: 1347, Discards: 0, Rejects: 0 Existing flows: Accepts: 144187, Discards: 0, Rejects: 0 Drops: IP option: 0, TCP SYN defense: 0 NAT ports exhausted: 0 Errors: IP: 0, TCP: 276 UDP: 0, ICMP: 0 Non-IP packets: 0, ALG: 0 IP errors: IP packet length inconsistencies: 0 Minimum IP header length check failures: 0 Reassembled packet exceeds maximum IP length: 0 Illegal source address: 0 Illegal destination address: 0 TTL zero errors: 0, Illegal IP protocol number (0 or 255): 0 Land attack: 0 Non-IPv4 packets: 0, Bad checksum: 0 Illegal IP fragment length: 0 IP fragment overlap: 0 IP fragment reassembly timeout: 0 Unknown: 0 TCP errors: TCP header length inconsistencies: 0 Source or destination port number is zero: 0 Illegal sequence number and flags combinations: 0 SYN attack (multiple SYN messages seen for the same flow): 276 First packet not a SYN message: 0 TCP port scan (TCP handshake, RST seen from server for SYN): 0 Bad SYN cookie response: 0 UDP errors: IP data length less than minimum UDP header length (8 bytes): 0 Source or destination port number is zero: 0 UDP port scan (ICMP error seen for UDP flow): 0 ICMP errors: IP data length less than minimum ICMP header length (8 bytes): 0 ICMP error length inconsistencies: 0 Duplicate ping sequence number: 0 Mismatched ping sequence number: 0 ALG errors: BOOTP: 0, DCE-RPC: 0, DCE-RPC portmap: 0 DNS: 0, Exec: 0, FTP: 0 ICMP: 0 Login: 0, NetBIOS: 0, NetShow: 0 RPC: 0, RPC portmap: 0 RTSP: 0, Shell: 0 SNMP: 0, SQLNet: 0, TFTP: 0 Traceroute: 0
시스템 로그 메시지
시스템 로그 생성을 활성화하고 시스템 로그를 확인하는 것도 ALG 흐름 분석에 도움이 됩니다. 이 섹션에서는 다음과 같은 내용을 다룹니다.
시스템 로그 구성
Junos OS CLI의 다양한 수준에서 시스템 로그 메시지 활성화를 구성할 수 있습니다. 다음 샘플 구성에서 볼 수 있듯이 수준 선택은 이벤트 로깅을 얼마나 구체적으로 지정할지와 포함하려는 옵션에 따라 달라집니다. 구성 옵션에 대한 자세한 내용은 라우팅 디바이스용 Junos OS 관리 라이브러리 (시스템 수준) 또는 라우팅 디바이스용 Junos OS 서비스 인터페이스 라이브러리 (다른 모든 수준)를 참조하십시오.
최상위 글로벌 수준에서:
user@host# show system syslog file messages { any any; }
서비스 세트 수준에서:
user@host# show services service-set svc_set syslog { host local { services any; } } stateful-firewall-rules allow_rtsp; interface-service { service-interface ms-3/2/0; }
서비스 규칙 수준에서:
user@host# show services stateful-firewall rule allow_rtsp match-direction input-output; term 0 { from { applications junos-rtsp; } then { accept; syslog; } }
시스템 로그 출력
시스템 로그 메시지는 다음 예제와 같이 플로우 생성 중에 생성됩니다.
다음 시스템 로그 메시지는 ASP가 수락 규칙과 일치함을 나타냅니다.
Oct 25 16:11:37 (FPC Slot 3, PIC Slot 2) {svc_set}[FWNAT]: ASP_SFW_RULE_ACCEPT: proto 6 (TCP) application: rtsp, ge-2/0/1.0:1.1.1.2:35595 -> 2.2.2.2:554, Match SFW accept rule-set: , rule: allow_rtsp, term: 0
시스템 로그 메시지의 전체 목록은 시스템 로그 탐색기를 참조하세요.