이 페이지의
TFTP ALG
TFTP(Trivial File Transfer Protocol) ALG는 UDP 대상 포트 69에 대한 요청을 시작하는 TFTP 패킷을 처리하고, 요청을 전송하는 포트로 역방향에서 패킷 반환을 허용하는 게이트를 엽니다. 스테이트풀 방화벽 및 NAT 서비스를 지원하려면 UDP 대상 포트 69에 대한 TFTP ALG를 구성해야 합니다.
TFTP ALG 이해
개요
TFTP(Trivial File Transfer Protocol)는 파일 전송 (RFC 1350)에 사용되는 간단한 프로토콜입니다. TFTP는 UDP 상위에 구현되며 대상 포트 69는 잘 알려진 포트입니다. TFTP ALG(Application Layer Gateway)는 요청을 시작하고 역방향에서 패킷을 반환할 수 있도록 핀홀을 생성하는 TFTP 패킷을 처리합니다.
플로우 프로세싱에는 1개의 TFTP 대화를 위한 두 개의 세션이 있으며, 하나는 읽기 요청(RRQ) 또는 쓰기 요청(WRQ) 패킷에 의해 생성된 TFTP 제어 세션입니다. 다른 하나는 데이터 패킷(RRQ용) 또는 ACK(Acknowledgment) 패킷(WRQ용)에 의해 생성된 TFTP 데이터 세션입니다.
Junos OS 방화벽에서 TFTP 제어 세션은 junos-tftp 애플리케이션 정책을 통해 허용됩니다. 데이터 세션은 제어 세션 패킷이 수신될 때 서버의 모든 포트에서 클라이언트의 TID(포트)로 TFTP ALG 오픈 핀홀을 통해 허용됩니다. NAT 변환이 이미 수행되었으며 세션 데이터 구조에서 정보를 사용할 수 있기 때문에 NAT 변환이 필요하지 않습니다.
SRX210, SRX240, SRX320, SRX340 또는 SRX380 디바이스에서는 플로우가 디바이스에서 활성화될 때 브로드캐스트 TFTP가 지원되지 않습니다. (플랫폼 지원은 설치 시 Junos OS 릴리스에 따라 달라집니다.)
TFTP 패킷
모든 전송은 파일 읽기 또는 쓰기 요청으로 시작됩니다. 512바이트 미만의 데이터 패킷으로 전송 종료 시그널
TFTP는 5가지 유형의 패킷을 지원합니다.
요청 읽기(RRQ)
WRQ(Write Request)
데이터(데이터)
승인(ACK)
오류(오류)
TFTP 세션
TFTP ALG는 스테이트리스 전송 프로토콜인 UDP를 기반으로 합니다. 방화벽에서 TFTP ALG는 타임아웃이 있는 UDP 세션의 역할을 담당합니다. 패킷 교체 세션이 없는 경우 타임아웃 이후 세션이 종료됩니다. TFTP 클라이언트와 서버가 TFTP 대화의 종료를 결정하지만 때로는 Fireware의 세션을 인식하지 못하는 경우가 있습니다. 따라서 이 시나리오에서 클라이언트와 서버가 새로운 TFTP 대화를 요청할 수 있습니다.
TFTP ALG 세션은 다음과 같은 방법으로 진행할 수 있습니다.
TFTP 제어 세션이 타임아웃에 도달하면 데이터 세션이 여전히 유지되는 경우 세션이 종료되지 않습니다.
TFTP 세션은 데이터 세션이 진행 중인지 여부에 관계없이 CLI 명령에 의해
clear security flow session all
clear specific session
종료되거나 손상될 수 있습니다.새로운 TFTP 세션 요청이 도착하여 기존 세션에 도달하면 TFTP ALG가 새 요청에 대해 핀홀을 다시 엽니다.
핀홀이 이미 존재하는 경우, TFTP ALG는 핀홀을 다시 열지 않으며 패킷 드롭이 없습니다.
TFTP ALG는 패킷을 드롭하지 않습니다.
TFTP ALG 대화 이해
기본적으로 TFTP 서버는 포트 69의 TFTP 클라이언트에서 수신 요청을 수신합니다. TFTP 클라이언트는 소스 터널 식별자(TID) 포트를 선택하고 초기 요청을 서버로 보냅니다. 이를 위해 서버는 선택한 TID를 소스 포트로 사용하고 클라이언트의 TID에 대상 포트로 응답을 보냅니다. 그런 다음, 2개의 TID 포트가 나머지 데이터 전송에 사용됩니다.
Read file conversation steps:
호스트 A(클라이언트)는 A의 TID를 소스로, 포트 69를 대상으로 RRQ 패킷을 호스트 B(서버)로 보냅니다.
호스트 B(서버)는 데이터 패킷을 전송하여 B의 TID를 소스로, A의 TID를 대상으로 하는 A(클라이언트)를 호스팅합니다.
호스트 A(클라이언트)는 A의 TID를 소스로, B의 TID를 대상으로 B(서버)를 호스팅하기 위해 ACK 패킷을 보냅니다.
데이터 및 ACK 패킷 대화는 파일 데이터 전송이 완료될 때까지 계속됩니다.
Write file conversation steps:
호스트 A(클라이언트)는 WRQ 패킷을 전송하여 A의 TID를 소스로, 포트 69를 대상으로 B(서버)를 호스팅합니다.
호스트 B(서버)는 ACK 패킷을 전송하여 B의 TID를 소스로, A의 TID를 대상으로 하는 A(클라이언트)를 호스팅합니다.
Host A(클라이언트)는 A의 TID를 소스로, B의 TID를 대상으로 하는 데이터 패킷을 호스트 B(서버)로 보냅니다.
호스트 B(서버)는 ACK 패킷을 전송하여 B의 TID를 소스로, A의 TID를 대상으로 하는 A(클라이언트)를 호스팅합니다.
TFTP ALG에 대한 IPv6 지원 이해
TFTP(Trivial File Transfer Protocol) ALG(Application Layer Gateway)는 소스 IP 주소와 대상 IP 주소 모두에 대한 IPv6 및 IPv4 주소가 있는 IPv6 및 IPv4 TFTP 대화를 지원하도록 향상되었습니다.
TFTP ALG는 라우팅 요청을 시작하는 패킷을 처리하고 핀홀을 생성하여 역방향에서 요청을 보낸 포트로 패킷을 반환할 수 있도록 합니다.
데이터 세션은 클라이언트에서 서버로의 첫 번째 패킷에 의해 설정됩니다. TFTP ALG는 첫 번째 패킷을 모니터링하고 서버의 모든 포트에서 클라이언트로 핀홀을 엽니다. 이 프로세스는 서버에서 패킷을 반환하고 후속 데이터 패킷을 통과하는 데 도움이 됩니다.
예: TFTP ALG 구성
TFTP ALG는 요청을 시작하는 TFTP 패킷을 처리하고 역방향에서 요청을 보내는 포트로 패킷을 반환할 수 있는 게이트를 엽니다.
이 예에서는 주니퍼 네트웍스 디바이스의 소스 NAT 풀을 사용하여 TFTP 트래픽을 통과하도록 TFTP ALG를 구성하는 방법을 보여줍니다.
요구 사항
소스 NAT 풀의 모든 IP 주소에 대해 프록시 ARP를 구성합니다.
TFTP ALG의 기본 개념을 이해합니다. TFTP ALG 이해하기를 참조하십시오.
개요
이 예에서는 TFTP ALG가 TFTP 트래픽을 모니터링 및 허용하도록 구성되어 주니퍼 네트웍스 장비의 반대편에 있는 클라이언트와 서버 간에 파일을 전송합니다.
구성
NAT 소스 풀, 규칙 집합 및 정책 구성
CLI 빠른 구성
예제의 이 섹션을 신속하게 구성하려면 다음 명령을 복사하여 텍스트 파일에 붙여넣고, 줄 바꿈을 제거하고, 네트워크 구성에 필요한 세부 정보를 변경하고, 명령을 계층 수준에서 CLI [edit]
에 복사하여 붙여넣은 다음 구성 모드에서 입력 commit
합니다.
set security nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32 set security zones security-zone green address-book address sa1 1.1.1.0/24 set security zones security-zone red address-book address da1 2.2.2.0/24 set security nat source rule-set rs1 from zone green set security nat source rule-set rs1 to zone red set security nat source rule-set rs1 rule r1 match source-address 1.1.1.0/24 set security nat source rule-set rs1 rule r1 match destination-address 2.2.2.0/24 set security nat source rule-set rs1 rule r1 then source-nat pool pool1
set security policy from-zone green to-zone red policy pol1 match destination-address da1 set security policy from-zone green to-zone red policy pol1 match source-address sa1 set security policy from-zone green to-zone red policy pol1 match application junos-tftp set security policy from-zone green to-zone red policy pol1 then permit
TFTP 클라이언트 및 서버 IP 주소를 모르는 경우 "da1"과 "sa1"을 "any"로 대체할 수 있습니다.
단계별 절차
다음 예제에서는 구성 계층에서 다양한 레벨을 탐색해야 합니다. 그 방법에 대한 지침은 CLI 사용자 가이드의 Configuration 모드에서 CLI Editor를 사용하는 것을 참조하십시오.
소스 NAT 풀을 구성하려면 다음을 수행합니다.
NAT 소스 풀을 만듭니다.
[edit security] user@host# set nat source pool pool1 address 10.10.10.1/32 to 10.10.10.10/32
보안 존 주소록 항목을 구성합니다.
[edit security zones security-zone] user@host# set green address-book address sa1 1.1.1.0/24 user@host# set red address-book address da1 2.2.2.0/24
NAT 소스 규칙 집합을 만듭니다.
[edit security nat source rule-set rs1] user@host# set from zone green user@host# set to zone red user@host# set rule r1 match source-address 1.1.1.0/24 user@host# set rule r1 match destination-address 2.2.2.0/24 user@host# set rule r1 then source-nat pool pool1
정책 구성
[edit security policies from-zone green to-zone red policy pol1] user@host# set match source-address sa1 user@host# set match destination-address da1 user@host# set match application junos-tftp user@host# set then permit
결과
구성 모드에서 명령과 show security policies
명령을 입력하여 구성을 show security nat
확인합니다. 출력이 의도한 구성을 표시하지 않는 경우 이 예제의 구성 지침을 반복하여 수정합니다.
[edit] user@host# show security nat source { pool pool1 { address { 10.10.10.1/32 to 10.10.10.10/32; } } rule-set rs1 { from zone green; to zone red; rule r1 { match { source-address 1.1.1.0/24; destination-address 2.2.2.0/24; } then { source-nat { pool { pool1; } } } } }
[edit] user@host# show security policies from-zone green to-zone red {policy pol1 { policy pol1 { match { source-address sa1; destination-address da1; application [junos-tftp]; } then { permit; } } } default-policy { permit-all; }
디바이스 구성을 완료한 경우 구성 모드에서 입력 commit
합니다.
확인
구성이 올바르게 작동하는지 확인합니다.
NAT 소스 풀 및 규칙 세트 검증
목적
TFTP ALG를 지원하는 데 사용되는 NAT 소스 풀 및 규칙 집합이 제대로 작동하는지 확인합니다.
행동
운영 모드에서 명령을 입력합니다 show security nat static rule r1
.