OpenVPN
1. 개요
OpenVPN이란 OpenVPN Technologies, Inc.에서 제작하고 배포하는 오픈소스 VPN 프로토콜과 그 접속 프로그램을 말한다. 홈페이지
2. 프로토콜로서의 OpenVPN
TCP와 UDP 프로토콜을 모두 이용 가능한 오픈소스 VPN 프로토콜로서, TAP 또는 TUN 가상 네트워크 어뎁터를 이용해 VPN 연결을 수립한다.
SSL이나 TLS를 이용하여 패킷을 암호화하기 때문에 유효한 CA 인증서가 필요하다. 다만, 굳이 신뢰할 수 있는 CA를 이용하지 않아도 연결에는 문제가 없기 때문에 많은 개인 이용자들은 OpenSSL과 같은 프로그램을 이용해 자가 인증된 인증서를 이용해 VPN 서버를 생성하기도 한다.
L2TP나 PPTP가 막혀 있는 곳에서도 OpenVPN은 연결될 가능성이 높다.
다만 방화벽이 패킷을 일일히 다 까보는 애플리케이션 방화벽이라면 답이 없다. 특히 인터넷 검열에 적극적인 중국과 이집트에선 2013년에 이미 막혔다. 이런 환경에서 OVPN을 쓰려면 cipher를 AES-256-CFB로 설정하거나, SSL 또는 SSH[1] 터널(stunnel 등)로 감싸 주거나, XOR 패치를 쓰거나, Obfsproxy 등의 위장을 갖출 필요가 있다.
3. 프로그램으로서의 OpenVPN
OpenVPN 서버를 구축하거나 서버에 접속할 때 쓰인다. 확장자가 ovpn인 OpenVPN 설정 파일을 읽어들여 동작하는데, 설정 파일은 서버와 클라이언트가 다르지만 확장자는 같아 헷갈릴 수 있다.
클라이언트는 자체적으로 인증서를 읽어올 수 있어 별도로 인증서를 설치하지 않아도 동작한다.
OpenVPN 서버는 무료/오픈소스(GPL)인 OpenVPN Community Edition과, 웹GUI같은 추가 기능을 더 제공하는 유료 OpenVPN Access Server의 2종류가 있다.
OpenVPN Community Edition은 기본적으로 별도의 설정용 GUI를 제공하지 않으므로 커맨드라인과 텍스트 파일만을 이용해서 서버를 구축해야 한다. 하지만 인터넷에서 설정 방법을 얼마든지 찾을 수 있고, DD-WRT와 같은 커스텀 펌웨어가 적용된 라우터와 같이 서드파티 wrapper를 만들어 GUI상에서 서버 구축을 할 수 있도록 해 놓은 경우도 있다.
한편, OpenVPN 클라이언트는 안드로이드(4.0 이상)와 iOS에서 사용할 수 있으며, 대부분의 데스크톱 운영체제를 지원한다. 다만, 현대 모바일 운영체제 중 윈도우폰(7, 8, 10 모두)이나 블랙베리 OS 10, 타이젠에서는 사용 불가. Sailfish OS에서는 서드파티 앱으로 지원한다.
[1] 단 SSH는 식별 가능하므로 대량의 트래픽을 보내기에 매우 부적합하다.