Friday, September 26, 2014

TURN 서버 설치

TURN 서버란?
TURN 서버는 Traversal Using Relays around NAT의 줄임말로 간단히 이야기 하자면 미디어 스트림을 Relay하는 Relay Server입니다. TURN 서버는 STUN 서버와 같이 WebRTC 어플리케이션에서 Firewall/NAT 문제를 해결할 때 사용되며 TURN 서버의 프로토콜에 대한 자세한 사항은 RFC 5766에 기술되어 있으니 참조바랍니다. (http://tools.ietf.org/html/rfc5766)

  • TURN 서버 설치 전에 필요한 것
    • CentOS 6.5 (64-bit)가 설치된 시스템 (또는 VM)
    • 최신 버전의 'libevent' 라이브러리 다운로드, 빌드, 인스톨
      • Download libevent from its github: https://github.com/libevent/libevent
      • tar xvfz libevent-[latest-version].tar.gz
      • cd libevent-[latest-verstion]
      • ./configure
      • make
      • make install 
  • TURN 서버 다운로드
    • 웹사이트: https://code.google.com/p/rfc5766-turn-server/wiki/newDownloadsSite?tm=2
    • 예: turnserver-3.2.3.94-CentOS6.5-x86_64.tar.gz (이 블로그에서는 이 패키지를 사용해서 설명하겠습니다.)

  • TURN 서버 빌드와 인스톨
    • 다운로드 받은 패키지를 '/opt' 폴더로 이동 후 압축해제
      •  mv turnserver-3.2.3.94-CentOS6.5-x86-64.tar.gz /opt
      • tar xvfz turnserver-3.2.3.94-CentOS6.5-x86-64.tar.gz
    • 압축을 푼 패키지의 폴더로 이동한 후 TURN 서버를 인스톨
      • cd turnserver-3.2.3.94-CentOS6.5-x86-64
      • ./install.sh
  • Long term credential 정보 추가
    • '/etc/turnserver/' 폴더에 생성된 'turnuserdb.conf' 파일에 'long term credential' (긴 기간 인증) 정보를 추가 (아래의 turnuserdb.conf 예 참조)
  • TURN 서버 시작
    • TURN 서버를 아래와 같은 옵션과 함께 시작
      • turnserver -v -a -r -n --userdb=/etc/turnserver/turnuserdb.conf
  • Sources
  • turnuserdb.conf의 예

#This file can be used as user accounts storage for long-term credentials 
#mechanism.
#
#username1:key1
#username2:key2
# OR:
Isley:abcd1234
#username1:password1
#username2:password2
#
# Keys must be generated by turnadmin utility. The key value depends
# on user name, realm, and password:
#
# Example:
# $ turnadmin -k -u ninefingers -r north.gov -p youhavetoberealistic
# Output: 0xbc807ee29df3c9ffa736523fb2c4e8ee
# ('0x' in the beginning of the key is what differentiates the key from
# password. If it has 0x then it is a key, otherwise it is a password).
#
# The corresponding user account entry in the userdb file will be:
#
#ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee
# Or, equivalently (less secure):
#ninefingers:youhavetoberealistic
#



2 comments: