in 소프트웨어 개발

아마존 웹 서비스 (AWS)로 무료 vpn 만들기

유료 VPN 서비스는 국가 검열이나 플레이스테이션, 구글 플레이 등의 게임 지역제한 우회에 매우 유용하다.

하지만 애저나 AWS, 구글 클라우드 등으로 다른 국가의 리전에 클라우드 서버를 돌리는 개발자들에게는 굳이  유료 VPN을 구독할 필요가 없다. 자신의 컴퓨트 인스턴스에 VPN 포트를 열어 연결하면 되니까.

이에 익숙치 않은 일반 파워유저들을 위한 튜토리얼이 있어, 내용을 쉽게 요약해서 번역 했다.
https://www.comparitech.com/blog/vpn-privacy/how-to-make-your-own-free-vpn-using-amazon-web-services/

 

이 튜토리얼에서 사용할 서비스는 AWS 다. 모든 클라우드 서비스가 그렇듯이 트래픽이 발생한 만큼만 비용을 내면되고, 그 가격도 매우 저렴한 편이다. 이 튜토리얼을 보는 사람들 대부분이 한달에 아무리 써도 몇달러가 나오지도 않을 것이다. 그리고 서버 부하를 크게 발생시키지 않거나 아마존에서 밀어주고 있는 인스턴스들, 즉 옵션 중 ‘free tier eligible’ 태그가 붙은 사용 옵션을 사용한다면 1년 동안 요금이 발생하지도 않는다.

 

개인적으로는 구글 클라우드 서비스를 더 선호하지만, 구글 클라우드 는 아시아 리전의 실제 서버들이 대만에 몰려있기에 (아직은)일본 경우의 VPN을 설정할수 없어 생략했다.

 

  1. 먼저 아마존 AWS 에 계정을 생성한다. 방법: https://opentutorials.org/course/608/3003
  2. 자신의 컴퓨트 인스턴스 (리눅스 서버)를 생성할 리전을 선택한다. 해당 리전이 VPN 을 통해 접속하는 국가가 될것이다.
    일본 게임을 하고 싶다면 도쿄를 선택하면 된다.
    *** 현재 이미지를 날려먹어서 2번의 첨부 이미지는 이후 복구하겠습니다 (블로그 주인장)
  3. AWS의 상단 탭 중 서비스-EC2 탭에 들어간다. 여기서 컴퓨트 인스턴스를 생성한다.
    ec2-vpn-1-3
    여기서 Launch Instance 를 클릭하면 된다.
  4. 서버의 세팅은, 아마존에서 트윅한 ‘아마존 리눅스’를 선택한다. 그리고 Review and Launch 를 누른다.
    이 세팅은 1년 무료 계정을 지원한다.
    ec2-vpn-2
  5. 서버의 스펙을 결정한다. t2 micro 에 메모리 1GB 면 충분하다. 이또한 무료지원이다. Review and Launch 버튼을 누른다.ec2-vpn-3
  6. 그러고 나면 “edit your security groups” 보안 그룹을 편집하라는 경고창이 뜬다. 쉬운 말로 해당 서버에 접근 권한이 있는 사용자 리스트를 편집해달라는 것이다. 자신의 VPN 서버에 아무나 접속하거나 혹은, 반대로 아무도 접속 못하게 하고 싶지는 않겠지?Create a new Security Group 옵션으로 새 보안 그룹을 생성한다.
    그룹 이름 name과 그룹에 대한 설명 description 은 원하는대로 적는다.
    그리고 표에 기본적으로 포함된 세팅열에 아래와 같이 설정한다.
    타입-All Traffic (모든 형태의 연결에 대해 허용), 소스(연결 요청)-My IP (현재 지금 쓰고 있는 컴퓨터를 등록한다)모든 형태의 포트 연결을 지원하는 All Traffic 설정은 별로 추천되지 않는 보안 세팅이지만, 여기서는 당신의 컴퓨터만을 대상으로 적용했으니까 큰 문제는 없을 것이다. 즉 당신의 컴퓨터 IP 한정으로 모든 연결을 허락한다.
    물론 지금 쓰는 컴퓨터의 IP가 바뀐다면 연결이 되지 않는다.
    만약 컴퓨터나 모바일 장치를 더 추가하고 싶다면? Add Rule 버튼을 누르고 해당 기기들의 IP를 등록하면 된다.

    혹은 특정 IP를 직접 등록하지 않고, 기기가 자신이 보안그룹의 일원임을 알리는 방향으로 Rule을 등록할 수 있겠지만, 개발자에겐 기초적인 내용이고 일반 유저들에겐 귀찮은 내용이므로 그냥 생략한다.

    ec2-vpn-4

  7. Review and Launch 버튼을 누르고 다시 한번 그 다음에 뜨는 Launch 버튼을 누르면, 이제 키페어를 생성하라는 말이 나온다. 인터넷 세계에서는 컴퓨터 간에 보안 연결(SSH)을 위해 서로를 증명하는 한쌍의 키를 만든다. 이것을 가지고 있으며, 동시에 적절한 보안그룹에 등록된 컴퓨터가 접속을 요청 하면 당신이 만든 VPN 서버에서 받아준다는 뜻이다.적당이 키페어의 이름을 짓고 다운로드 버튼을 누른다. 생성된 키페어는 안전한 곳에 보관해야한다.
    ec2-vpn-5
  8. 이제 Launch Instance 버튼을 마저 누르고, “View instances” 버튼을 찾아 누르면 당신이 방금 만든 서버가 열심이 초기 부트 중이다. 알아서 잘 돌아갈테니 내버려 두고, 이제 해당 서버에 연결해서 마치 그 서버가 있는 지역의 주민 처럼 인터넷을 속여 검열을 피할 차례다.
  9. SSH 연결.
    참고로 이 방법은 ‘아무것도 없는 윈도우 사용자’를 위한 것으로 깔끔한 방법은 아니다. 하지만 일반유저에게 간단할 것이다.
    맥이나 리눅스 유저들은 SSH 연결에 매우 익숙하므로 추가적인 설명이 필요할것 같진 않다.먼저 PuTTy와 PuTTygen 을 인터넷에서 다운로드 한다. 두개다 설치 프로그램이 필요 없이 바로 동작하는 exe 파일이다.ec2-vpn-7
    PuTTygen 을 열고, Load 버튼을 눌러서 .pem 키페어 파일을 찾아 로드한다. .pem 파일을 찾으려면 파일 탐색기가 숨김 파일도 보여주도록 설정해야 할수도 있다. “Save Private Key”를 선택한다. 파일명은 반드시 .pen 키와 같아야 한다. 원한다면 키에 추가 비밀번호(passphrase)를 등록할 수 있다.
  10. PuTTygen을 닫고 이제 PuTTy를 연다. AWS의 EC2 메뉴에서 보았던, 당신의 인스턴스의 public IP를 PuTTy에 복사해 넣고, 부르고 싶은 이름을 세션 란에 지정하고 저장Save한다.
    ec2-vpn-6그리고 왼쪽 카테고리 란중, Auth를 선택한다.
    ec2-vpn-8
    Browse.. 버튼을 눌러 아까 생성했던 private key를 지정해준다.그리고 다시 왼쪽 탭중 Tunnels 탭에 들어간다.
    ec2-vpn-9
    포트 8080에 Dynamic 옵션을 선택하여 Add 버튼을 누른다. 이제 Session 페이지로 돌아가서 Save 버튼을 눌러서 다시 처음부터 하는 불상사를 막는다. Open 버튼을 누르고 콘솔창이 떠서 당신의 username을 물을것이다. 이 튜토리얼에서 인스턴스를 만드는 첫 부분의 옵션에 따라 다른데,  Amazon Linux AMI 경우에는,  ec2-user 이다.ec2-vpn-10
    이제 서버에 연결됬다. 하지만 8080포트로 연결한 이 연결을 당신의 브라우저의 트래픽과 연결해야 한다.

    파이어 폭스 브라우저를 사용한다면, 브라우저 세팅에서 할수 있다. 크롬이라면 Proxy Switchy 라는 크롬 확장 앱을 받아야 한다.

  11. 파이어 폭스:
    • Tools > Options > Advanced > Network > Connection > Settings > Manual proxy configuration
    • SOCKS Host 는 127.0.0.1 , 포트는 8080 (혹은 PuTTy에서 마음대로 설정한 다른 포트들도 가능).
    • OK 버튼 누르기

    크롬 Proxy Switchy:

    • 설정 페이지가 확장앱을 설치하자 마자 뜰것이다, 아니면 오른쪽 구석의 크롬 확장툴 아이콘에 마우스 오른쪽을 누르고 옵션 탭을 선택하면 된다.
    • 설정 프로필은 아무렇게나 이름 짓고, SOCKS host 는 127.0.0.1 포트는 8080 (혹은 PuTTy에서 마음대로 설정한 다른 포트들도 가능). 나머지 칸들은 전부 빈칸인 채로 그대로 내버려 두어라.
    • 세이브 버튼을 누르고, 확장툴 아이콘을 누르면 적용된다.