Docker에서 openvpn 서버 실행 및 연결
포스트
취소

Docker에서 openvpn 서버 실행 및 연결

준비

서버

  • docker
  • make
    • apt install make 을 통해 설치할 수 있다

설치 방법은 Ubuntu 22.04 기준으로 작성되었다

클라이언트

  • 각 플랫폼에 맞는 OPENVPN 클라이언트

OPENVPN 서버 열기

Makefile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
info:
	@echo OVPN_NAME : $(OVPN_NAME)
	@echo OVPN_HOST : $(OVPN_HOST)
	@echo OVPN_PORT : $(OVPN_PORT)
	@echo OVPN_PORT_HTTP : $(OVPN_PORT_HTTP)

start:
	docker run -it --cap-add=NET_ADMIN -p $(OVPN_PORT):1194/udp -p $(OVPN_PORT_HTTP):8080/tcp -e HOST_ADDR=$(OVPN_HOST) --name $(OVPN_NAME) alekslitvinenk/openvpn

stop:
	docker container rm $(OVPN_NAME) -f

version:
	docker exec $(OVPN_NAME) ./version.sh

open:
	docker exec -it $(OVPN_NAME) /bin/bash

pull:
	docker pull alekslitvinenk/openvpn

다음을 복사해 Makefile로 저장한다

환경변수 등록

1
2
3
4
5
6
export OVPN_NAME="dockovpn"

export OVPN_HOST="<IP주소>"

export OVPN_PORT="1194"
export OVPN_PORT_HTTP="80"

다음 환경변수를 등록한다

OVPN_NAME은 docker의 이름을 적는다

OVPN_HOST에는 사설IP가 아닌 공용 IP를 적어야 함에 주의해야 한다

OVPN_PORT는 VPN 연결을 위한 포트로 AWS같은 클라우드 서비스라면 해당 포트를 열어놓아야 하며, 홈서버에서 연다면 공유기에서 포트포워딩을 하는 등의 작업이 필요하다

OVPN_PORT_HTTP는 실행 후 클라이언트 설정 파일을 내려받기 위한 http서버의 포트로, 한번 내려받은 후에는 서버가 닫힌다. 따라서 계속 포트를 열어둘 필요는 없다

서버 열기

1
make info

현재 환경 변수의 상태를 확인한다

1
make start

OPENVPN 서버를 실행한다

  • CTRL+P CTRL+Q 를 통해 터미널로 나갈 수 있다
  • CTRL+C로 인터럽트를 사용 시 컨테이너가 종료된다
1
make stop

openvpn 서버를 종료한다

클라이언트에서 vpn 연결

OPENVPN 서버 실행시 OVPN_PORT_HTTP 포트로 http 서버가 열린다

해당 http 서버에 접속시 클라이언트 설정 파일(.ovpn)을 다운로드하고 http 서버가 종료된다

각 플랫폼에서 OPENVPN 클라이언트를 받고 해당 설정 파일을 이용해 서버에 접속할 수 있다

특정 대역만 vpn 이용하기

내부망에 접속하기 위한 목적으로 vpn 사용시 내부망 접속이 아닌 경우에도 vpn서버를 통해 접속하는 것은 불필요하다

특정 클라이언트 설정 파일에 다음을 추가해 특정 대역만 vpn을 이용할 수 있다

1
2
route-nopull
route 192.168.0.0 255.255.255.0

route-nopull은 모든 연결을 vpn을 통해 연결하는 것을 비활성화하며

route 192.168.10.0 255.255.255.0192.168.10.0/24 대역은 vpn 연결을 사용하겠다는 의미이다

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
바로가기