Digitalocean으로 초간단 OpenVPN 서버 만들기

Digitalocean으로 초간단 OpenVPN 서버 만들기

개요

이 게시글에서는 OpenVPN 서버를 간단하게 구축해 개인 사용자용 VPN을 사용할 수 있게 하는 방법을 다룬다. 서버는 digitalocean의 것 을 기준으로 서술했으나 당연히 Vultr, Hetzner, PulseHeberg등 다른 선택지도 있고 직접 해보지는 않았으나 다른 곳에서 설정하기도 매우 쉬울 것으로 짐작한다.

참고로, 지레 복잡할 거라 겁먹지 말자. digitalocean 서버만 있으면 원클릭 스크립트 실행만 해서 바로 서버 설정이 끝나고, 그 이후에는 로컬에서 설정만 좀 해주면 된다. 처음 해보면 오래걸리겠지만 한번 해보면 길어도 3분 안에 된다.

1. Digitalocean 설정

먼저 https://www.digitalocean.com/ 가입(google or github id 사용)

이후 Digitalocean 프로젝트를 생성하고, 프로젝트에 속한 droplet을 생성한다. digitalocean이 무엇인지 간단히 말하자면, AWS처럼 서버를 대신 열어주고 다양한 관리 방법을 제공하는 서비스라고 보면 되고, 나는 원래 Ghost 블로그를 digitalocean에서 호스팅하기에 블로그가 운영중인 digitalocean droplet에서 ghost 블로그 뿐만 아니라 OpenVPN 서버까지 동시에 운영중이다. 일타쌍피.

1.1 요금제

Pasted image 20220902153656.png
Droplet 요금제는, 나는 ghost 블로그와 OpenVPN 서버를 똑같은 droplet에서 열고 있기에 메모리와 드라이브 용량이 모두 4달러짜리로는 부족해 6달러짜리를 선택하고 있다. OpenVPN 서버만을 열고자 하는 사람은 4달러짜리도 고려해보자. 만약 메모리가 0.5GB로 부족하다면 swap memory 설정을 고려해보라. RAM 대신 SSD 일부를 RAM 비슷하게 사용할 수 있다.

1.2 서버 위치

Pasted image 20220902163016.png
droplet을 만들 때, 위에서 하나 datacenter location을 선택해야 한다.

digitalocean에서 OpenVPN 서버를 만들고, 집에서 OpenVPN Client를 실행해 측정한 속도를 digitalocean에서 서버 위치를 싱가폴로 설정했을 때, 뉴욕으로 설정했을 때 각각을 캡처하면 아래와 같다.
(싱가폴의 경우 업로드 속도가 측정이 끝나기 전 캡처해버려서 15Kbps가 아님에 유의)

Pasted image 20220902033250.png

Pasted image 20220902033415.png

싱가폴이 더 좋은 것 같기는 한데, 시간대별로 편차가 있을 수 있고 더 나은 서버가 있는지도 모르겠다. 나는 일단 대략 25Mbps 이상이 면 충분하기에 그냥 별 생각 없이 싱가폴 서버 쓰고 있다.

1.3 SSH 설정

ssh 설정은 아래 과정을 따르면 된다.

  1. 로컬 컴퓨터(이 글을 보는 독자의 컴퓨터)에서 ssh-keygen 실행(terminal을 켜자마자 cd .ssh를 실행함으로써 C:\Users\유저명\.ssh에서 실행하는 것을 권장함. 이는 rsa의 공개키와 비밀키를 모두 .ssh 경로에 저장해두기 위함임.)
  2. 적당히 이름 입력(blog) 등
  3. blog.pub 복사해서 digitalocean ssh 추가하는 데다 붙여넣기한다.

아래는 예시 스크린샷
------2021-12-14-164557

이후 로컬 컴퓨터에서 아래와 같이 .ssh/config 파일을 설정하면 ssh blog 커맨드 하나만으로 digitalocean 서버에 매우 간단하게 접속 가능하다.

Host blog
    HostName (digitalocean아이피)
    User root
    IdentityFile C:\Users\유저명\.ssh\blog

참고로 나는 ghost 블로그를 운영하고 있다가 여기에 OpenVPN 서버를 추가로 설치하는 것이었기에 SSH 설정이 필요 없었다.

2. OpenVPN 서버 설치

OpenVPN 서버를 구동하는 방법은 매우 정말로 간단하다. 아래 세 줄 입력하면 된다. (digitalocean 서버에서 실행)

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh


./openvpn-install.sh

openvpn-install.sh는 root 권한으로 실행해야 한다.

이게 어떻게 되냐면,

https://github.com/angristan/openvpn-install

이 repository에서 OpenVPN 서버 구축 원클릭 스크립트를 배포해 주고 있기 때문이다.

다만, 2022-09-02 기준 왜인지 스크립트 실행 전 sudo apt install easy-rsa를 미리 해둬야 오류 없이 실행된다.

3. Config 복사

그러면 스크립트를 실행한 사용자의 home 경로에 (본인이 입력한 이름).ovpn 설정이 생기는데, 이걸 그대로 자신의 로컬 컴퓨터에 복 사하자. 아래 커맨드를 로컬 컴퓨터에서 실행을 하든, 다른 방법으로든 뭐 어떻게든 옮기면 된다. 그냥 아예 콘솔에 출력을 한 다음에 복사&로컬에서 붙여넣기를 하든가.

sftp root@blog:/home/ghost-mgr/(자신이 입력했던 ovpn 이름).ovpn C:\Users\(로컬컴퓨터 사용자명)\OpenVPN\config

4. 로컬 컴퓨터에서 OpenVPN 실행

나는 chocolatey를 사용중이기에, openvpn은 choco install openvpn으로 설치해둔 상태였다. 로컬 컴퓨터에 복사한 ovpn 파일을 더블 클릭하면 자동으로 openvpn에 등록이 되고, 아니면 바로 위에 내가 써둔 커맨드를 이용해 복사하면 애당초 openvpn config folder에 config가 복사가 되게 되어 그럴 필요조차 없다.

이제 로컬 컴퓨터에서 openvpn을 실행하고 복사해온 config 파일에 대해 connect를 진행하면 된다.

5. 사용성에 대해

  • 범용성
    한번 구축이 끝나면 만든 ovpn config 파일을 적절히 공개되지 않은 곳(예: 자신의 웹 저장소)에 두고 집의 데스크탑 컴퓨터뿐만 아니라 노트북, 휴대폰까지 다양한 장소에서 다운받아 사용하고 OpenVPN 서버에 연결할 수 있다. 휴대폰의 경우 나는 Android에서 OpenVPN Connect를 사용하고 있다.

  • 속도
    위에서 한번 보여줬듯 다운로드 속도 120Mbps가 VPN으로 나오는데 무료 VPN에서는 절대 볼 수 없는 속도다. 유료 VPN과 비교하면, 보통 NordVPN, ProtonVPN 정도가 좋은 VPN으로 꼽히는데, Proton VPN 유료 버전(Plus) 사용 후기에서 싱가폴 핑 93ms, 다운로드 78.64Mbps가 나온다고 언급한다. ProtonVPN보다 좀 빠른 정도인듯?

  • 용량
    digitalocean에서, $6 요금제 기준 1TB Network Transfer을 초과하면 추가 과금이 이루어진다!
    특히, $4 요금제의 경우 0.5TB가 추가 과금이 없는 한도다.

근데.. 데스크탑에서 하루종일 VPN을 켜고 있는 게 아닌 이상 0.5TB도 넘을 일은 없을 것 같다. 내 휴대폰에서 1달 동안 와이파이 사용 량을 보니 49GB더라. 다만 이건 사람마다, 사용 스타일에 따라 다른거니 자신이 엄청난 양의 transfer을 VPN을 필요로 한다면 고려는 해보자.. 추가 과금이 이루어져도 $0.01/GiB, 1000GiB에 $10인 점도 고려하자.

  • 가격
    다른 유료 VPN이 ProtonVPN은 Basic $4, Plus $8, NordVPN이 할인링크+할인쿠폰+스탠다드 $4.92정도이다.

OpenVPN 서버를 digitalocean에서 열고 사용할 때, 가장 저사양 서버가 4불임을 감안하면 어... 가격에서 엄청난 메리트가 있는 것 같진 않다. 그래도 NordVPN과 비교해 $0.92 싸긴 하니, 메리트가 있긴 한듯. 다만 내 경우에는 어차피 Ghost 블로그 운영하려면 6불 서버를 사용해야 하는데 여기에 OpenVPN 서버까지 얹어서 운영하는거니 가성비가 굉장히 좋다.

다만 $4 Digitalocean 서버에서 OpenVPN 서버가 잘 돌아갈지는 모른다. 아마 스왑메모리 설정까지 하면 문제 없을 거라 짐작은 하지만 확실하지 않다.

6. 요약

결국은 그냥저냥 적당한 가성비에 성능을 가진 자신만의 OpenVPN 서버를, digitalocean droplet에 구축해 사용할 수 있는 게 장점인 듯 하다.

본래 블로그 운영 등으로 인해 digitalocean이나 기타 호스팅 서버를 사용하고 있던 사람이면 여기에 OpenVPN을 얹어 매우 가성비 좋게 사용할 수 있을 것이고, 아니라면 NordVPN 등에서 부족함을 느끼는 사람이 마실 물 찾아 찾아오겠지.. 정도?

7. 속도 테스트 추가

Pasted image 20220902162821.png

아래가 싱가폴에 서버가 있는 digitalocean에 구축한 openvpn 서버를 사용한 거고, 위가 vpn을 끈 채로 측정한 것이다. 왜 Location이 Seoul로 나오는지는 모르겠다. 아마 myip 계열 사이트랑 다른 원리로 아이피를 얻어오는 듯한데. .. 아무튼, 속도가 100Mbps쯤 나오는 걸 보면 VPN 적용은 잘 된 듯 싶고, 핑도 159..면 싱가폴은 맞는 것 같다.

속도는 쓸만은 한데 핑이 저러면 실시간 게임에는 못 쓰겠다.