SSD Nodes Learn 8GB RAM — 연 $66
가이드 Matt Connor작성자 Matt Connor · 업데이트됨 2026-08-01

자체 호스팅 VPN: WireGuard와 OpenVPN 비교

1인용 VPS VPN이라면 WireGuard가 속도, 약 10줄의 설정, 약 4,000줄의 구현 규모에서 유리합니다. TCP 443, 기존 인증 기관, 사용자 인증, Layer 2 브리징에서는 OpenVPN이 필요합니다.

짧은 답변

자체 VPS에서 VPN 서버를 운영하는 1명의 사용자에게 WireGuard와 OpenVPN을 비교하면 결과는 명확합니다. WireGuard를 선택하십시오. WireGuard는 규모가 더 작고 Linux 커널 내부에서 실행되며, 1초도 안 되어 연결되고, 작동하는 클라이언트 구성은 약 10줄이면 됩니다. OpenVPN에는 여전히 실제 용도가 4가지 있습니다. 그중 어느 것도 해당하지 않으면 OpenVPN이 필요하지 않습니다.

이 4가지 용도는 TCP 포트 443만 허용하는 네트워크에서 빠져나오는 것, 기존 인증 기관에 연결하는 것, 암호 또는 2차 인증으로 이름이 지정된 사용자를 인증하는 것, Layer 2에서 브리징하는 것입니다. 아래에서는 이 권장 사항의 근거와 각 예외가 적용되기 시작하는 정확한 지점을 설명합니다.

자체 호스팅 사용자에게 WireGuard가 선택된 이유

코드베이스를 읽을 수 있을 만큼 작습니다. WireGuard 프로젝트의 프로토콜 구현은 약 4,000줄의 코드로 구성됩니다. OpenVPN은 모든 암호화 작업에 의존하는 OpenSSL 라이브러리까지 포함하면 코드가 6자리 수에 이릅니다. 코드 규모가 중요한 이유는 모든 코드 한 줄이 공격 표면이기 때문입니다. 사용자나 검토자가 100,000줄을 읽을 가능성은 없습니다. 4,000줄은 읽을 수 있습니다.

커널에서 실행됩니다. WireGuard는 Linux 5.6부터 mainline에 포함되었으므로 Ubuntu 24.04와 Debian 13에는 컴파일할 것이 없이 제공됩니다. 패킷은 이미 존재하는 위치인 커널 공간에서 암호화됩니다. userspace 프로세스로 복사했다가 다시 가져올 필요가 없습니다. 먼저 다음을 확인합니다.

sudo modprobe wireguard && echo ok

KVM VPS에서는 ok가 출력됩니다. OpenVZ 또는 LXC처럼 호스트 커널을 공유하는 컨테이너 가상화 환경에서는 Operation not supported와 함께 실패합니다. 자신의 것이 아닌 커널에는 모듈을 로드할 수 없기 때문입니다.

협상할 것이 없습니다. WireGuard에는 고정된 암호 스위트 하나만 있습니다. 데이터에는 ChaCha20-Poly1305를 사용하고, 키에는 Curve25519를 사용합니다. 다운그레이드할 버전도 없고 잘못 선택할 옵션도 없습니다. OpenVPN은 각 클라이언트와 암호 및 TLS (transport layer security) 버전을 협상합니다. 이는 유연성을 제공하지만 잘못된 설정이 발생하는 지점이기도 합니다. data-ciphers AES-256-GCM:AES-128-CBC로 설정된 서버는 더 나은 암호를 제공하지 않는 클라이언트에 CBC 암호를 문제없이 사용합니다. 로그 어디에도 이를 문제라고 표시하지 않습니다.

포트가 응답하지 않습니다. 메시지 인증 검사를 통과하지 못한 WireGuard 패킷은 아무런 응답 없이 삭제됩니다. 따라서 무엇인가가 수신 대기 중인지와 관계없이 nmap -sU -p 51820open|filtered를 반환합니다. TCP 모드의 OpenVPN 서버는 클라이언트를 허용하지 않기로 결정하기 전에 TCP handshake를 완료합니다. 따라서 스캐너는 해당 위치에 무언가 존재한다는 사실을 확인할 수 있습니다. tls-crypt을 사용하는 UDP 기반 OpenVPN은 거의 동일하게 조용합니다. 따라서 이는 OpenVPN 자체가 아니라 OpenVPN을 TCP에서 실행하는 것에 대한 주장입니다.

로밍이 자동으로 처리됩니다. WireGuard peer는 주소가 아니라 public key로 식별됩니다. 노트북이 집에서 모바일 hotspot으로 이동한 뒤 새 주소에서 handshake를 한 번 보내면, 서버는 응답할 endpoint를 갱신합니다. 실제로 연결된 상태가 아니었으므로 재연결도 발생하지 않습니다. OpenVPN도 float을 사용하면 비슷하게 동작할 수 있습니다. 그러나 일반적으로 클라이언트는 전체 TLS session을 종료하고 다시 구성합니다. 따라서 OpenVPN에서는 덮개를 열 때 일시 중지가 눈에 띄지만 WireGuard에서는 그렇지 않습니다.

2026년 속도: 격차가 줄어들었다

수년 동안 속도에 관한 타당한 주장은 OpenVPN이 모든 패킷을 userspace로 복사해 그곳에서 암호화한 다음 다시 복사하는 반면, WireGuard는 커널을 벗어나지 않는다는 것이었습니다. 이제는 이것이 전체 상황이 아니며, 이 점을 무시한 비교는 오래된 것입니다.

OpenVPN 2.7은 2026년 2월에 Linux 6.16에 병합된 상위 ovpn 커널 모듈을 지원하는 상태로 릴리스되었습니다. 이것은 DCO(data channel offload)입니다. 제어 채널은 userspace에 유지되고, 대량 데이터 경로는 커널로 이동합니다. 이는 WireGuard가 처음부터 수행해 온 방식과 대체로 같습니다. 이를 사용할 수 있을 만큼 최신인 커널과 OpenVPN에서는 처리량이 서로 다른 수준이 아니라 같은 수준에 있습니다. 실제로 설치된 버전을 확인합니다.

uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3

2026년 7월 기준으로 기본 Ubuntu 24.04 LTS에는 2.7이 아닌 OpenVPN 2.6이 포함되어 있으며, ovpn 모듈에는 2.7이 필요합니다. 해당 릴리스에서는 기존 openvpn-dco-dkms 패키지를 통해서만 오프로딩을 사용할 수 있습니다. 이 패키지는 실행 중인 커널에 대해 외부 모듈을 빌드하므로 커널을 업그레이드할 때마다 다시 빌드해야 합니다. 이는 WireGuard에는 없는 추가 변경 요소입니다.

DCO를 계속 사용할 이유로 간주하기 전에 세부 제한 사항을 확인합니다. DCO는 Layer 3 터널만 지원하고, AEAD 암호(AES-GCM 또는 ChaCha20-Poly1305)를 사용한 인증 암호화만 허용하며, 압축을 지원하지 않습니다. 또한 서버에서는 topology subnet와만 작동합니다. 이러한 제한은 각각 OpenVPN이 처음부터 내세웠던 유연성의 일부를 제거합니다. 빠른 OpenVPN은 WireGuard처럼 작동하도록 구성한 OpenVPN입니다.

이 페이지를 포함해 누구의 공개 처리량 수치도 그대로 신뢰하지 않습니다. VPS의 한계는 일반적으로 프로토콜이 아니라 CPU 할당량 또는 네트워크 할당량입니다. 터널을 통해 실행하는 iperf3으로 직접 측정한 다음, 터널 외부에서 다시 측정하고 두 결과를 비교합니다.

OpenVPN이 여전히 유효한 경우

TCP port 443을 통해 외부 네트워크로 나가야 합니다. WireGuard는 의도적으로 UDP만 지원하며 TCP mode는 제공되지 않습니다. TCP 443만 허용하는 호텔 네트워크나 기업용 proxy에서도 proto tcp-serverport 443로 구성한 OpenVPN은 통과합니다. 해당 traffic이 일반적인 TLS session처럼 보이기 때문입니다. 같은 네트워크를 통과하려면 WireGuard에 wstunnel 또는 udp2raw 같은 wrapper가 필요합니다. 이 경우 실행하고 계속 patch해야 하는 process가 하나 더 추가됩니다. 다음 충돌에 유의해야 합니다. 해당 IP address에서 web server가 이미 TCP 443을 사용 중이면 둘 중 하나를 다른 port로 옮겨야 합니다.

이미 certificate authority를 운영하고 있습니다. OpenVPN은 X.509 certificate로 인증하므로 이미 운영 중인 PKI (public key infrastructure)에 바로 통합할 수 있습니다. Certificate는 자동으로 만료됩니다. 또한 crl-verify을 통해 server가 읽는 certificate revocation list에 certificate를 추가하여 해당 certificate를 revoke할 수 있습니다. WireGuard에는 certificate, 만료 및 certificate revocation list가 없습니다. Peer를 제거하려면 server config를 수정하고 reload해야 합니다. Peer가 10개라면 이 방식으로 충분합니다. 하지만 audit requirement가 있는 환경에서 Peer가 400개라면 certificate model이 실질적인 관리 기능을 제공합니다.

Key만이 아니라 이름이 지정된 user가 필요합니다. OpenVPN은 auth-user-pass-verify 또는 openvpn-plugin-auth-pam.so 같은 plugin을 사용하여 외부 system에 authentication을 위임할 수 있습니다. 이를 통해 LDAP나 one-time-password second factor를 추가할 수 있습니다. WireGuard에는 user라는 개념이 없습니다. Key는 config에 있거나 없을 뿐입니다. "Sara가 phone에서 code를 입력해야 한다"는 requirement는 WireGuard만으로 표현할 수 없습니다.

Layer 2가 필요하거나 오래된 client를 사용해야 합니다. dev tap를 사용하는 OpenVPN은 Ethernet frame을 bridge합니다. 이는 broadcast protocol과 오래된 LAN game에서 중요합니다. WireGuard는 Layer 3만 지원하며 앞으로도 변하지 않습니다. 또한 WireGuard app을 지원하지 않을 hardware와 operating system에도 OpenVPN client가 제공됩니다. 이 두 가지는 점점 중요성이 낮아지는 이유입니다. 그리고 dev tap는 DCO와 호환되지 않으므로 bridge를 사용하면 느린 경로를 사용하게 됩니다.

두 설정에 실제로 드는 비용

WireGuard ID는 명령 1개로 생성합니다. 괄호가 중요한 이유는 키가 생성되기 전에 파일 모드를 설정하기 때문입니다.

(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.key

OpenVPN에서 이에 해당하는 작업은 VPN을 사용하는 동안 계속 관리해야 하는 인증 기관입니다.

sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server

어느 목록도 불공정하지 않습니다. CA를 사용하면 만료와 폐기를 관리할 수 있습니다. 그 대가로 수년간 보호해야 하는 개인 키, 기억해 두어야 하는 갱신 작업, 그리고 키를 잃어버렸을 때 다시 구축해야 하는 작업이 생깁니다. CA가 제공하는 기능을 사용하지 않는다면 비용만 지불하는 셈입니다. 전달, NAT (network address translation), 그리고 오후 내내 시간을 낭비하게 만드는 핸드셰이크 실패를 포함한 전체 WireGuard 절차는 VPS에서 WireGuard VPN을 직접 호스팅하는 가이드에 설명되어 있습니다.

각 항목이 방화벽에 요구하는 사항

WireGuard에는 ListenPort의 포트에서 UDP를 허용하는 인바운드 규칙이 정확히 1개 필요합니다.

sudo ufw allow 51820/udp
sudo ufw status verbose

OpenVPN은 기본적으로 UDP 1194가 필요합니다. 해당 경로를 선택했다면 TCP 443을 사용합니다. 두 프로토콜 모두 IP forwarding을 활성화하고 source NAT 규칙을 설정해야 합니다. Linux 시스템은 자신에게 지정되지 않은 패킷을 삭제하기 때문입니다. 이 부분은 두 프로토콜에서 동일합니다. “터널은 연결되지만 인터넷이 되지 않는다”는 문제의 대부분이 여기에서 발생합니다. ufw가 익숙하지 않다면 먼저 VPS에서 ufw 방화벽을 사용하는 기본 방법을 확인합니다. 또한 대부분의 provider는 control panel에서 별도의 network firewall을 운영합니다. 패킷이 서버에 도달하지 않으면 서버에 추가한 규칙은 아무런 효과가 없습니다. 포트의 의미와 Linux가 포트에서 수신 대기하는 방식을 이해하면 이 두 가지 점검을 더 빠르게 수행할 수 있습니다.

한 문단으로 선택하는 방법

WireGuard로 해결할 수 없는 구체적인 요구 사항을 말할 수 있는 경우가 아니라면 WireGuard를 실행합니다. 제한적인 네트워크에서 벗어나려면 TCP 443이 필요하다면 해당 포트에서 OpenVPN을 실행하고, 두 VPN을 함께 실행하는 방법도 고려합니다. 두 VPN은 서로 다른 포트를 사용하므로 한 서버에서 충돌 없이 함께 실행할 수 있습니다. 사용자별 계정이나 2단계 인증이 필요하다면 WireGuard에 이를 억지로 추가하지 않습니다. 대신 그 위에 ID 계층을 배치합니다. 자체 호스팅 Headscale 제어 서버는 내부에서 WireGuard를 사용하며, 기본 WireGuard에서 직접 관리해야 하는 계정 모델, 키 배포 및 장치 승인을 추가합니다.

OpenVPN 중단 없이 마이그레이션하기

변환 작업은 없습니다. OpenVPN의 PKI는 WireGuard 키로 변환되지 않습니다. WireGuard에는 변환할 인증서가 없기 때문입니다. 각 클라이언트에는 서버 키 쌍과 같은 방식으로 새 키 쌍을 생성해 제공해야 합니다.

전환하는 대신 병렬로 마이그레이션합니다. UDP 51820에서 수신 대기하는 WireGuard와 1194에서 수신 대기하는 OpenVPN은 같은 서버에서 동시에 실행할 수 있습니다. 따라서 wg0을 시작하고, 최근 latest handshake을 나열하는 sudo wg show로 이를 확인한 다음, 클라이언트를 한 번에 하나씩 이동합니다. OpenVPN 피어 목록의 변경이 멈추면 sudo systemctl disable --now openvpn-server@server으로 서비스를 중지합니다. 확실해질 때까지 CA 파일을 보관합니다. 삭제한 CA에서 해지된 클라이언트를 다시 생성할 수 없기 때문입니다.

실제로 이전되지 않는 항목도 하나 있습니다. 사용자 이름 및 비밀번호 계정과 해당 계정에 연결된 해지 기록입니다. 기존 서버를 끄기 전에 이 정보를 어디에서 관리할지 결정해야 합니다. 서버를 끈 후에 결정해서는 안 됩니다.

FAQ

WireGuard가 OpenVPN보다 빠릅니까?

기본 설정의 Ubuntu 24.04 서버에서는 그렇습니다. 차이도 큽니다. WireGuard는 커널에서 암호화하지만 OpenVPN 2.6은 모든 패킷을 userspace 프로세스를 통해 처리하기 때문입니다. OpenVPN 2.7과 Linux 6.16의 ovpn 커널 모듈을 사용하면 데이터 경로도 커널에 있으므로 두 소프트웨어는 비슷한 수준의 성능을 냅니다. 블로그의 수치를 그대로 믿지 말고 iperf3를 사용해 터널을 통과하는 성능을 직접 측정하십시오. VPS에서는 일반적으로 CPU 또는 대역폭 할당량이 한계가 되기 때문입니다.

WireGuard를 TCP 포트 443에서 실행할 수 있습니까?

WireGuard만으로는 실행할 수 없습니다. WireGuard는 설계상 UDP만 사용하며 TCP 모드는 계획되어 있지 않습니다. TCP 443만 허용하는 네트워크를 통과하려면 wstunnel 또는 udp2raw와 같은 터널로 WireGuard를 감싸야 합니다. 이 경우 양쪽에서 실행하고 패치해야 할 프로세스가 추가됩니다. 이러한 제한이 일반적인 작업 환경이라면 proto tcp-serverport 443을 사용하는 OpenVPN이 더 간단한 방법입니다.

이제 OpenVPN은 안전하지 않습니까?

그렇지 않습니다. AES-256-GCM과 같은 AEAD 암호를 사용하고 tls-crypt을 활성화한 최신 OpenVPN은 신뢰할 수 있는 VPN입니다. WireGuard를 선택하는 근거는 다른 부분에 있습니다. OpenVPN은 훨씬 많은 코드와 옵션을 포함하므로 관리자가 잘못 구성할 방법도 훨씬 많습니다. 선택지가 적으면 잘못된 선택도 줄어듭니다.

VPS에서 개인 VPN을 사용하려면 무엇을 선택해야 합니까?

WireGuard를 선택하십시오. 장치마다 키 쌍 하나, 약 10줄로 구성된 설정 파일 하나, 열어 둘 UDP 포트 하나만 필요합니다. 핸드셰이크도 시작된 것을 알아차리기 전에 완료됩니다. UDP를 차단하는 네트워크에서 정기적으로 연결하거나, 이미 존재하는 인증 기관 또는 사용자 디렉터리에 맞춰야 하는 경우에만 OpenVPN을 선택하십시오.