본문 바로가기
웹 서버, WAS, 미들웨어/OpenVPN

OpenVPN Access Server 에 DCO를 설정하자

by 연구자 공학코드 2026. 6. 29.

공지사항

  1. 제가 운영하는 IT·SI·SM 전문가 커뮤니티 아이티프로(https://cafe.naver.com/itpro)에 가입하시면 IT 개발 노하우와 SI 구축 및 사업관리 노하우, 솔루션 정보를 제공받으실 수 있습니다.

  2. 제가 운영하는 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

시험 환경

  • VPN: OpenVPN 2.6.16as1 x86_64-pc-linux-gnu
  • OS: Rocky Linux 9.5
  • CPU: 1 core
  • RAM: 2GB

DCO를 사용하는 이유

DCO(Data Channel Offload)는 OpenVPN 프로토콜의 성능 향상 기능으로, 데이터 패킷의 암호화 및 복호화 작업을 애플리케이션(사용자 공간)에서 운영체제 커널(커널 공간)로 이동시켜 처리 속도를 크게 높이고 CPU 사용량을 줄이는 기술이다. OpenVPN Access Server(이하 OpenVPN-AS)에서 자원 사용률이 낮은데 트래픽 처리량도 낮을 때는 DCO를 설정하면 다소 개선이 가능하다. 자원 사용률이 최대치인데 실제 사용 가능한 네트워크 대역폭을 다 활용하지 못 하는 상황일 때도 DCO를 설정하면 트래픽 처리성능을 개선하여 사용하지 못 하고 있던 네트워크 대역폭을 최대치로 사용할 수 있다.

현상 및 결과

실제 네트워크에서 사용가능한 대역폭은 1 Gbps 이지만 VPN을 연결한 상태에서 통신할 시 3.4KB/s 의 통신 속도가 나타나면서 CPU 사용률이 매우 낮았다. 결과부터 설명하자면 DCO를 활용한 후에는 통신 속도가 상대적으로 매우 높아졌지만 네트워크 대역폭과 컴퓨팅 리소스를 충분히 사용하지 못 하는 현상이 있었다. 좀 더 연구해서 개선안을 찾을 예정이다.

DCO가 비활성일 때 통신 성능
DCO가 비활성으로 나타난 화면
DCO가 비활성 상태인 화면

패키지 업그레이드 및 업데이트

아래의 명령어를 입력하여 패키지를 업그레이드한다.

sudo yum upgrade

아래의 명령어를 입력하여 패키지 정보를 업데이트한다.

sudo yum update

아래의 명령어를 입력하여 추가 패키지를 다운로드 할 수 있는 저장소 설정 패키지를 설치한다.

sudo yum install epel-release

epel-release가 설치된 화면

아래의 명령어를 입력하여 DKMS(Dynamic Kernel Module Support)를 설치한다.

sudo yum install dkms

dkms가 설치 중인 화면
dkms가 설치된 화면

아래의 명령어를 입력하여 커널 개발용 헤더 파일과 라이브러리 패키지를 설치한다.

sudo yum install kernel-devel kernel-headers

kernel-devel와 kernel-headers가 설치되어 있는 화면

 

아래의 명령어를 입력하여 kmod-ovpn-dco 패키지를 설치한다. kmod-ovpn-dco는 OpenVPN의 데이터 채널(Data Channel) 처리 과정을 유저 스페이스에서 커널 스페이스로 오프로딩(Offload)하여 VPN 성능을 크게 향상시키는 커널 모듈이다.

sudo yum install kmod-ovpn-dco

kmod-vpn-dco가 설치된 화면

기본 Rocky Linux 9.5에서 ovpn-dco가 설치되지 않아서 아래의 명령어로 등록된 모든 외부 커널 모듈을 자동으로 다시 빌드하고 설치했다.

sudo dkms autoinstall

dkms autoinstall이 실행된 화면

아래의 명령어를 입력하여 DCO를 활성화한다.

sudo modprobe ovpn-dco-v2
lsmod | grep ovpn

DCO 설정이 잘 된 화면

아래의 명령어를 입력하여 OpenVPN-AS가 DCO를 사용하도록 설정한다.

echo ovpn-dco-v2 | sudo tee /etc/modules-load.d/ovpn-dco-v2.conf

OpenVPN-AS에 DCO 사용이 설정된 화면

아래의 명령어를 입력하여 OpenVPN-AS를 재기동하여 DCO 설정이 적용되도록 한다.

sudo systemctl restart openvpnas

OpenVPN-AS가 재기동된 화면

OpenVPN-AS 관리자 대시보드에 접속하면 아래의 사진처럼 DCO가 활성화된 것을 볼 수 있다.

DCO가 활성화된 화면

참고문서

  1. "OpenVPN Data Channel Offload (DCO): The Definitive Guide to the Performance Boost Making OpenVPN The Fastest VPN Protocol", OpenVPN 블로그, 2026년 2월 24일.
728x90
반응형

댓글