본문 바로가기

IT/NAS

[자작NAS] 우분투 서버에 Docker로 OpenVPN-AS 설치

반응형

VPN(Virtual Private Network)은 다양한 용도로 활용됩니다.

먼저 해외의 IP를 차단하는 쇼핑몰 사이트 등에 접속하기 위해 사용할 수 있습니다.

혹은 공유기 내부를 외부에서 접속할 때 VPN 연결만 허용하게 해서 보안을 강화할 수 있습니다.

OpenVPN은 오픈소스 VPN으로 직접 설치해서 사용이 가능한 VPN입니다.

OpenVPN-AS(OpenVPN Access Server)는 OpenVPN에 GUI를 통한 다양한 추가 기능을 제공합니다.

기본적으로 최대 2대의 기기의 동시 접속이 가능하며 그 이상의 동시 접속은 유료입니다.

Docker로 OpenVPN-AS를 동작시키는 방법을 알아보겠습니다.

 

먼저 아래 명령어로 외부로 나가는 네트워크 인터페이스의 이름을 획득합니다.

ifconfig

공유기 연결 환경에서는 공유기에서 할당받은 IP를 사용하는 인터페이스의 이름을 확인하면 됩니다.

네트워크 인터페이스 확인

여기서는 ens160이라고 되어 있는데 eth0 등으로 설정되어 있기도 합니다.

다음으로 OpenVPN-AS의 설정 파일을 저장할 디렉토리를 생성합니다.

sudo mkdir -p /data/openvpn-as/config

이제 해당 네트워크 인터페이스 이름과 함께 아래 명령어로 컨테이너를 생성합니다.

sudo docker create \
--name=openvpn-as \
--cap-add=NET_ADMIN \
-e PUID=$UID \
-e PGID=$(id -g $USER) \
-e TZ=Asia/Seoul \
-e INTERFACE=ens160 \
-p 943:943 \
-p 9443:9443 \
-p 1194:1194/udp \
-v /data/openvpn-as/config:/config \
--restart=unless-stopped \
linuxserver/openvpn-as

각 포트 번호는 다음과 같습니다.

943 Admin GUI 포트
9443 TCP 포트
1194 UDP 포트

해당 포트들을 당연히 포트 포워딩 설정에 추가되어 있어야 합니다.

Letsencrypt 설정을 통한 리버스 프록시 설정은 아래 링크에서 확인 가능합니다.

2019/02/13 - [IT/NAS] - [자작NAS] 우분투 서버에 Docker로 Let's Encrypt 적용 (DuckDNS)

 

[자작NAS] 우분투 서버에 Docker로 Let's Encrypt 적용 (DuckDNS)

기존에 Docker를 통한 Let's Encrypt 설정 내용이 변경되었습니다. 기존 글은 아래 링크에서 확인 가능합니다. 2018/11/09 - [IT/NAS] - [자작NAS] 우분투 서버에 Docker로 Let's Encrypt 적용하기 DuckDNS 사용시..

psychoria.tistory.com

OpenVPN-AS를 위한 리버스 프록시 파일의 .sample을 제거해서 복사한 후 수정하면 됩니다.

아래와 같은 부분이 두 군데 있는데 ens160이나 eth0에 할당된 IP로 설정해주면 됩니다.

set $upstream_app 192.168.1.15;

이제 생성한 컨테이너를 실행합니다.

sudo docker start openvpn-as

처음 접속시 아래와 같은 형태로 접속하면 됩니다.

https://IP주소 혹은 DDNS:943/admin

기본 로그인 계정 정보는 admin // password 입니다.

처음 로그인 후 보이는 화면에서 Agree 버튼을 누르고 다음으로 이동합니다.

End User License Agreement

먼저 우측의 AUTHENTICATION 하위의 General 메뉴를 선택합니다.

Authentication

위와 같이 Local이 활성화되고 나머지가 비활성화 상태로 되어 있으면 됩니다.

다음으로 USER MANAGEMENT 메뉴 하위의 User Permissions를 선택합니다.

계정 설정

사용을 원하는 계정을 admin 계정 밑의 텍스트 박스에 입력하고 AdminAllow Auto-login에 체크합니다.

비밀번호는 More Settings 버튼을 누르면 설정 가능합니다.

설정 이후에 하단의 Save Settings 버튼을 클릭하면 설정이 반영됩니다.

서버 업데이트

서버를 업데이트해주면 계정 생성이 완료됩니다.

이제 로그아웃 이후에 생성된 계정으로 다시 로그인한 후 User Permissions 메뉴로 다시 이동합니다.

위의 이미지와 다르게 admin 계정의 Delete 체크박스가 활성화됩니다.

보안을 위해서 admin 계정을 삭제하면 되는데 삭제를 해도 admin 계정 접근이 계속 가능한 문제가 있습니다.

이 문제를 해결하기 위해 다음 파일을 수정합니다.

sudo nano /data/openvpn-as/config/etc/as.conf

중간 정도에서 아래와 같은 내용을 확인할 수 있습니다.

boot_pam_users.0=admin

아래와 같이 해당 라인을 변경해줍니다.

boot_pam_users.0=kjhvkhv
# boot_pam_users.0=admin

컨테이너를 다시 실행하면 admin 계정이 완전히 비활성화됩니다.

sudo docker restart openvpn-as

VPN 연결은 OpenVPN Connect를 통해서 가능합니다.

VPN 설정

DDNS 접속 주소 등을 입력하고 NEXT 버튼을 클릭합니다.

VPN 설정

생성한 유저 정보를 입력하고 원하는 Profile Name을 입력해줍니다.

그리고 Import autologin profile에 체크한 후 IMPORT를 누릅니다.

연결 상태

연결에 성공하면 위와 같이 데이터 전송량 등이 표시가 됩니다.

AWS의 Lightsail 등에 설치하면 다양한 국가의 VPN을 생성할 수 있습니다.

반응형