ALG 애플리케이션
애플리케이션 속성 구성
애플리케이션 속성을 구성하려면 계층 수준에서 문을 포함 application 합니다.[edit applications]
[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 임계값 구성
- 범용 고유 식별자 구성
애플리케이션 프로토콜 구성
application-protocol 이 문을 통해 서비스 처리를 위한 애플리케이션 세트에 구성하고 포함할 지원되는 애플리케이션 프로토콜(ALG)을 지정할 수 있습니다. 애플리케이션 프로토콜을 구성하려면 계층 수준에서 [edit applications application application-name] 문을 포함 application-protocol 합니다.
[edit applications application application-name] application-protocol protocol-name;
표 1 은 지원되는 프로토콜 목록을 보여줍니다. 특정 프로토콜에 대한 자세한 내용은 ALG 설명을 참조하십시오.
프로토콜 이름 |
CLI 값 |
댓글 |
|---|---|---|
부트스트랩 프로토콜(BOOTP) |
|
BOOTP 및 DHCP(dynamic host configuration protocol)를 지원합니다. |
분산 컴퓨팅 환경(DCE) 원격 프로시저 호출(RPC) |
|
문에 |
DCE RPC 포트맵 |
|
문에 |
DNS(도메인 이름 시스템) |
|
명령문에 |
임원 |
|
명령문에 |
FTP |
|
명령문에 |
H.323 |
|
– |
IKE ALG |
|
명령문에 |
인터넷 제어 메시지 프로토콜(ICMP) |
|
명령문에 |
인터넷 ORB 간 프로토콜 |
|
– |
IP |
|
– |
로그인 |
|
– |
넷BIOS |
|
명령문에 |
넷쇼 |
|
명령문에 |
포인트 투 포인트 터널링 프로토콜 |
|
– |
리얼오디오 |
|
– |
RTSP(Real-Time Streaming Protocol) |
|
명령문에 |
RPC UDP(User Datagram Protocol) 또는 TCP |
|
문에 |
RPC 포트 매핑 |
|
문에 |
쉘 |
|
명령문에 |
세션 개시 프로토콜 |
|
– |
SNMP |
|
명령문에 |
SQLNet |
|
명령문에 |
토크 프로그램 |
|
|
경로 추적 |
|
명령문에 |
트리비얼 FTP(TFTP) |
|
명령문에 |
윈프레임 |
|
– |
동일한 서비스 집합에 NAT가 두 번 구성된 경우 상태 기반 방화벽, NAT 또는 CoS 규칙에 따라 ICMP를 위한 ALG(Application-Level Gateways)를 구성하고 경로를 추적할 수 있습니다. 이러한 ALG는 PGCP(Packet Gateway Controller Protocol)에 의해 생성된 흐름에 적용할 수 없습니다. 두 번 NAT는 다른 ALG를 지원하지 않습니다. NAT는 IP 주소와 TCP 또는 UDP 헤더만 적용하고 페이로드는 적용하지 않습니다.
이중 네트워크 주소 변환(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 보안 페이로드) |
|
– |
일반 라우팅 캡슐화(GR) |
|
– |
ICMP |
|
값 이 필요합니다 |
ICMPv6 |
|
값 이 필요합니다 |
IGMP(Internet Group Management Protocol) |
|
– |
IP in IP |
|
– |
최단 경로 우선(OSPF) |
|
– |
프로토콜 독립 멀티캐스트(PIM) |
|
– |
리소스 예약 프로토콜(RSVP) |
|
– |
TCP |
|
OR |
UDP |
|
OR |
가능한 숫자 값의 전체 목록은 RFC 1700, 할당된 번호(인터넷 프로토콜 제품군용)를 참조하십시오.
IP 버전 6(IPv6)은 애플리케이션 정의에서 네트워크 프로토콜로 지원되지 않습니다.
기본적으로 이중 NAT 기능은 ICMP 오류 메시지의 페이로드에 포함된 IP, TCP 및 UDP 헤더에 영향을 줄 수 있습니다. 두 번의 네트워크 주소 변환(NAT) 구성에 대해 애플리케이션 문과 함께 and protocol udp 문을 포함 protocol tcp 할 수 있습니다. 이중 네트워크 주소 변환(NAT) 구성에 대한 자세한 내용은 Junos Address Aware 네트워크 주소 지정 개요를 참조하십시오.
ICMP 코드 및 유형 구성
ICMP 코드 및 유형은 네트워크 프로토콜과 함께 애플리케이션 정의에서 패킷 매칭을 위한 추가 사양을 제공합니다. ICMP 설정을 구성하려면 계층 수준에서 [edit applications application application-name] 및 문을 icmp-type 포함 icmp-code 합니다.
[edit applications application application-name] icmp-code value; icmp-type value;
하나의 ICMP 코드와 유형 값만 포함할 수 있습니다. 문에는 application-protocol icmp값이 있어야 합니다. 표 3 은 지원되는 ICMP 값 목록을 보여줍니다.
CLI 문 |
설명 |
|---|---|
|
이 값 또는 키워드는 보다 더 구체적인 정보를 숫자 값 대신 다음 텍스트 동의어 중 하나를 지정할 수 있습니다(필드 값도 나열되어 있음). 키워드는 ICMP 유형별로 그룹화되어 있으며 이는 다음과 관련이 있습니다. 매개변수 문제: 리디렉션: 초과 시간: 연결할 수 없음: |
|
일반적으로 이 일치 조건을 match 문과 숫자 값 대신 다음 텍스트 동의어 중 하나를 지정할 수 있습니다(필드 값도 나열됨 |
거부 작업을 포함하는 입력 방화벽 필터와 스테이트풀 방화벽 규칙을 포함하는 서비스 세트로 인터페이스를 구성하는 경우, 스테이트풀 방화벽 규칙이 패킷에서 실행되기 전에 라우터는 입력 방화벽 필터를 실행합니다. 그 결과, 패킷 포워딩 엔진이 인터페이스를 통해 ICMP 오류 메시지를 보낼 때, 입력 방향에서 패킷이 보이지 않기 때문에 스테이트풀 방화벽 규칙이 패킷을 삭제할 수 있습니다.
가능한 해결 방법은 입력 방향에서 스테이트풀 방화벽 이후에 실행되기 때문에 거부 작업을 수행하기 위한 포워딩 테이블 필터를 포함하거나 로컬에서 생성된 ICMP 패킷이 스테이트풀 방화벽 서비스로 이동하지 못하도록 출력 서비스 필터를 포함하는 것입니다.
소스 및 대상 포트 구성
TCP 또는 UDP 소스 및 대상 포트는 네트워크 프로토콜과 함께 애플리케이션 정의에서 패킷 매칭을 위한 추가 사양을 제공합니다. 포트를 구성하려면 계층 수준에서 and source-port 문을 포함 destination-port 합니다.[edit applications application application-name]
[edit applications application application-name] destination-port value; source-port value;
하나의 소스 또는 대상 포트를 정의해야 합니다. 일반적으로 이 match를 match문과 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 애플리케이션 구성
릴리스 17.4R1 Junos OS 이전에는 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(Internet Key Exchange) 세션이 삭제되기 전까지 비활성 상태인 시간(초)을 지정합니다. 기본값은 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 네트워크 주소 변환 상호 작용을 참조하십시오.
적응형 서비스 인터페이스에서 SIP를 구현하려면 계층 수준에서 [edit applications application application-name] 값을 사용하여 sip문을 구성 application-protocol 합니다. 이 명령문에 대한 자세한 내용은 애플리케이션 프로토콜 구성을 참조하십시오. 또한 SIP 구현 방법을 수정하기 위해 구성할 수 있는 두 개의 다른 문이 있습니다.
네트워크 주소 변환(NAT) 방화벽 뒤에 있는 엔드포인트 디바이스에 대해 들어오는 모든 SIP 호출을 라우터가 수락하도록 설정할 수 있습니다. 방화벽 뒤의 디바이스가 방화벽 외부에 있는 프록시에 등록하면 AS 또는 멀티서비스 PIC는 등록 상태를 유지합니다. 문이
learn-sip-register활성화되면 라우터는 이 정보를 사용하여 인바운드 호출을 수락할 수 있습니다. 이 문이 구성되지 않으면 인바운드 호출이 허용되지 않습니다. 방화벽 뒤에 있는 디바이스만 방화벽 외부의 디바이스를 호출할 수 있습니다.SIP 등록을 구성하려면 계층 수준에서
[edit applications application application-name]문을 포함learn-sip-register합니다.[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기간이 만료된 후 flow의 시간이 초과되어 통화 상태가 해제될 수 있습니다. 이를 방지하기 위해 통화가 보류 상태가 되면 플로우 타이머가 주기로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(Session Initiation Protocol) 서비스와 함께 NAT를 사용하는 것은 더 복잡합니다. SIP 메시지에는 SIP 헤더와 SIP 본문에 IP 주소가 포함되어 있기 때문입니다. 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 헤더 필드의 정보를 기반으로 협상된 동적으로 할당된 포트의 디바이스를 통해 미디어가 허용됩니다. 또한 핀홀을 통해 수신 패킷이 Contact, Via 및 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초 동안 호출 해제를 지연합니다.
Re-INVITE 메시지 호출
Re-INVITE 메시지는 통화에 새 미디어 세션을 추가하고 기존 미디어 세션을 제거합니다. 새로운 미디어 세션이 통화에 추가되면 방화벽에 새 핀홀이 열리고 새 주소 바인딩이 생성됩니다. 프로세스는 원래 통화 설정과 동일합니다. 통화에서 하나 이상의 미디어 세션이 제거되면 BYE 메시지와 마찬가지로 핀홀이 닫히고 바인딩이 해제됩니다.
통화 세션 타이머
SIP ALG는 Re-INVITE 또는 UPDATE 메시지가 수신되지 않은 경우 세션 만료 값을 사용하여 세션 시간을 단축합니다. ALG는 INVITE에 대한 200 OK 응답에서 Session-Expires 값(있는 경우)을 가져오고 시간 초과 시그널링에 이 값을 사용합니다. 세션 시간이 초과되기 전에 ALG가 다른 INVITE를 수신하면 모든 시간 제한 값을 이 새로운 INVITE 또는 기본값으로 재설정하고 프로세스가 반복됩니다.
예방 조치로, SIP ALG는 하드 타임아웃 값을 사용하여 통화가 존재할 수 있는 최대 시간을 설정합니다. 이렇게 하면 다음 이벤트 중 하나가 발생할 경우 디바이스가 보호됩니다.
통화 중에 엔드 시스템이 충돌하고 BYE 메시지가 수신되지 않습니다.
악의적인 사용자는 SIP ALG를 공격하려는 시도로 BYE를 보내지 않습니다.
SIP 프록시의 잘못된 구현은 Record-Route를 처리하지 못하고 BYE 메시지를 보내지 않습니다.
네트워크 장애로 인해 BYE 메시지를 수신할 수 없습니다.
통화 취소
어느 쪽이든 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.5SIP/2.0 Via: SIP/2.0/UDP10.150.20.3:5434 From: alice@10.150.20.3To: bob@10.150.20.5Call-ID: a12abcde@10.150.20.3Contact: 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.3c=IN IP410.150.20.3m=audio43249RTP/AVP 0
SIP 메시지에는 둘 이상의 미디어 스트림이 포함될 수 있습니다. 이 개념은 전자 메일 메시지에 여러 파일을 첨부하는 것과 비슷합니다. 예를 들어, SIP 클라이언트에서 SIP 서버로 전송된 INVITE 메시지에는 다음 필드가 있을 수 있습니다.
c=IN IP410.123.33.4m=audio33445RTP/AVP 0 c=IN IP410.123.33.4m=audio33447RTP/AVP 0 c=IN IP410.123.33.4m=audio33449RTP/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, get-next, , set및 trap입니다. 일치를 위해 단 하나의 값만 구성할 수 있습니다. 계층 수준의 문 [edit applications application application-name] 에는 application-protocol snmp값이 있어야 합니다. 애플리케이션 프로토콜 지정에 대한 자세한 내용은 애플리케이션 프로토콜 구성을 참조하십시오.
RPC 프로그램 번호 구성
패킷 매칭을 위해 RPC 프로그램 번호를 지정할 수 있습니다. RPC 프로그램 번호를 구성하려면 계층 수준에서 문을 포함 rpc-program-number 합니다.[edit applications application application-name]
[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 값을 구성하려면 계층 수준에서 [edit applications application application-name] 문을 포함 ttl-threshold 합니다.
[edit applications application application-name] ttl-threshold value;
계층 수준의 문 [edit applications application application-name] 에는 application-protocol traceroute값이 있어야 합니다. 애플리케이션 프로토콜 지정에 대한 자세한 내용은 애플리케이션 프로토콜 구성을 참조하십시오.
범용 고유 식별자 구성
DCE RPC 개체에 대한 UUID(Universal Unique Identifier)를 지정할 수 있습니다. UUID 값을 구성하려면 계층 수준에서 문을 포함 uuid 합니다.[edit applications application application-name]
[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.
또한보십시오
애플리케이션 세트 구성
각 애플리케이션에 대한 문과 함께 계층 수준에서 [edit applications] 문을 포함하여 application-set 정의한 애플리케이션을 명명된 객체로 그룹화할 수 있습니다.application
[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 세션 동안 출력을 분석합니다. 4개의 서로 다른 흐름으로 구성됩니다. 두 개는 제어 흐름이고 두 개는 데이터 흐름입니다. 이 예는 다음 부분으로 구성됩니다.
샘플 출력
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)은 필요에 따라 헤더에서 수행됩니다.플로우는
Drop5 튜플과 일치하는 모든 패킷을 삭제합니다.
프레임 수(
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 informationALG 이름(FTP ALG)과 ASL 그룹 ID(1)와 ASL 리소스 ID(제어 세션의 경우 0, 데이터 세션의 경우 1)를 포함하여 ALG에 의해 세션이 생성되었음을 나타냅니다.세 번째 라인
In은 순방향 흐름이고 네 번째 라인Out은 역방향 흐름으로, 소스 주소, 소스 포트, 대상 주소, 대상 포트, 프로토콜(TCP), 세션 연결 태그, 인터페이스에 대한Out수신In및 발신, 수신된 프레임 수 및 바이트를 포함합니다. 네트워크 주소 변환(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데이터 흐름 생성을 위한 시스템 로그:
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:50118FTP 서버에서 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,
데이터 플로우
FTP 제어 프로토콜 과정 중에 데이터 전송을 위해 20개의 데이터 포트가 협상됩니다. 이 두 플로우는 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가 활성화되어 있는지 어떻게 알 수 있습니까?
대화
ftp의 ALG 프로토콜 필드에 .제어 흐름에 유효한 프레임 수(
Frm count)가 있어야 합니다.데이터 흐름의 유효한 프레임 수는 데이터 전송이 수행되었음을 나타냅니다.
FTP 연결이 설정되었지만 데이터 전송이 이루어지지 않는지 확인하려면 어떻게 해야 합니까?
아마도 제어 연결은 켜져 있지만 데이터 연결은 꺼져 있을 것입니다.
대화 출력을 확인하여 제어 및 데이터 흐름이 모두 있는지 확인합니다.
각 흐름을 어떻게 해석합니까? 각 흐름은 무엇을 의미합니까?
FTP 제어 플로우 개시자 플로우—대상 포트 21의 플로우
FTP 제어 플로우 응답자 플로우—소스 포트가 있는 플로우; 21
FTP 데이터 플로우 개시자 플로우—대상 포트 20의 플로우
FTP 데이터 플로우 응답자 플로우—소스 포트 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
시스템 로그 메시지의 전체 목록은 시스템 로그 탐색기를 참조하십시오.