Outline 을 이용해 AWS VPN 서버 구축

시놀로지 NAS와 윈도우PC로 서버 개발환경 및 운영환경을 유플러스와 IPTIME 공유기로 Home 네트웍에 구성해두었었는데 불필요한 장비는 방출하고 클라우드로 모두 올릴 생각을 하던 중 스타트업과 같은 환경을 구성해보기로 합니다. 

 

일단은 심플하게 외부서비스는 인터넷망으로 접근가능하게 열어두고 외부서비스 <==> 내부서비스 간의 통신은 사설망으로 설정했습니다. 회사에서 내부서비스로 접근도 가능하게 회사 인터넷망의 공인IP를 내부서비스에 접근가능하도록 방화벽에 추가해두었는데요. 외부 혹은 모바일에서 내부서비스에 접근하도록 하는 것은 VPN 을 통하게 하려 합니다.

 

 

구축용 VPN으로 SoftEhter VPN 과 Outline VPN이 있는데 둘다 설치해보니 Outline이 정말 쉽고 간편하게 VPN기능을 제공해줍니다. 

 

https://getoutline.org/ko/

 

Outline VPN: 자유롭고 열린 인터넷에 액세스하세요

Outline을 사용하면 누구나 자신의 VPN을 만들고 실행하며 액세스 권한을 공유할 수 있습니다. Outline은 차단하기 어렵도록 만들어졌습니다. 또한 사용자가 서버 위치를 비롯해 서버 설정을 관리할

getoutline.org

 

 

 

Outline은 구축형이어서 클라우드 서버가 필요합니다. Outline에 따로 가입을 진행하지 않아도 바로 설치해서 사용 가능합니다. 전 AWS Lightsail 로 환경을 구성중이어서 VPN서버용 최소단위 인스턴스를 하나 생성해서 구축을 진행했습니다. 서버관리자는 웹 형태로 제공되지 않고 설치형 프로그램으로 제공이 됩니다. 

 

 

Windows, Linux, MacOS 버전으로 제공이 되며 설치 후 실행하면 서버 매니저가 뜨게 되는데 여기서 설치를 위한 과정을 진행하시면 됩니다.

서버추가 버튼을 누르시면 아래와 같은 설정 화면을 만나게 됩니다. DigitalOcean, Google Cloud Platform, Amazon Lightsail, VULTR 등 다양한 웹 서버 환경에 대한 쉬운 설치 지원이 제공됩니다. 전 아마존 Lightsail 이어서 이걸 선택하고 설정을 진행했습니다.

 

 

 

1단계 방화벽 구성을 진행해줍니다. All TCP + UDP 포트를 개방해줍니다. 

2단계, 서버에서 실행할 명령어를 제공해줍니다. 서버 환경에 맞게 작성된 설치 스크립트를 실행만 해주면 Outline 과 통신할 서버 구성 설치가 진행이 됩니다.

3단계, 설치 완료되면 apiUrl 과 certSha256 키가 발급이 되는데 이걸 복사 붙여넣기 해주시면 서버추가가 끝납니다.

 

 

 

설치 스크립트 실행 과정이 진행된 내용입니다. 진행 완료후 apiUrl 과 certSha256 키 값이 출력되고 그 아래에 설정된 방화벽 포트 정보가 함께 나옵니다

 

ubuntu@ip-0-0-0-0:~$ sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jig
saw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)"
> Verifying that Docker is installed .......... NOT INSTALLED
> Would you like to install Docker? This will run 'curl https://get.docker.com/ | sh'. [Y/
n] Y
> Installing Docker ........................... OK
> Verifying Docker installation ............... OK
> Verifying that Docker daemon is running ..... OK
> Setting PUBLIC_HOSTNAME to external IP ...... OK
> Creating persistent state dir ............... OK
> Generating secret key ....................... OK
> Generating TLS certificate .................. OK
> Generating SHA-256 certificate fingerprint .. OK
> Writing config .............................. OK
> Starting Shadowbox .......................... OK
> Starting Watchtower ......................... OK
> Waiting for Outline server to be healthy .... OK
> Creating first user ......................... OK
> Adding API URL to config .................... OK
> Checking host firewall ...................... OK

CONGRATULATIONS! Your Outline server is up and running.

To manage your Outline server, please copy the following line (including curly
brackets) into Step 2 of the Outline Manager interface:

{"apiUrl":"apiurl 값 민감정보","certSha256":"certSha256 값 민감정보"}

If you have connection problems, it may be that your router or cloud provider
blocks inbound connections, even though your machine seems to allow them.

Make sure to open the following ports on your firewall, router or cloud provider:
- Management port 1858, for TCP
- Access key port 1550, for TCP and UDP

 

 

 

전체 개방된 방화벽 정보를 삭제하고 Management Port와 Access Key Port 정보를 개방해줍니다.

 

 

서버추가가 완료되면 좌측 서버 목록에 생성된 서버가 나타나게 되며 선택시 생성된 키 정보와 전송된 데이터량이 표시가 됩니다.  

 

환경설정 버튼을 통해 서버 이름 및 기타 정보를 관리할 수 있습니다.

 

 

생성된 키 우측 공유 버튼을 누르면 액세스 공유 창이 뜨는데 아웃라인 클라이언트 앱 정보와 액세스 키 정보가 나타나게 됩니다. 이를 VPN 사용자로 초대하고 싶은 유저에게 전달하고 유저는 클라이언트 앱에 액세스 키를 넣어 접근할 수 있게 되는 방식입니다.

 

키는 21개까지 만들어보았는데 문제 없었습니다. 얼마까지 제약이 걸려 있는지는 모르겠습니다. 

 

 

각 키마다 사용자를 할당해 데이터 제한을 걸어줄수도 있습니다. 토렌트 같은 프로그램을 돌리는 사용자가 있어도 데이터 제한이 있어서 안정적인 트래픽 운영이 가능할듯 합니다.