본 문서는 RFC 5389를 번역하였습니다. 오역이 있다면 알려주시면 감사하겠습니다 :D

Abstract

Session Traversal Utilities for NAT, STUN 은 Network Address Translator, NAT 를 처리할 때 다른 프로토콜들의 도구역할을 하는 프로토콜이다. STUN은 엔드포인트가 NAT로 부터 할당되는 IP 주소와 Port를 정하는 용도로 사용될 수 있다. 그리고 NAT 바인딩을 유지하는 keep-alive protocol 로써 두 엔드포인트간에 연결성을 체크할때 사용될 수 있다. STUN은 기존의 많은 NAT들과 같이 작동하며 특별한 행동을 요구하지는 않는다.

STUN은 그 자체로 NAT traversal 에 대한 솔루션은 아니다. 정확히 말하자면 그것은 NAT traversal 솔루션의 컨텍스트에서 사용되는 하나의 도구이다.이것은 전 버전의 명세에서는 STUN이 완전한 솔루션으로 표현되었던 것에 비하여 중요한 변화이다.

이 문서는 RFC 3489 를 준수한다

Introduction

STUN은 NAT들을 처리하는 도구, 엔드포인트의 사설 IP 주소와 포트에 해당하는 NAT로 부터 할당 받은 IP 주소와 포트를 결정케 하는 수단을 제공한다. 또한 엔드포인트가 NAT 바인딩을 유지할 수 있도록 하는 방법을 제공하기도 한다. 일부 확장이 있으면 두 엔드포인트의 연결성을 검사하거나 사이에서 패킷을 릴레이하는 데에 사용될 수 있다.

이 명세는 이 도구의 본질을 유지하면서 확장 가능한 패킷 포맷과 여러 전송프로토콜에 대한 작업을 정의하고 두 가지 형태의 인증 형식을 제공한다.

STUN은 하나 이상의 NAT Traversal 솔루션의 컨텍스트에서 사용된다. 이 솔루션들은 STUN usages라고 알려져있다. 각각의 usage는 NAT traversal 솔루션을 위한 STUN 활용법에 대해 설명한다. 보통 하나의 usage은 STUN이 언제 메시지를 전송하는지, 포함할 추가적인 속성들, 어떤 서버가 사용되고 어떤 인증매커니즘이 사용되는지를 나타낸다. Interactive Connectivity Establishment, ICE는 STUN의 한 usage이다. SIP Outbound는 또다른 usage이다. 어떤 경우에는 하나의 usage는 STUN에게 확장을 요구할 수도 있다. STUN 확장은 새로운 방법, 속성, 에러코드들의 형태일수 있다. STUN usage더 자세한 내용은 Section 14에서 찾을 수 있다.

Evolution from RFC 3489

STUN은 원래 RFC 3489에서 정의되었었다. 그 명세에서는 classic STUN이라고도 하며, NAT traversal 문제의 완변학 솔루션으로 설명됐었다. 그 솔루션에서는 클라이언트가 NAT뒤에 있는가를 보고 NAT 타입을 결정하여 가장 밖에 있는 NAT의 public-side에서 IP 주소와 Port를 검색한 다음 Session Initiation Protocol, SIP 같은 프로토콜 본문 내에서 해당 IP주소와 Port를 활용한다. 그렇지만 RFC 3489 발행 이후의 경험에 따르면 classic STUN은 배포 가능한 솔루션이 될만큼 충분히 잘 작동하지 않았다. classic STUN을 통해 얻은 주소와 포트는 피어 간에 소통에 사용될 수 있었고 사용되지 않을 때도 있었다. classic STUN은 실제로 그것이 작동할지 안 할지를 확인 할 수 있는 방법을 제공하지 않았고 작동하지 않을 경우의 해결책을 제공하지도 않았다. 더 나아가서 많은 NAT들이 거기서 정의된 타입들에 깔끔히 들어맞지도 않아, NAT types를 분류하기 위한 classic STUN의 알고리즘이 불완전하다는 것이 밝혀졌다. 또한 classic STUN에 보안적인 취약점 또한 가지고 있었다. 공격자는 특정 토폴로지와 제약 조건하에 클라이언트에게 사실이 아닌 매핑 주소를 제공할 수 있었고 이것은 어떤 암호학적인 수단으로 해결할수 없는 근본적인 문제였다. 비록 이 문제가 남아있지만, 그 공격들을 STUN을 이용한 더 완벽한 솔루션을 사용함으로써 완화시켜가고 있다.

이러한 이유로 인해, 이 명세는 RFC 3489를 준수하며 대신에 STUN을 완전한 NAT traversal 솔루션의 일부로사용될수 있는 하나의 툴로써 설명하고 있다. ICE는 SIP 같이 offer/answer 방법론에 기반한 하나의 NAT traversal의 완전한 솔루션이다. SIP Outbound 는 SIP 신호를 통과하게 하는 완전한 솔루션이고 STUN을 매우 다른 방식으로 사용한다. 프로토콜 자체로 STUN을 traversal 솔루션으로 사용할 수 있을지는 모르지만 그러한 사용법은 여기서 설명되지 않을 것이고 위에서 설명한 이유로 강하게 반대한다.

여기서 설명하는 통신 프로토콜은 classic STUN에서 약간만 바뀐 것이다. 그 프로토콜은 이제 TCP, UDP 위에서도 실행된다. 확장성은 좀 더 체계적인 방법으로 프로토콜에 추가됐었다.

영어는 영어로 놔두자, 읽고 다시 정리하겠다.