OpenVPN 서버 구축
OpenVPN 서버 구축
C19 가 심각해지면서 전사 재택 근무로 전환되었다.
재택근무로 전환하게 되면서 내부 관리자 도구에 접속할 수 없는 문제가 발생하게 되었는데, 이를 해결하기 위해 VPN 서버를 구축하기로 했다.
VPN 을 구축하는데 큰 시간을 쏟을 수 없는 상황이기 때문에 OpenVPN 을 사용하기로 했고, 이 설치 조차 간단하게 하기 위해 OpenVPN for Docker 을 사용했다.
Step
-
AWS 에 EC2 Instance 를 1개 생성한다. (
t3.micro혹은t3.small이면 충분하다. )- Public Subnet 에 Ubuntu 20.04 를 설치
- ElasticIP 할당
-
Docker 를 설치한다.
-
Docker 이미지를 다운로드 받는다
$ docker pull kylemanna/openvpn -
OpenVPN 초기 설정을 진행한다.
$ docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://{{ FIXME }} -N -d{{ FIXME }}라고 적힌 부분을 실 도메인으로 설정한다.- 만약 개인 도메인이 없는 경우, EC2 Public DNS 를 사용해도 된다.
-
OpenVPN CA Certificate 와 비밀키를 생성한다.
$ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki- 명령어를 입력하면
Passphrase를 입력한다. comman name은 기본값으로 사용한다.
- 명령어를 입력하면
-
OpenVPN 서버를 실행한다.
$ docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --name="ovpn" --restart="always" --cap-add=NET_ADMIN kylemanna/openvpn -
클라이언트의 접속 정보를 생성한다.
$ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full {{ FIXME }} nopass{{ FIXME }}라고 적힌 부분을 사용자 이름으로 변경한다.
-
클라이언트의 접속 정보를 가져온다.
$ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_getclient {{ FIXME }} > {{ FIXME }}.ovpn{{ FIXME }}라고 적힌 부분을 7번에서 지정한 사용자 이름으로 변경한다.
-
EC2 보안 그룹을 설정한다.
UDP1194포트를 열어둬야 한다.
-
OpenVPN 클라이언트를 다운로드 받고 접속한다.
- MAC OS X 에서는
Tunnelblick을 사용한다.
- MAC OS X 에서는
명령어 팁
-
클라이언트 제거
$ docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_revokeclient {{ FIXME }} remove
결론
OpenVPN for Docker 를 사용하면 5분만에 VPN 서버를 구축할 수 있다.
간단하게 VPN 서버를 띄워서 사용할 땐 좋지만, 제대로 사용하려면 AWS Client VPN 을 사용하는게 좋지 않을까 싶다.