무료 VPN 셋업 | OpenVPN setup on AWS

BlueSh@rk·2022년 3월 10일
0
post-thumbnail

크립토 투자를 하다보니 가끔 컴퓨터나 스마트폰의 IP 주소를 변경해야 할 일이 종종 생기기 시작했다. 이때문에 Deeper Network 장비를 하나 장만하기는 했지만 DNS 기반의 VPN이다보니 장점만큼이나 일부 제약도 있었다. 새로운 목적지가 생길때마다 장비 설정에서 라우팅 테이블 (Routing Table)에 등록해줘야 하는 일이 있기도 하고, 무엇보다도 설치된 곳에서 와이파이 신호가 도달하는 곳에서만 사용할 수 있다는 제약도 있었다. 상용 VPN을 사용하기는 싫고 대안을 찾다보니 OpenVPN 서버를 구성하면 손쉽게 해결이 가능해 보였다.

대안은... Open VPN 사용, 그렇다면 비용은? 일단은 무료로 구성할 수 있다. 추가적인 장비도 필요 없다. AWS에서 VPC를 구동할꺼니까. 당연히 AWS는 유료 서비스이다. 하지만, 아주 저사양의 서버는 계정을 만들고 나면 최대 12개월간 무료료 사용할 수 있게 해준다. 이로써 서버 및 고정 IP 주소 문제도 해결.

준비물
AWS 계정 + 커피 두잔 정도
AWS 계정 생성은 너무 간단하기도 하고, 이미 수많은 자료가 있으므로 생략

OpenVPN 서버 셋업

1. AWS 포털 (aws.amazon.com) 로그인

2. 지역 선택 - 가장 중요한 부분 !!! 선택한 지역에 AWS VPC가 만들어지므로 원하는 지역을 선택한 후 서버 배포를 시작해야 한다. AWS 포털 상단 메뉴 오른쪽에 지역을 선택할 수 있는 drop-down list가 있다. 원하는 지역을 선택한다.

  1. All services 메뉴를 확장한 후 Compute 항목에서 EC2를 선택한다.

  2. 아래쪽으로 스크롤하여 Launch instance 메뉴를 확장 후 다시 한번 Launch instance를 클릭한다

  3. 화면 가운데 왼쪽 메뉴 중 AWS Marketplace를 선택 후 위쪽 검색란에 "openvpn"을 입력 후 나타나는 검색 결과 중 가장 첫 번째에 있는 OpenVPN Access Server가 우리가 사용할 OS image이다. Select 버튼을 클릭한다

  4. OpenVPN Access Server의 구성과 가격표가 표시된다. Continue를 클릭하여 다음으로 넘어간다

  5. 서버 목록 중 Free tier eligible 마크가 표시된 1vCPU와 1GB Memory로 구성된 서버를 선택한 후 Review and Lauch를 클릭한다.
    Free tier eligible 마크는 말 그대로 무료로 사용할 수 있다는 의미이므로 반대로 다른 사양의 서버를 선택하면 비용이 발생하게 된다. 다음으로 넘어가기 전에 반드시 다시 한번 정확히 확인하기 바란다

  6. 서버 구성을 다시 한번 확인 후 Launch 버튼을 클릭하여 서버를 생성한다

  7. 가장 중요한 단계인 Key pair 생성하기. Drop-down list에서 "Create a new key pair"를 선택한 후 Key pair name란에 사용하고자 하는 key의 이름을 입력한다. 이름 자체는 중요치 않지만 해당 서버에 접속할 때 key pair 이름이 필요하므로 서버 역할에 맞게 openvpn 등과 같이 입력 후 반드시 Download Key Pair 메뉴를 클릭하여 로컬 컴퓨터에 저장해 두어야 한다. Key pair는 이때 밖에 다운로드 받을 수 없으므로 이때 다운로드 받아두지 않으면 해당 서버 접속 시 인증을 받을 방법이 없다. 키를 다운로드 받은 후 Launch Instance 메뉴를 클릭하여 서버를 생성한다

  8. 서버 생성에는 일 이분 정도 소요된다. 서버가 생성되면 instance 이름(예: i-0a8257f743a9c0d1c)을 클릭한다

  9. 생성된 서버에 접속을 위해서 instance 상세 페이지에서 instance 이름 위에서 마우스 오른쪽 버튼을 클릭 후 Connect를 선택한다

  10. instace 접속 옵션 중 SSH client를 선택하면 해당 서버의 IP 주소와 FQDN 및 접속 명령어가 표시된다. 이중 예시에 표시되어 있는 SSH 접속 코드를 복사해 둔다

  1. SSH를 통한 접속을 위해서 Windows PowerShell을 실행한다. SSH 접속 시 앞서 다운로드 받은 key pair를 통해 접속해야 하므로, 해당 파일을 다운로드한 경로로 이동한다. 다운로드 폴더를 따로 지정하지 않은 경우 Downloads 폴더에 저장되었을 것이다.
PowerShell에서 폴더 이동은 DOS 기본 명령어인 CD <Directory Name> 으로 폴더로 이동할 수 있다. 
C: 드라이브 루트로 이동할 경우 CD \ 입력 후 엔터
한단계 상위 폴더로 이동시에는 CD .. 입력 후 엔터
Downloads 폴더는 유저 프로파일 내에 위치하므로 다음과 같은 경로를 갖는다.
C:\Users\<UserName>\Downloads

예를 들어 유저 이름이 BlueShark라면 다운로드 폴더의 경로는 아래와 같다
C:\Users\BlueShark\Downloads

PowerShell 창에 아래 복사한 명령어를 붙여 넣는다. PowerShell 화면에서 마우스 오른쪽 클릭하면 붙여넣기가 된다.

ssh -i "openvpn.pem" root@ec2-18-136-105-21.ap-southeast-1.compute.amazonaws.com

Are you sure you want to continue connecting (yes/no/[fingerprint])? 프롬프트가 표시되면 yes 를 입력 후 엔터하여 접속을 진행한다.

  1. EULA 동의 화면이 표시되면 yes를 입력 후 엔터하여 계속 진행한다

  2. 여러가지 선택 사항이 표시되는데, 대부분은 기본설정 그대로 사용하면 되므로 엔터를 입력하고 지나간다. 단, client trafficclient DNS traffic routing 관련된 선택 사항은 yes를 입력 해야한다. 혹시 여기서 놓치고 지나가도 OpenVPN 설정 화면에서 변경은 가능하나, 어렵지 않은 부분이니 yes를 입력하도록 하자.

Should client traffic be routed by default through the VPN?
> Press ENTER for default [no]: yes

Should client DNS traffic be routed by default through the VPN?
> Press ENTER for default [no]: yes

그 외 모든 구성 관련 선택 사항을 기본 설정을 사용하면 되므로 엔터를 입력하여 진행한다. 마지막 질문 사항인 Activate key 또한 그냥 엔터를 입력한다

  1. 설정 사항에 따라 서비스가 구성되고 설치가 완료된다. 현재 root로 로그인되어 있는 상태이므로 구성이 완료되면 연결이 자동으로 종료된다. 추후 설정은 openvpnas라는 미리 만들어진 root 권한이 없는 계정을 통해 진행하여야 한다.

  2. 다시 Windows PowerShell에서 SSH를 통해 OpenVPN 서버로 접속한다. 단, 이번에는 root 계정이 아닌 openvpnas라는 계정으로 접속해야 하므로 접속 명령어에서 root 부분을 openvpnas로 변경해준다

    ssh -i "openvpn.pem" openvpnas@ec2-18-136-105-21.ap-southeast-1.compute.amazonaws.com

명령 프롬프트의 openvpnas@ip-172-31-26-87:~$ 를 통해 현재 접속된 사용자가 root가 아님을 확인할 수 있다

  1. 이제 SSH 콘솔에서 마지막 작업은 OpenVPN 서버 접속에 사용될 openvpn 유저에 대한 비밀번호를 설정하는 것이다.

아래 명령어를 입력하여 openvpn 유저 계정 비밀번호를 설정한다.

sudo passwd openvpn

이로써 SSH를 통한 작업은 모두 완료되었다.

  1. 이제 웹 콘솔을 통해서 구성을 마무리하면 된다. 웹 브라우저를 실행하고 주소창에 https://<서버 ip address>:943/admin/을 입력하고 접속한다. 본 구성 예시의 경우는 접속 주소가 아래와 같다

https://18.136.105.21:943/admin/

기대와는 달리 OpenVPN 웹콘솔이 아닌 에러 메시지가 표시될 것이다. 이는 해당 서버에서 자체 발행한 인증서를 통해 SSL 접속을 제공하기 때문에 브라우저에서 접속이 안전하지 않을 수도 있음을 경고하는 것이다. 브라우저마다 위치가 다르겠지만 에러 메시지 하단에 있는 Advanced를 클릭 후 Accept the Risk and Continue 등과 같은 버튼을 눌러 진행한다.

  1. 드디어 OpenVPN 웹 관리화면이 열린다. 사용자 이름은 openvpn, 비밀번호는 앞서 18번 단계에서 설정한 비밀번호를 입력하여 로그인한다

  2. 최초 접속 시 표시되는 EULA (End User License Agreement)에 동의하면 OpenVN 웹콘솔에 접속된다. 좌측 메뉴에서 VPN Settings를 선택 후 Routing 섹션까지 스크롤 다운한다.

Should client Internet traffic be routed through the VPN? 부분이 Yes로 선택되어 있는지 다시 한번 확인한다. 만일 이 부분이 No로 선택되어 있다면 VPN이 접속되어 있더라도 인터넷 접속 시 VPN 서버를 통하지 않고 접속하게 되므로 IP 주소 우회를 위해 사용하는 VPN이 말짱 도루묵이 된다.

여기까지 완료하면 Open VPN 서버 구성은 모두 완료되었다.

VPN 클라이언트 설치

OpenVPN은 Microsoft Windows, Mac OS, iOS, Androd 기기 등 대부분의 운영체제를 지원한다. Windwos client의 경우 OpenVPN 홈페이지에서 내려받아 설치하여도 되지만, 앞서 설치한 OpenVPN 서버에 접속 프로필이 구성되어 있는 설치 파일을 내려 받을 수 있다.

https://<OpenVPN server IP address>:943/ 을 웹 브라우저 주소창에 입력 후 접속하면 OS 별 클라이언트를 내려 받을 수 있는 페이지가 표시된다.

본 예시의 경우는 아래 주소를 입력

https://18.136.105.21:943/

Mac OS, iOS 및 Android의 경우는 프로필이 사전 구성된 클라이언트가 제공되지 않으므로 각각의 앱스토어에서 내려 받는 것과 차이가 없다.



VPN 접속하기

내려 받은 클라이언트 프로그램 설치 후 실행하면 이미 프로필이 생성되어 있어 해당 프로필을 선택한 후 패스워드를 입력하면 접속할 수 있다. 패스워드는 서버 구성 18번 단계에서 설정한 패스워드를 입력하면 된다.

혹시나 접속 프로필을 다시 생성할 경우 아래 정보를 사용하여 구성하면 된다

Server IP address: <서버 구성시 사용한 IP>
사용자 이름: openvpn
패스워드: 앞서 18번 단계에서 설정한 패스워드

안드로이드나 아이폰에서 접속할 경우, 프로필이 미리 생성되어 있지 않으므로 서버의 IP 주소를 함께 입력해 주어야 한다.

profile
3rd chapter...

0개의 댓글