반응형
개요
openvpn의 management를 사용하는 openvpn-monitor는 아래의 기능을 갖는다.
- openvpn server version
- openvpn server status
- 현재 접속자의 현황 정보 출력
- 접속지 ip를 기반으로 하는 geo map 정보 출력
설치
참조 : https://github.com/ruimarinho/docker-openvpn-monitor
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
...
반응형
'시스템 > OpenVPN' 카테고리의 다른 글
OpenVPN | Server side script로 동시접속 제한 하기 (1) | 2022.09.16 |
---|---|
[OpenVPN] management를 이용한 사용자 접속해제 하기 (0) | 2022.08.11 |
[OpenVPN] AD(Active Directory) 연동 (0) | 2022.05.12 |
[OpenVPN] PAM인증을 통한 Client ID/PASSWORD 방식 접속 (2) | 2022.05.12 |
[OpenVPN] Client Key 파기 + Key 관리 (0) | 2022.05.12 |