본문으로 건너뛰기

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
  4. OpenVPN 초기 설정을 진행한다.

    $ docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://{{ FIXME }} -N -d
    • {{ FIXME }} 라고 적힌 부분을 실 도메인으로 설정한다.
    • 만약 개인 도메인이 없는 경우, EC2 Public DNS 를 사용해도 된다.
  5. OpenVPN CA Certificate 와 비밀키를 생성한다.

    $ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
    • 명령어를 입력하면 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
  7. 클라이언트의 접속 정보를 생성한다.

    $ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full {{ FIXME }} nopass
    • {{ FIXME }} 라고 적힌 부분을 사용자 이름으로 변경한다.
  8. 클라이언트의 접속 정보를 가져온다.

    $ docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_getclient {{ FIXME }} > {{ FIXME }}.ovpn
    • {{ 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

결론​

OpenVPN for Docker 를 사용하면 5분만에 VPN 서버를 구축할 수 있다.

간단하게 VPN 서버를 띄워서 사용할 땐 좋지만, 제대로 사용하려면 AWS Client VPN 을 사용하는게 좋지 않을까 싶다.