오픈 VPN

OpenVPN
오픈 VPN
OpenVPN logo.svg
원저작자제임스 요난
개발자OpenVPN 프로젝트 / OpenVPN Inc.
초기 릴리즈2001년 5월 13일, 21년 전(2001-05-13)[1]
안정된 릴리스2.5.6[2] (2022년 3월 22일, 4개월 전 (2022-03-22) [±]
저장소
기입처C
플랫폼
유형VPN
면허증.GNU GPLv2[10]
웹 사이트openvpn.net Edit this on Wikidata

OpenVPN은 Virtual Private Network(VPN; 가상프라이빗 네트워크) 시스템이며 루티드 또는 브리지드 설정 및 리모트액세스 퍼실리티에서 안전한 포인트 투 포인트 또는 사이트 투 사이트 접속을 확립하는 기술을 구현합니다.클라이언트 애플리케이션과 서버 애플리케이션을 모두 실장합니다.

OpenVPN을 통해 피어는 사전 공유 개인 키, 증명서 또는 사용자 이름/비밀번호를 사용하여 서로 인증할 수 있습니다.멀티클라이언트 서버 설정으로 사용하는 경우 서버는 서명과 인증국을 사용하여 모든 클라이언트의 인증증명서를 릴리스할 수 있습니다.

TLS 프로토콜뿐만 아니라 OpenSSL 암호화 라이브러리를 광범위하게 사용하며 많은 보안 및 제어 기능을 포함합니다.키 교환에 SSL/TLS를 사용하는 사용자 지정 보안[11] 프로토콜을 사용합니다.Network Address Translator(NAT; 네트워크주소 변환기) [citation needed]방화벽을 통과할 수 있습니다.

OpenVPN은 여러 시스템에 이식되어 내장되어 있습니다.예를 들어 DD-WRT에는 OpenVPN 서버 기능이 있습니다.멀티프로토콜 VPN 서버인 SoftEther VPN에도 OpenVPN [citation needed]프로토콜이 구현되어 있습니다.

James Yonan에 의해 작성되었으며 GNU General Public License 버전 2(GPLv2)[12]의 조건에 따라 출시된 자유 소프트웨어입니다.또한 상용 라이선스를 사용할 [13]수 있습니다.

아키텍처

암호화

OpenVPN은 OpenSSL 라이브러리를 사용하여 데이터 채널과 제어 채널을 모두 암호화합니다.이를 통해 OpenSSL은 모든 암호화 및 인증 작업을 수행하고 OpenVPN은 OpenSSL 패키지에서 사용할 수 있는 모든 암호를 사용할 수 있습니다., HMAC 패킷 인증 기능을 사용해 접속에 시큐러티 레이어를 추가할 수도 있습니다(작성자에 의해서 「HMAC 방화벽」이라고 불립니다).또한 하드웨어 액셀러레이션을 사용하여 암호화 [14][15]성능을 향상시킬 수 있습니다.mbed TLS 지원은 버전 2.[16]3 이후부터 사용할 수 있습니다.

인증

OpenVPN에는 서로 피어를 인증하는 여러 가지 방법이 있습니다.OpenVPN은 사전 공유 키, 증명서 기반 및 사용자 이름/패스워드 기반 인증을 제공합니다.사전 공유 개인 키가 가장 쉽고 증명서 기반은 가장 강력하고 기능이 [citation needed]풍부합니다.버전 2.0 에서는, 증명서의 유무에 관계없이, 유저명/패스워드 인증을 netable로 할 수 있습니다.단, 사용자 이름/패스워드 인증을 사용하려면 OpenVPN은 서드파티 [citation needed]모듈에 의존합니다.

네트워킹

OpenVPN은 UDP(사용자 데이터그램 프로토콜) 또는 Transmission Control Protocol(TCP) 트랜스포트 에서 실행할 수 있으며 생성된SSL 터널을 단일 TCP/UDP[17] 포트([18]UDP의 경우 RFC 3948)로 다중화할 수 있습니다.

2.3.x 시리즈 이후 OpenVPN은 터널 내 가상 네트워크의 프로토콜로서 IPv6를 완전히 지원하며 OpenVPN 애플리케이션도 IPv6 [19]경유로 접속을 확립할 수 있습니다.대부분의 프록시 서버(HTTP 포함)를 통해 동작할 수 있으며 Network Address Translation(NAT; 네트워크주소 변환)을 통해 동작하거나 방화벽을 통해 나가는 데 적합합니다.서버 구성에는 특정 네트워크 구성 옵션을 클라이언트에 "푸시"하는 기능이 있습니다.여기에는 IP 주소, 라우팅 명령 및 몇 가지 연결 옵션이 포함됩니다.OpenVPN은 Universal TUN/TAP 드라이버를 통한 네트워킹에 2종류의 인터페이스를 제공합니다.레이어 3 Based IP Tunnel(TUN; 레이어 3 베이스 IP 터널) 또는 임의의 유형의 이더넷트래픽을 전송할 수 있는 레이어2 베이스의 이더넷 TAP 중 하나를 작성할 수 있습니다.OpenVPN은 옵션으로 LZO 압축 라이브러리를 사용하여 데이터 스트림을 압축할 수 있습니다.포트 1194는 OpenVPN에 할당된 공식 IANA 포트 번호입니다.새로운 버전의 프로그램은, 디폴트로 그 포토가 됩니다.2.0 버전의 기능을 사용하면 1.x 시리즈의 원래 "프로세스당 1개의 터널" 제한과는 달리 1개의 프로세스에서 여러 개의 터널을 동시에 관리할 수 있습니다.

OpenVPN은 공통 네트워크 프로토콜(TCP 및 UDP)을 사용하여 ISP가 특정 VPN 프로토콜을 차단하고 사용자가 더 높은 가격의 "비즈니스 등급" 서비스 계층에 가입하도록 강요하는 상황에서 IPsec의 바람직한 대안이 됩니다.를 들어, Comcast는 이전에 그들의 @Home 제품이 레지덴셜 서비스로 지정되어 있으며, 상용 어플리케이션의 사용을 허용하지 않는다고 선언한 바 있습니다.이들의 주장은 VPN을 통해 리모트워크를 실행하면 일반 레지덴셜 가입자의 네트워크 퍼포먼스에 악영향을 미칠 수 있다는 것이었습니다.그들은 대체품인 @Home Professional을 제공했는데, 이것은 @Home 제품보다 더 비쌉니다.따라서 VPN을 사용하고자 하는 사람은 누구나 고가의 비즈니스 등급 [20]서비스 계층에 가입해야 합니다.

OpenVPN이 Transmission Control Protocol(TCP) 트랜스포트를 사용하여 터널을 확립할 경우 터널링된TCP 타이머의 [21]기한이 만료되지 않도록 터널링되지 않은 네트워크링크에 충분한 대역폭이 존재하는 한 퍼포먼스는 허용됩니다.이것이 사실이 아닐 경우 퍼포먼스가 대폭 저하됩니다.이것은 「TCP 용융 [22][23]문제」라고 불립니다.

보안.

OpenVPN은 다양한 내부 보안 기능을 제공합니다.OpenSSL 라이브러리를 통한 최대 256비트 암호화 기능을 갖추고 있지만 일부 서비스 공급자는 보다 낮은 레이트를 제공하여 소비자에게 이용 가능한 가장 빠른 VPN을 효과적으로 제공할 수 있습니다.IP 스택(따라서 커널) 조작을 필요로 하지 않고 사용자 공간에서 실행됩니다.OpenVPN에는 루트 권한을 폐기하고 mlockall을 사용하여 중요한 데이터를 디스크로 스왑하지 않도록 하며 초기화 후 chroot 감옥에 들어가 초기화 후 SELinux 컨텍스트를 적용할 수 있습니다.

OpenVPN은 IKE, IPsec, L2TP 또는 PPTP를 지원하지 않고 SSL [11]및 TLS를 기반으로 커스텀보안 프로토콜을 실행합니다.

OpenVPN은 PKCS#11 기반의 암호화 토큰을 통해 스마트카드를 지원합니다.

확장성

OpenVPN은 서드파티제의 플러그인 또는 스크립트를 사용하여 확장할 수 있으며 정의된 엔트리 [24][25]포인트에서 호출할 수 있습니다.그 목적은 고도의 로깅, 사용자 이름과 비밀번호를 사용한 확장 인증, 동적 방화벽 업데이트, RADIUS 통합 등을 통해 OpenVPN을 확장하는 것입니다.플러그인은 동적으로 로드 가능한 모듈로 보통 C로 작성되며 스크립트인터페이스는 OpenVPN에서 사용할 수 있는 스크립트 또는 바이너리를 실행할 수 있습니다.OpenVPN 소스[26] 코드에는 PAM 인증 플러그인을 비롯한 이러한 플러그인의 몇 가지 예가 있습니다.또한 SQLite [27]MySQL과 같은 LDAP 또는 SQL 데이터베이스에 대해 인증하는 여러 타사 플러그인도 있습니다.

플랫폼

Solaris, Linux, OpenBSD, FreeBSD, NetBSD, QNX, macOSWindows XP [28]이상에서 사용할 수 있습니다.OpenVPN은 Maemo,[29] Windows Mobile 6.5 이하,[30] iOS 3GS+ 디바이스,[31] 탈옥 iOS 3.1.2+ 디바이스,[32] Android 4.0+ 디바이스 및 Syanogenmod 애프터마켓 펌웨어가[33] 업데이트되었거나 올바른 커널 모듈이 [34]설치된 Android 디바이스를 포함한 모바일 운영 체제에서 사용할 수 있습니다.Palm OS를 비롯한 일부 휴대폰 OS와 호환되지 않습니다.Citrix나 터미널 서비스의 Web 액세스등의 Web 페이지로 표시되는 「Web 베이스」VPN이 아닙니다.이 프로그램은 개별적으로 인스톨 되어 GUI 베이스의 마법사가 아닌 텍스트파일을 수동으로 편집하는 것으로 설정됩니다.OpenVPN은 IPsec over L2TP 또는 PPTP 프로토콜을 사용하는 VPN 클라이언트와 호환되지 않습니다.패키지 전체는 클라이언트 연결과 서버 연결 모두에 대해1개의 바이너리, 옵션컨피규레이션파일 및 사용하는 인증방식에 따라1개 이상의 키파일로 구성됩니다.

펌웨어 구현

OpenVPN이 여러 라우터 펌웨어 패키지에 통합되어 사용자는 네트워크 라우터에서 클라이언트모드 또는 서버 모드로 OpenVPN을 실행할 수 있습니다.예를 들어 클라이언트모드로 OpenVPN을 실행하고 있는 라우터는 OpenVPN을 설치하는 기능을 필요로 하지 않고 네트워크상의 모든 디바이스가 VPN에 액세스 할 수 있도록 합니다.

OpenVPN 통합 펌웨어 패키지는 다음과 같습니다.

OpenVPN 통합 기능을 갖춘 주요 펌웨어 패키지
펌웨어 패키지 비용. 개발자 레퍼런스
DD-WRT 공짜 New Media-NET GmbH [35]
가고일 공짜 에릭 비숍 [36]
OpenWrt 공짜 커뮤니티 주도의 개발 [37]
OPN센스 공짜 데시소 BV [38]
pfSense 공짜 Rubicon Communications, LLC(Netgate)
토마토 공짜 키스 모이어 [39][40]

OpenVPN은 일부 제조원의 라우터 펌웨어에도 구현되어 있습니다.

소프트웨어 구현

OpenVPN은 오픈소스 멀티프로토콜 VPN 서버인 SoftEther VPN에 통합되어 사용자가 기존 OpenVPN 클라이언트에서 VPN 서버에 접속할 수 있게 되었습니다.

OpenVPN은 Vyota 소프트웨어 라우터에서 분기된 오픈소스 라우팅 운영체제Vyos에도 통합되어 있습니다.

라이선스

OpenVPN은 다음 두 가지 버전으로 사용할 수 있습니다.

  • OpenVPN Community Edition(자유 및 오픈소스 버전)
  • OpenVPN Access Server(OpenVPN-AS)는 Community Edition을 기반으로 하지만 LDAP 통합, SMB 서버, Web UI 관리 등의 추가 유료 기능을 제공하며 VPN 원격 액세스 [41][42]솔루션의 신속한 도입을 단순화하는 것으로 보고된 일련의 설치 및 구성 도구를 제공합니다.액세스 서버 에디션은 로드밸런싱iptables에 크게 의존하고 있으며, 이 때문에 Windows에서는 사용할 수 없었습니다.이 버전에서는 클라이언트("OpenVPN Connect") 설치 프로그램을 동적으로 작성할 수도 있습니다.이 인스톨러에는 특정 액세스서버 [43]인스턴스에 접속하기 위한 클라이언트프로파일이 포함되어 있습니다.단, 사용자는 액세스서버 인스턴스에 접속하기 위해 액세스서버 클라이언트를 가질 필요는 없습니다.OpenVPN Community Edition 클라이언트를 사용할 [44]수 있습니다.

「 」를 참조해 주세요.

참조

  1. ^ OpenVPN 변화 로그-OpenVPN 릴리스 노트.
  2. ^ "Community Downloads". openvpn.net. Retrieved 27 April 2021.
  3. ^ "Downloads". openvpn.net. Retrieved 2 February 2016.
  4. ^ "Private Tunnel VPN - Android Apps on Google Play".
  5. ^ "Private Tunnel VPN". App Store. 23 October 2014.
  6. ^ "How to connect to Access Server from a Linux computer".
  7. ^ "FreeBSD Ports Search".
  8. ^ "OpenBSD Ports".
  9. ^ "The NetBSD Packages Collection: net/openvpn".
  10. ^ "openvpn_COPYING at master · OpenVPN_openvpn". 30 July 2019. Archived from the original on 31 July 2019. Retrieved 30 July 2019.
  11. ^ a b "OpenVPN Security Overview". Retrieved 28 September 2011.
  12. ^ LinuxSecurity.com-OpenVPN:도입, 면접 설립자, 제임스 연안과.
  13. ^ Openvpn.net:가격, 12월 12일 2018년 돌려받지 못 했다.
  14. ^ Andrew Lockhart (2006). Network Security Hacks: Tips & Tools for Protecting Your Privacy. "O'Reilly Media, Inc.". p. 339. ISBN 978-0-596-55143-8.
  15. ^ 6net (2008). IPv6 Deployment Guide. Javvin Technologies Inc. p. 109. ISBN 978-1-60267-005-1.
  16. ^ OpenVPN v2.3-ChangesInOpenvpn23-OpenVPN 공동체의 변화의 개관.
  17. ^ OpenVPN 사람 페이지,"TLS모드 옵션".
  18. ^ Petros Daras; Oscar Mayora (2013). User Centric Media: First International Conference, UCMedia 2009, Venice, Italy, December 9-11, 2009, Revised Selected Papers. Springer Science & Business Media. p. 239. ISBN 978-3-642-12629-1.
  19. ^ OpenVPN 사회 wiki, IPv6OpenVPN에-12월 8일 2013년 돌려받지 못 했다.
  20. ^ "OpenVPN VPN Protocol". privacyhq.com. Retrieved 24 June 2021.
  21. ^ Murray, Mike. "OPENVPN MTU: Finding The Correct Settings". The Geek Pub. Archived from the original on 20 March 2021. Retrieved 20 July 2022.
  22. ^ Titz, Olaf (23 April 2001). "Why TCP Over TCP Is A Bad Idea". Retrieved 17 October 2015.
  23. ^ Honda, Osamu; Ohsaki, Hiroyuki; Imase, Makoto; Ishizuka, Mika; Murayama, Junichi (October 2005). "Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency". In Atiquzzaman, Mohammed; Balandin, Sergey I. (eds.). Performance, Quality of Service, and Control of Next-Generation Communication and Sensor Networks III. Vol. 6011. Bibcode:2005SPIE.6011..138H. CiteSeerX 10.1.1.78.5815. doi:10.1117/12.630496. S2CID 8945952.
  24. ^ "OpenVPN script entry points". Openvpn.net. Retrieved 30 July 2012.
  25. ^ COpenVPN 플러그 인의 진입점 모듈 기반을 두고 있다.
  26. ^ "OpenVPN example plug-ins". Openvpn.git.sourceforge.net. Retrieved 30 July 2012.
  27. ^ OpenVPN 커뮤니티 위키-관련 사업.
  28. ^ "Downloads". openvpn.net. OpenVPN. Retrieved 6 August 2015.
  29. ^ "OpenVPN Maemo package". Maemo.org. Retrieved 30 July 2012.
  30. ^ "OpenVPN for PocketPC". Ovpnppc.ziggurat29.com. 1 April 2007. Retrieved 30 July 2012.
  31. ^ "OpenVPN Connect". OpenVPN Technologies. 16 January 2013. Retrieved 16 January 2013.
  32. ^ "GuizmOVPN - OpenVPN GUI for iPhone/iPad". guizmovpn.com. 30 September 2007. Retrieved 30 September 2012.
  33. ^ "CHANGELOG at eclair from CyanogenMod's android_vendor_cyanogen". GitHub. cyanogen. 7 July 2010. Retrieved 28 October 2010. 넥서스 원 Cyanogenmod changelog
  34. ^ "How to setup and configure OpenVPN on Android rooted device VPN blog is actual information about VPN". Vpnblog.info. Archived from the original on 26 May 2011.
  35. ^ dd-wrt.com-OpenVPN
  36. ^ Gargoyle 위키-OpenVPN
  37. ^ "OpenVPN (Server Setup) - OpenWrt Wiki". openwrt.org. Retrieved 11 June 2018.
  38. ^ "opnsense.org - OPNsense 17.1 Release Announcement".
  39. ^ "TomatoVPN". Tomatovpn.keithmoyer.com. Retrieved 30 July 2012.
  40. ^ LinksysInfo.org – Web GUI를 사용한VPN 빌드
  41. ^ "OpenVPN Product Comparison". Retrieved 15 January 2017.
  42. ^ "What is OpenVPN Access Server (OpenVPN-AS)?". Retrieved 15 January 2017.
  43. ^ "Regarding chocolatey.org repository · Issue #2 · wget/chocolatey_package_openvpn". 16 January 2017. Retrieved 16 January 2017.
  44. ^ "Can I use a community OpenVPN client to connect to the Access Server?". Retrieved 16 January 2017.

외부 링크