구글 클라우드를 이용한 VPN 서버 구축

구글 클라우드를 이용한 VPN 서버 구축 (첫 1년 무료 사용)

들어가기에 앞서

현재 아마존의 AWS나 구글 클라우드, 알리 클라우드 등 세계 각국의 대기업들이 경쟁적으로 클라우딩 서비스에 힘을 쏟아붓고 있다. 이러한 상황 덕분에 소비자 입장에선 굉장히 빠른 VPS를 합리적인 가격에 사용 가능하게 되었다. 그 중에서도 구글 클라우드를 선택 이유는 서비스의 품질, 콘솔 사용의 직관성, 가격의 합리성, 이 세가지 측면에서 모두 만족할 만큼의 서비스를 제공하고 있기 때문이다. 아마존의 AWS 같은 경우 요금 체계도 매우 복잡하고 콘솔 인터페이스 역시 구글에 비해 직관적이지 못하다. 그리고 무엇보다도 무료 사용에 많은 제약이 있는데 자칫 잘못하면 사용하지도 않은 부분에 대해서까지 요금 폭탄을 맞을 가능성도 존재한다. 그에 비해 구글 클라우드는 사용자의 동의 없이는 추가 요금 결제가 진행되지 않음을 명시하고 있다.

아래 과정은 구글 클라우드 이외에도 모든 VPS에서 사용 가능한 방법이며, 사용 운영 체제는 debian 9를 기준으로 한다. 이유는 VPN 서버 사용이 주목적이므로 Fedora 계열의 무거운 운영체제보다는 가벼운 debian 계열 운영체제가 적합하다.

준비하기

구글 클라우드 계정 만들기 (해외 결제 가능 신용/체크카드 필요)

https://cloud.google.com/

2018년 12월 현재 구글 클라우드에서 계정을 만들시 1년간 300달러 한도 내에서 무료 사용이 가능하다. 기간 내에 300달러 이상을 사용하게 되면 사용자 동의를 거쳐 추가 요금 결제가 진행되기 때문에 요금 자동 결제에 대한 우려는 안해도 되는 셈.

구글 클라우드의 요금 정책

https://cloud.google.com/compute/pricing

항상 무료 사용 한도는 아래와 같다. 아래에 조건에 해당하는 경우는 계속해서 무료로 사용 가능하다. 개인적으로 사용하는 VPN의 경우 cpu 성능을 최저 수준에 놓아도 문제가 없으므로 무료 사용 기간이 끝난 이후에는 네트워크 사용량에 대한 요금만 지불하면 된다.

  • 비선점형 f1-micro VM 인스턴스 1개/월 (북 버지니아를 제외한 미국 지역)

  • 표준 영구 디스크 저장소 30GB/월

  • 스냅샷 저장소 5GB/월
  • 네트워크 트래픽 한도: 자세한 요금 산정 내용은 아래 링크 참조
    • https://cloud.google.com/network-tiers/pricing
    • 무료 사용 조건 내에서는 프리미엄 등급이 적용된다.
    • 가장 비싼 경우(다른 지역에서 중국으로 접속하는 트래픽) 1GB 당 0.46 달러 (한화 약 500원)이 부과된다.

2

레지스트리 파일 등록(윈도우 Vista, 7, 8.x, 10)

사용할 VPN이 윈도우 Vista, 7, 8.x, 10의 경우 아래 파일을 다운받아 레지스트리에 등록 후 재부팅 필요

download .reg file

클라우드 만들기

시작하기 > Compute Engine을 선택한다.

3

VM 인스턴스 항목을 선택한 후 만들기 선택

1

인스턴스 이름을 설정한다.

지역은 본인이 있는 지역과 가까운 지역을 선택하면된다. 머신 유형은 초소형으로 선택한다. VPN 서버로만 쓸 경우 초소형으로도 충분하다.

부팅디스크는 앞서 언급했듯이 debian 9를 사용한다. Fedora 계열보다 가볍고 빠르다.

11

인스턴스를 생성이 정상적으로 완료되면 아래와 같이 생성된 인스턴스를 확인할 수 있다. VPN 연결에 필요한 IP는 외부 IP이므로 외부 IP를 기억해둔다.

5

SSH 오른쪽에 화살표를 클릭하면 SSH 연결 메뉴가 표시된다. 브라우저 창에서 열기를 클릭하면 브라우저에서 바로 SSH 연결이 가능하다.

6

포트 설정하기

내부 IP 오른쪽에 (nic0) 을 클릭한다. 그 후 방화벽 규칙을 클릭한다.

12

방화벽 규칙 만들기를 클릭한다.

규칙 이름은 임의로 설정하면 된다.

대상은 네트워크의 모든 인스턴스로 설정한다.

소스 IP 범위는 0.0.0.0/0 으로 설정한다.

tcp 500, udp 500, 4500 번 포트를 열어준다.

13

SSH 접속

  • VM 인스턴스에서 바로 접속 가능
  • PUTTY를 이용하여 접속

PUTTY를 이용한 접속하는 경우 아래와 같이 하면 된다.

PUTTYgen을 실행시키고 generate 를누를 후 PUTTYgen 창 안에서 마우스를 자유롭게 이동시킨다.

7

키 생성이 완료되면 Save public key 버튼을 눌러 public key 파일을 저장시킨다. 이 후 Save private key 버튼을 눌러 private key도 저장시킨다.

저장한 public key 파일을 메모장으로 연다.

안에 저장된 key를 모두 한줄로 이어 붙인다.

그 후 맨 앞에는 ssh-rsa 맨 뒤에는 본인이 사용하는 구글 계정명을 집어넣는다.

그러면 아래와 같은 모습이 될 것이다.

1
ssh-rsa adfjiaejtlfgjklvjbkls...2435834682hfsah 구글계정명

메타데이터 > SSH키 에서 항목추가를 누른 후 위 내용을 붙여넣기 한다. 그 후 저장을 한다.

8

PUTTY를 실행한다.

9

Connection > SSH > Auth 항목을 선택한 후 Browse… 버튼을 눌러서 앞서 저장한 private key 파일을 선택한다.

10

이후 접속하면 구글 클라우드 서버로 접속 가능하다.

VPN 서버 설치

운영체제 업데이트를 진행한다.

1
2
sudo apt update
sudo apt upgrade

vpn 서버 다운로드 및 설치

1
2
wget https://git.io/vpnsetup -O vpnsetup.sh
nano -w vpnsetup.sh

그리고 PSK, 사용자명, 비밀번호를 설정한다. PSK의 경우 안전하게 사용하기 위해서는 최소 20개의 무작위 문자를 사용하는 것을 권유한다. 사용자명, 비번, PSK 내에 “ ‘ \ 와 같은 기호는 포함 시킬 수 없다.

사용자명과 비밀번호는 vpn 접속시에 사용할 사용자명과 비밀번호를 설정하는 것이다.

1
2
3
YOUR_IPSE_PSK='abcde12345'
YOUR_USERNAME='user'
YOUR_PASSWORD='password'

수정 완료 후 Ctrl + x를 누르고 ‘y’ 키를 누른 다음 ‘엔터’ 를 치면 저장 후 종료가 된다.

vpn 서버 설치 시작

1
sudo sh vpnsetup.sh

설치 완료 후 vpn 서버 재가동

1
2
sudo service ipsec restart
sudo service xl2tpd restart

클라이언트 설정

Windows 설정

설정 > VPN > VPN 연결 추가

연결 이름 : 임의로 설정

서버 이름 또는 주소 : 인스턴스 외부 IP 주소

VPN 종류 : L2TP/IPsec 및 미리 공유한 키

미리 공유한 키 : 앞서 설정한 PSK

로그인 정보 입력 : 사용자 이름 및 암호

사용자 이름 : 앞서 설정한 사용자명

암호 : 앞서 설정한 암호

내컴퓨터 > 네트워크 오른쪽 클릭 > 속성 > 어댑터 설정 변경

아래와 같이 설정 후 확인

14

iPhone 설정

설정 > VPN > VPN 구성 추가

유형 : L2TP

설명 : 임의로 설정

서버 : 인스턴스 외부 IP 주소

계정 : 앞서 설정한 사용자명

암호 : 앞서 설정한 암호

비밀 : 앞서 설정한 PSK

완료 후 사용

기타 기기 설정

참조 : https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md

주의 사항

IPsec/L2TP 연결의 경우 동일한 공유기에 접속한 여러 개의 디바이스로 VPN 서버에 연결할 경우 연결이 안될 수 있다. 대안으로는 IPsec/XAuth 방식으로 연결하는 것이다.

vpn 사용자 추가

1
wget -O add_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/add_vpn_user.sh

username_to_add와 password_to_add에 각각 추가할 사용자와 비밀번호를 넣으면된다.

1
sudo sh add_vpn_user.sh 'username_to_add' 'password_to_add'

vpn 사용자 제거

1
wget -O del_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/del_vpn_user.sh

username_to_delete에 제거할 사용자명을 넣으면 된다.

1
sudo sh del_vpn_user.sh 'username_to_delete'

vpn 서버 재가동

사용자 추가나 제거 후에 서버를 재가동해주면 추가 혹은 제거한 사용자가 서버에 반영된다.

1
2
sudo service ipsec restart
sudo service xl2tpd restart

참조 사이트

0%