맨위로가기

오픈VPN

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

OpenVPN은 OpenSSL 라이브러리를 사용하여 암호화 기능을 제공하는 오픈 소스 가상 사설망(VPN)이다. UDP 또는 TCP 전송을 통해 실행되며, TUN/TAP 인터페이스를 지원하여 IP 터널 또는 이더넷 트래픽 전송이 가능하다. 사전 공유 키, 인증서, 사용자 이름/비밀번호 기반 인증을 지원하며, 플러그인으로 기능을 확장할 수 있다. 솔라리스, 리눅스, macOS, 윈도우 등 다양한 운영체제를 지원하며, 라우터 펌웨어 및 소프트웨어에도 통합되어 있다. OpenVPN은 커뮤니티 에디션과 유료 버전인 액세스 서버로 제공된다.

더 읽어볼만한 페이지

  • 터널링 프로토콜 - IPsec
    IPsec은 IP 네트워크에서 보안 통신을 제공하기 위한 프로토콜 스위트로서, 전송 모드와 터널 모드를 지원하며, AH, ESP 등의 프로토콜을 사용하여 데이터 무결성, 인증, 기밀성을 제공하고, IKE 프로토콜을 통해 보안 연결을 설정 및 키를 교환하는 개방형 표준이다.
  • 터널링 프로토콜 - PPPoE
    PPPoE는 이더넷을 통해 PPP 연결을 설정하는 네트워크 프로토콜로, DSL과 같은 광대역 환경에서 클라이언트-서버 모델로 동작하며, 사용자의 컴퓨터를 ISP에 연결하는 데 사용되고, 디스커버리 및 PPP 세션 단계를 거쳐 연결을 설정하며 전 세계에서 널리 쓰인다.
  • 가상사설망 - IPsec
    IPsec은 IP 네트워크에서 보안 통신을 제공하기 위한 프로토콜 스위트로서, 전송 모드와 터널 모드를 지원하며, AH, ESP 등의 프로토콜을 사용하여 데이터 무결성, 인증, 기밀성을 제공하고, IKE 프로토콜을 통해 보안 연결을 설정 및 키를 교환하는 개방형 표준이다.
  • 가상사설망 - 계층 2 터널링 프로토콜
    계층 2 터널링 프로토콜(L2TP)은 두 네트워크 노드 간 터널을 생성하여 데이터를 전송하는 데 사용되는 네트워크 프로토콜로, L2F와 PPTP에서 비롯되어 RFC 2661로 표준화되었으며, 자체 보안 기능이 없어 IPsec과 함께 사용되어 L2TP/IPsec으로 보안을 강화한다.
  • 자유 보안 소프트웨어 - 클램윈
    클램윈은 ClamAV 엔진 기반의 오픈 소스 백신 소프트웨어로, 트로이 목마, 바이러스, 멀웨어 등 다양한 악성 위협 분석 자료를 제공하며 예약 검사, 수동 검사, 컨텍스트 메뉴 통합 등의 기능을 지원하지만 실시간 감시 기능은 제공하지 않는다.
  • 자유 보안 소프트웨어 - OpenSSL
    OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다.
오픈VPN - [IT 관련 정보]에 관한 문서
일반 정보
OpenVPN 로고
OpenVPN 로고
저자제임스 요난
개발자OpenVPN 프로젝트 / OpenVPN Inc.
최초 출시일2001년 5월 13일
최신 안정화 버전2.6.8
최신 안정화 버전 출시일2023년 11월 17일
자주 업데이트됨
프로그래밍 언어C
운영 체제Windows 7 이상
OS X 10.8 이상
Android 4.0 이상
iOS 6 이상
Linux
*BSD
장르VPN
라이선스GNU GPLv2
웹사이트OpenVPN 공식 웹사이트
인터넷 보안 프로토콜
키 관리Kerberos

PKIX
Web of trust
X.509
애플리케이션 계층DKIM
DMARC
HTTPS
PGP
Sender ID
SPF
S/MIME
SSH
TLS/SSL
DNSDANE
DNSSEC
DNS over HTTPS
DNS over TLS
CAA
DNSCrypt
인터넷 계층IKE
IPsec
L2TP
OpenVPN
PPTP
WireGuard

2. 아키텍처

OpenVPN은 공개 키 인증서, 사용자 이름/비밀번호 또는 사전에 공유한 비밀 키를 사용하여 피어 투 피어 상호 인증을 수행한다. OpenSSLSSLv3/TLSv1 통신 프로토콜을 이용하며, Solaris, Linux, OpenBSD, FreeBSD, NetBSD, macOS, Windows 등 다양한 운영체제에서 동작한다. 다른 VPN 시스템과의 연결은 지원하지 않으며, 클라이언트 측과 서버 측 모두 하나의 바이너리와 옵션인 설정 파일로 구성된다. 사용하는 인증 방식에 따라 몇 개의 키 파일이 필요하다.

OpenVPN의 주요 구성 요소는 다음과 같다.


  • 인증: 피어 투 피어 상호 인증을 위해 사전 공유 키, 공개 키 인증서, 사용자 이름/비밀번호 방식을 사용한다.
  • 암호화: OpenSSL 라이브러리를 사용하여 데이터 및 제어 채널을 암호화한다. HMAC 패킷 인증을 통해 추가 보안 계층을 제공하며, 하드웨어 가속을 지원한다.
  • 네트워킹: 사용자 데이터그램 프로토콜(UDP) 또는 전송 제어 프로토콜(TCP) 전송을 사용하며, 단일 TCP/UDP 포트에서 SSL 터널을 다중화한다. IPv6를 지원하며, 대부분의 프록시 서버네트워크 주소 변환(NAT) 환경에서 작동한다.
  • 보안: OpenSSL을 통한 암호화, 완전 순방향 비밀성(PFS)을 지원한다. 사용자 공간에서 실행되며, 루트 권한 삭제, 민감한 데이터 스와핑 방지 등의 기능을 제공한다.
  • 확장성: 타사 플러그인 또는 스크립트를 통해 기능을 확장할 수 있다.


OpenVPN의 헤더 형식은 아래 표와 같다.

OpenVPN 헤더 형식
오프셋옥텟0123
옥텟비트012345678910111213141516171819202122232425262728293031
00OpcodeKeyID세션 ID
432세션 ID
864세션 IDHMAC
1296HMAC
24192
28224HMAC패킷 ID
32256패킷 ID네트워크 시간
36288네트워크 시간메시지 배열 길이메시지 패킷 ID #


2. 1. 암호화

OpenVPN은 OpenSSL 라이브러리를 사용하여 데이터 채널과 제어 채널 모두에 대한 암호화를 제공한다. OpenSSL이 모든 암호화 및 인증 작업을 수행하므로, OpenVPN은 OpenSSL 패키지에서 사용할 수 있는 모든 암호를 사용할 수 있다. 또한 HMAC 패킷 인증 기능을 사용하여 연결에 추가적인 보안 계층을 추가할 수 있다(제작자는 "HMAC 방화벽"이라고 함). 하드웨어 가속을 사용하여 암호화 성능을 향상시킬 수도 있다.[14][15] mbed TLS 지원은 버전 2.3부터 사용할 수 있다.[16]

2. 2. 인증

OpenVPN은 사전 공유 키, 공개 키 인증서, 사용자 이름/비밀번호를 사용하여 피어 투 피어 상호 인증을 수행한다. 사전 공유 키가 가장 간단하며, 인증서 기반 인증이 가장 강력하고 기능이 풍부하다. 버전 2.0부터는 인증서 유무에 관계없이 사용자 이름/비밀번호 인증을 활성화할 수 있다. 그러나 사용자 이름/비밀번호 인증을 사용하려면 OpenVPN은 타사 모듈에 의존해야 한다.[1]

2. 3. 네트워킹

OpenVPN은 사용자 데이터그램 프로토콜(UDP) 또는 전송 제어 프로토콜(TCP) 전송을 통해 실행될 수 있으며, 단일 TCP/UDP 포트에서 생성된 SSL 터널을 다중화한다.[17] 2.3.x 버전부터 OpenVPN은 터널 내부 가상 네트워크의 프로토콜로 IPv6를 완벽하게 지원하며, OpenVPN 응용 프로그램은 IPv6를 통해 연결을 설정할 수도 있다.[19] 대부분의 프록시 서버(HTTP 포함)를 통해 작동할 수 있으며 네트워크 주소 변환(NAT)을 거쳐 방화벽을 통과하는 데 능숙하다. 서버 설정은 특정 네트워크 설정 옵션을 클라이언트에 "푸시"하는 기능을 가지고 있는데, IP 주소, 라우팅 명령 및 몇 가지 연결 옵션이 포함된다.

OpenVPN은 TUN/TAP을 통해 네트워킹을 위한 두 가지 유형의 인터페이스를 제공한다. 레이어 3 기반 IP 터널(TUN) 또는 모든 유형의 이더넷 트래픽을 전송할 수 있는 레이어 2 기반 이더넷 TAP를 생성할 수 있다. OpenVPN은 선택적으로 LZO 압축 라이브러리를 사용하여 데이터 스트림을 압축할 수 있다. IANA에서 OpenVPN에 공식 할당한 포트 번호는 1194이며, 최신 버전의 프로그램은 해당 포트를 기본값으로 사용한다. 2.0 버전의 기능은 1.x 시리즈의 "프로세스당 하나의 터널" 제한과 달리 하나의 프로세스가 여러 개의 동시 터널을 관리할 수 있도록 한다.

OpenVPN이 터널을 설정하기 위해 전송 제어 프로토콜 (TCP) 전송을 사용하는 경우, 터널링되지 않은 네트워크 링크에 터널링된 TCP 타이머가 만료되지 않도록 보장할 수 있을 만큼 충분한 초과 대역폭이 있는 경우에만 성능이 허용된다.[21] 이 조건이 충족되지 않으면 TCP 멜트다운 문제로 인해 성능이 급격히 저하된다.[22][23]

2. 4. 보안

OpenSSL 라이브러리를 통해 최대 256비트 암호화를 제공하며, 완전 순방향 비밀성(PFS)을 지원하여 정해진 간격으로 암호화 키를 다시 생성한다.[24] ChaCha20 및 AES-256과 같은 다양한 암호화 암호를 사용하여 구성할 수 있다. IP 스택(따라서 커널) 작동이 필요하지 않고 사용자 공간에서 실행된다. 루트 권한 삭제, [http://www.opengroup.org/onlinepubs/009695399/functions/mlockall.html mlockall]을 사용한 민감한 데이터 스와핑 방지, 초기화 후 chroot 감옥에 들어가기, 초기화 후 SELinux 컨텍스트 적용 등의 기능을 사용할 수 있다.

SSL 및 TLS[10]를 기반으로 하는 사용자 정의 보안 프로토콜을 실행하며, IKE, IPsec, L2TP 또는 PPTP는 지원하지 않는다.

PKCS#11 기반 암호화 토큰을 통해 스마트 카드를 지원한다.

2. 5. 확장성

OpenVPN은 정의된 진입점에서 호출할 수 있는 타사 플러그인 또는 스크립트로 확장할 수 있다.[25][26] 이는 고급 로깅, 향상된 인증, 동적 방화벽 업데이트, RADIUS 통합 등에 활용된다. 플러그인은 동적으로 로드 가능한 모듈이며, 일반적으로 C로 작성된다. OpenVPN 소스 코드[27]에는 PAM 인증 플러그인을 포함하여 여러 플러그인 예제가 포함되어 있다. LDAP, SQLite, MySQL 등 다양한 인증 백엔드를 지원하는 타사 플러그인이 존재한다.[28]

2. 6. 헤더

OpenVPN 헤더 형식
오프셋옥텟0123
옥텟비트012345678910111213141516171819202122232425262728293031
00OpcodeKeyID세션 ID
432세션 ID
864세션 IDHMAC
1296HMAC
24192
28224HMAC패킷 ID
32256패킷 ID네트워크 시간
36288네트워크 시간메시지 배열 길이메시지 패킷 ID #


3. 플랫폼

OpenVPN은 OpenSSLSSLv3/TLSv1 통신 프로토콜을 이용하여 피어 투 피어 상호 인증을 수행한다.[29] 웹 페이지로 표시되는 "웹 기반" VPN (예: Citrix, 터미널 서비스 웹 액세스)이 아니며, IPsec을 사용하는 VPN 클라이언트(L2TP, PPTP 프로토콜을 통해)와 호환되지 않는다. 전체 패키지는 클라이언트 및 서버 연결 모두에 대한 하나의 바이너리 파일, 선택적 구성 파일과 사용된 인증 방식에 따라 하나 이상의 키 파일로 구성된다.[29]

3. 1. 지원 운영체제

솔라리스, 리눅스, OpenBSD, FreeBSD, NetBSD, QNX, macOS 및 윈도우 XP 이상에서 사용할 수 있다.[29] Maemo,[30] 윈도우 모바일 6.5 이하,[31] iOS 3GS+ 기기,[32] 탈옥된 iOS 3.1.2+ 기기,[33] 안드로이드 4.0+ 기기[34]를 포함한 모바일 운영 체제용으로도 사용할 수 있다.[35] Palm OS를 포함한 일부 휴대폰 OS와는 호환되지 않는다.

3. 2. 펌웨어 구현

OpenVPN은 여러 라우터 펌웨어 패키지에 통합되어 사용자가 네트워크 라우터에서 클라이언트 또는 서버 모드로 OpenVPN을 실행할 수 있도록 한다. 예를 들어, 클라이언트 모드에서 OpenVPN을 실행하는 라우터를 사용하면 OpenVPN을 설치할 수 있는 기능 없이도 네트워크의 모든 장치가 VPN에 액세스할 수 있다.[50][51][52][53][54][55]

OpenVPN 통합 기능이 있는 주목할 만한 펌웨어 패키지는 다음과 같다.

OpenVPN 통합 기능이 있는 주목할 만한 펌웨어 패키지
펌웨어 패키지비용개발자참고
DD-WRT무료NewMedia-NET GmbH[36]
Gargoyle무료Eric Bishop[37]
OpenWrt무료커뮤니티 주도 개발[38]
OPNsense무료Deciso BV[39]
pfSense무료Rubicon Communications, LLC (Netgate)
Tomato무료Keith Moyer[40][41]



OpenVPN은 일부 제조업체 라우터 펌웨어에도 구현되어 있다.

3. 3. 소프트웨어 구현

OpenVPN은 오픈 소스 다중 프로토콜 VPN 서버인 소프트이더 VPN에 통합되어 사용자가 기존 OpenVPN 클라이언트에서 VPN 서버에 연결할 수 있도록 지원한다.[1]

OpenVPN은 또한 VyOS에 통합되어 있으며, 이는 Vyatta 소프트웨어 라우터에서 파생된 오픈 소스 라우팅 운영 체제이다.[1]

4. 라이선스

OpenVPN은 두 가지 버전으로 제공된다.


  • OpenVPN 커뮤니티 에디션은 무료이며 오픈 소스 버전이다.
  • OpenVPN 액세스 서버(OpenVPN-AS)는 커뮤니티 에디션을 기반으로 하지만, LDAP 통합, SMB 서버, 웹 UI 관리와 같은 추가적인 유료 및 독점 기능을 제공하며, VPN 원격 액세스 솔루션의 신속한 배포를 단순화한다고 알려진 일련의 설치 및 구성 도구를 제공한다.[42][43] 액세스 서버 에디션은 iptables를 사용하여 부하 분산을 크게 의존하며, 이러한 이유로 Windows에서는 제공되지 않는다. 이 버전은 또한 특정 액세스 서버 인스턴스에 연결하기 위한 클라이언트 프로필을 포함하는 클라이언트("OpenVPN Connect") 설치 프로그램을 동적으로 생성할 수 있다.[44] 하지만 사용자는 액세스 서버 인스턴스에 연결하기 위해 액세스 서버 클라이언트를 가질 필요는 없으며, OpenVPN 커뮤니티 에디션의 클라이언트를 사용할 수 있다.[45]

참조

[1] 웹사이트 OpenVPN Change Log https://github.com/O[...]
[2] 웹사이트 Downloads https://openvpn.net/[...] 2023-01-27
[3] 웹사이트 Private Tunnel VPN - Android Apps on Google Play https://play.google.[...]
[4] 웹사이트 Private Tunnel VPN https://itunes.apple[...] 2014-10-23
[5] 웹사이트 How to connect to Access Server from a Linux computer https://openvpn.net/[...]
[6] 웹사이트 FreeBSD Ports Search https://www.freebsd.[...]
[7] 웹사이트 OpenBSD Ports http://openports.se/[...]
[8] 웹사이트 The NetBSD Packages Collection: net/openvpn http://ftp.netbsd.or[...]
[9] 웹사이트 openvpn_COPYING at master · OpenVPN_openvpn https://github.com/O[...] 2019-07-30
[10] 웹사이트 OpenVPN Security Overview http://openvpn.net/i[...] 2011-09-28
[11] 웹사이트 6 open source tools for making your own VPN 2018-08-31
[12] 웹사이트 OpenVPN: An Introduction and Interview with Founder, James Yonan http://www.linuxsecu[...] LinuxSecurity.com
[13] 웹사이트 openvpn.net: Pricing https://openvpn.net/[...] 2018-12-12
[14] 서적 Network Security Hacks: Tips & Tools for Protecting Your Privacy https://books.google[...] "O'Reilly Media, Inc."
[15] 서적 IPv6 Deployment Guide https://books.google[...] Javvin Technologies Inc.
[16] 웹사이트 ChangesInOpenvpn23 - OpenVPN Community https://community.op[...] Overview of changes in OpenVPN v2.3
[17] 문서 OpenVPN man page, section "TLS Mode Options"
[18] 서적 User Centric Media: First International Conference, UCMedia 2009, Venice, Italy, December 9-11, 2009, Revised Selected Papers https://books.google[...] Springer Science & Business Media
[19] 웹사이트 OpenVPN community wiki https://community.op[...] IPv6 in OpenVPN 2013-12-08
[20] 웹사이트 OpenVPN VPN Protocol https://privacyhq.co[...] 2021-06-24
[21] 웹사이트 OPENVPN MTU: Finding The Correct Settings https://www.thegeekp[...] 2021-03-20
[22] 웹사이트 Why TCP Over TCP Is A Bad Idea http://sites.inka.de[...] 2001-04-23
[23] conference Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency 2005-10
[24] 웹사이트 OpenVPN explained: Definition, how it works, and safety {{!}} NordVPN https://nordvpn.com/[...] 2023-11-29
[25] 웹사이트 OpenVPN script entry points http://openvpn.net/i[...] Openvpn.net 2012-07-30
[26] 웹사이트 OpenVPN plug-in entry points for C based modules https://web.archive.[...]
[27] 웹사이트 OpenVPN example plug-ins http://openvpn.git.s[...] Openvpn.git.sourceforge.net 2012-07-30
[28] 웹사이트 OpenVPN Community Wiki - Related Projects https://community.op[...]
[29] 웹사이트 Downloads https://openvpn.net/[...] OpenVPN 2015-08-06
[30] 웹사이트 OpenVPN Maemo package http://maemo.org/dow[...] Maemo.org 2012-07-30
[31] 웹사이트 OpenVPN for PocketPC http://ovpnppc.ziggu[...] Ovpnppc.ziggurat29.com 2007-04-01
[32] 웹사이트 OpenVPN Connect https://itunes.apple[...] OpenVPN Technologies 2013-01-16
[33] 웹사이트 GuizmOVPN - OpenVPN GUI for iPhone/iPad http://guizmovpn.com guizmovpn.com 2007-09-30
[34] 웹사이트 CHANGELOG at eclair from CyanogenMod's android_vendor_cyanogen http://github.com/Cy[...] cyanogen 2010-07-07
[35] 웹사이트 How to setup and configure OpenVPN on Android rooted device | VPN blog is actual information about VPN https://web.archive.[...]
[36] 문서 OpenVPN https://wiki.dd-wrt.[...] dd-wrt.com
[37] 문서 Gargoyle Wiki - OpenVPN https://www.gargoyle[...]
[38] 웹사이트 OpenVPN - OpenWrt Wiki https://openwrt.org/[...] openwrt.org 2018-06-11
[39] 웹사이트 opnsense.org - OPNsense 17.1 Release Announcement https://opnsense.org[...]
[40] 웹사이트 TomatoVPN http://tomatovpn.kei[...] Tomatovpn.keithmoyer.com 2012-07-30
[41] 문서 VPN build with Web GUI http://www.linksysin[...] LinksysInfo.org
[42] 웹사이트 OpenVPN Product Comparison https://openvpn.net/[...] 2017-01-15
[43] 웹사이트 What is OpenVPN Access Server (OpenVPN-AS)? https://openvpn.net/[...] 2017-01-15
[44] 웹사이트 Regarding chocolatey.org repository · Issue #2 · wget/chocolatey_package_openvpn https://github.com/w[...] 2017-01-16
[45] 웹사이트 Can I use a community OpenVPN client to connect to the Access Server? https://openvpn.net/[...] 2017-01-16
[46] 문서 OpenVPN Change Log https://openvpn.net/[...] OpenVPN
[47] 웹인용 Community Downloads https://openvpn.net/[...] 2023-11-25
[48] 웹인용 OpenVPN Security Overview http://openvpn.net/i[...] 2011-09-28
[49] 문서 OpenVPN: An Introduction and Interview with Founder, James Yonan http://www.linuxsecu[...] LinuxSecurity.com
[50] 문서 OpenVPN http://www.dd-wrt.co[...] dd-wrt.com
[51] 문서 Gargoyle Wiki - OpenVPN https://www.gargoyle[...]
[52] 웹인용 OpenVPN (Server Setup) - OpenWrt Wiki https://openwrt.org/[...] openwrt.org 2018-06-11
[53] 웹인용 opnsense.org - OPNsense 17.1 Release Announcement https://opnsense.org[...]
[54] 웹인용 TomatoVPN http://tomatovpn.kei[...] Tomatovpn.keithmoyer.com 2012-07-30
[55] 문서 VPN build with Web GUI http://www.linksysin[...] LinksysInfo.org



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com