본문 바로가기

시스템/OpenVPN

[OpenVPN] openvpn-monitor 설치하기(docker)

반응형

개요 


openvpn의 management를 사용하는 openvpn-monitor는 아래의 기능을 갖는다.

  • openvpn server version 
  • openvpn server status
  • 현재 접속자의 현황 정보 출력
  • 접속지 ip를 기반으로 하는 geo map 정보 출력

 

 

설치


 

참조 : https://github.com/ruimarinho/docker-openvpn-monitor

 

GitHub - ruimarinho/docker-openvpn-monitor: The trusted multi-platform web-based OpenVPN Monitor docker image.

The trusted multi-platform web-based OpenVPN Monitor docker image. - GitHub - ruimarinho/docker-openvpn-monitor: The trusted multi-platform web-based OpenVPN Monitor docker image.

github.com

 

OpenVPN 은 CentOS 7 에 Docker가 아닌 호스트에 설치가 되어 있다.(OpenVPN 설치는 여기 참조)

openvpn-monitor 설친는 간단히 docker로 진행 한다.(docker 설치는 여기  참조)

 

 

OpenVPN server.conf 수정

  • openvpn-monitor 은 기본적으로 openvpn management의 5555번 포트를 사용한다.
> vim /etc/openvpn/server/server.conf
...
management localhost 5555
...

 

  • 이후 openvpn 재시작 한다.

 

 

Docker 실행

  • openvpn-monitor 이미지를 다운 받고 실행 테스트를 위해  1회성으로 실행 해본다.
 docker run -p 80:80 --rm ruimarinho/openvpn-monitor

 

  • http://<openvpn server> 로 접근하면 빈화면만 나오며 로그에 아래와 같이 출력 된다.
> docker run -p 80:80 --rm ruimarinho/openvpn-monitor
...
INFO: Using config file: ./openvpn-monitor.conf
...

 

  • openvpn-monitor -> openvpn management 로 접근하면 현재 접속자 현황 정보가 출력 되어야 하지만 빈화면만 출력 되므로 컨테이너의 openvpn-monitor.conf를 수정할 필요가 있다.

 

openvpn-monitor container 수정


openvpn-monitor.conf 확인

  • openvpn-monitor 데몬 실행
docker run -d -p 80:80 ruimarinho/openvpn-monitor

 

  • 컨테이너 정보 확인
> docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED         STATUS         PORTS                NAMES
83c9d6c4ac96   ruimarinho/openvpn-monitor   "/entrypoint.sh guni…"   2 seconds ago   Up 2 seconds   0.0.0.0:80->80/tcp   optimistic_moore

 

  • 컨테이너 접근
docker exec -it 83c9d6c4ac96 bash

 

  • openvpn-monitor.conf 확인
    • geoip 정보외에 openvpn management 접근 설정이 없다.
root@83c9d6c4ac96:/openvpn-monitor# ls -al
total 116
...
-rw-r--r-- 1 root root    97 Aug 11 05:50 openvpn-monitor.conf
-rw-rw-r-- 1 root root   262 Feb 24  2021 openvpn-monitor.conf.example
...

root@83c9d6c4ac96:/openvpn-monitor# cat openvpn-monitor.conf
[OpenVPN-Monitor]
geoip_data=/var/lib/GeoIP/GeoLite2-City.mmdb
datetime_format=%d/%m/%Y %H:%M:%S

 

 

openvpn-monitor.conf 수정

  • openvpn-monitor.conf는 아래 예시로 호스트에 작성 한다.
    • site=Example : site 이름 입력(웹에 표시됨)
    • #logo=logo.jpg : 로고 이미지를 사용하고 싶으면 동일 디렉토리 images에 이미지를 저장해 준다.
    • latitude : map의 초기 위치로 위도 정보
    • longitude : map의 초기 위치로 경도 정보
    • host=localhost, port=5555 : openvpn managemant 정보
    • name=Staff VPN : 웹 menu에 표기될 이름
[openvpn-monitor]
site=Example
#logo=logo.jpg
latitude=37.517168
longitude=127.041296
maps=True
maps_height=500
geoip_data=/var/lib/GeoIP/GeoLite2-City.mmdb
datetime_format=%d/%m/%Y %H:%M:%S

[VPN1]
host=localhost
port=5555
name=Staff VPN
password=
show_disconnect=False

 

  • openvpn-monitor.conf 파일을 호스트경로에 작성하고 컨테이너에 복사하고 싶을 경우 아래와 같이 실행한다.
docker cp openvpn-monitor.conf 83c9d6c4ac96:/openvpn-monitor/openvpn-monitor.conf

 

 

openvpn-monitor.conf 템플릿 수정

  • 컨테이너 로그에 openvpn-monitor.toml 에 의해 openvpn-monitor.conf를 작성하는 템플릿이 실행된다.
> docker run -p 80:80 --rm ruimarinho/openvpn-monitor
...
2022-08-11T05:40:30Z ce29bcf11efa confd[7]: DEBUG Loading template resources from confdir /etc/confd
2022-08-11T05:40:30Z ce29bcf11efa confd[7]: DEBUG Found template: /etc/confd/conf.d/openvpn-monitor.toml
2022-08-11T05:40:30Z ce29bcf11efa confd[7]: DEBUG Loading template resource from /etc/confd/conf.d/openvpn-monitor.toml
...

 

  • 수동으로 openvpn-monitor.conf를 수정하고 이미지를 commit 할때 템플릿에 의해 설정한 conf 파일이 덮어 씌어지므로 실행되지 않게 파일을 이동 시켜 준다.
# 컨테이너 접속
> docker exec -it 83c9d6c4ac96 bash

# 템플릿 파일
cat /etc/confd/conf.d/openvpn-monitor.toml
[template]
src = "openvpn-monitor.conf.tmpl"
dest = "/openvpn-monitor/openvpn-monitor.conf"
keys = [
  "/openvpnmonitor"
]

# root 디렉토리로 이동
> mv /etc/confd/conf.d/openvpn-monitor.toml ~

 

 

 

openvpn-monitor container commit

  • 수정된 컨테이너를 이미지로 commit 한다.
docker commit 83c9d6c4ac96 openvpn-monitor:ploz

 

 

실행


  • openvpn-monitor.conf 에 의해 openvpn management 인 localhost 5555번 포트를 찾게 된다.
  • 컨테이너 내에서 호스트의 localhost를 찾아야 되므로 docker 실행 시 network을 host으로 지정하여 서로 통신 할 수 있게 한다.
docker run -d -p 80:80 --network host --name openvpn-monitor openvpn-monitor:ploz

 

 

접속

  • http://<openvpn server> 로 접근한다.

 

 

로그

  • openvpn-service.log 
> cat /var/log/openvpn/openvpn-service.log
...
MANAGEMENT: Client connected from [AF_INET]127.0.0.1:5555
MANAGEMENT: CMD 'version'
MANAGEMENT: CMD 'state'
MANAGEMENT: CMD 'status 3'
MANAGEMENT: CMD 'quit'
MANAGEMENT: Client disconnected
...

 

반응형