Blog

OpenVPN 서버 구축

OpenVPN 서버 구축

C19 가 심각해지면서 전사 재택 근무로 전환되었다.
재택근무로 전환하게 되면서 내부 관리자 도구에 접속할 수 없는 문제가 발생하게 되었는데, 이를 해결하기 위해 VPN 서버를 구축하기로 했다.
VPN 을 구축하는데 큰 시간을 쏟을 수 없는 상황이기 때문에 OpenVPN 을 사용하기로 했고, 이 설치 조차 간단하게 하기 위해 OpenVPN for Docker 을 사용했다.

Step

1.
AWS 에 EC2 Instance 를 1개 생성한다. ( t3.micro 혹은 t3.small 이면 충분하다. )
Public Subnet 에 Ubuntu 20.04 를 설치
ElasticIP 할당
2.
Docker 를 설치한다.
3.
Docker 이미지를 다운로드 받는다
$ docker pull kylemanna/openvpn
Shell
복사
4.
OpenVPN 초기 설정을 진행한다.
$ docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://{{ FIXME }} -N -d
Shell
복사
{{ FIXME }} 라고 적힌 부분을 실 도메인으로 설정한다.
만약 개인 도메인이 없는 경우, EC2 Public DNS 를 사용해도 된다.
5.
OpenVPN CA Certificate 와 비밀키를 생성한다.
$ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
Shell
복사
명령어를 입력하면 Passphrase 를 입력한다.
comman name 은 기본값으로 사용한다.
6.
OpenVPN 서버를 실행한다.
$ docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --name="ovpn" --restart="always" --cap-add=NET_ADMIN kylemanna/openvpn
Shell
복사
7.
클라이언트의 접속 정보를 생성한다.
$ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full {{ FIXME }} nopass
Shell
복사
{{ FIXME }} 라고 적힌 부분을 사용자 이름으로 변경한다.
8.
클라이언트의 접속 정보를 가져온다.
$ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_getclient {{ FIXME }} > {{ FIXME }}.ovpn
Shell
복사
{{ FIXME }} 라고 적힌 부분을 7번에서 지정한 사용자 이름으로 변경한다.
9.
EC2 보안 그룹을 설정한다.
UDP 1194 포트를 열어둬야 한다.
10.
OpenVPN 클라이언트를 다운로드 받고 접속한다.
MAC OS X 에서는 Tunnelblick 을 사용한다.

명령어 팁

클라이언트 제거
$ docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_revokeclient {{ FIXME }} remove
Shell
복사

결론

OpenVPN for Docker 를 사용하면 5분만에 VPN 서버를 구축할 수 있다.
간단하게 VPN 서버를 띄워서 사용할 땐 좋지만, 제대로 사용하려면 AWS Client VPN 을 사용하는게 좋지 않을까 싶다.