제가 사용하고 있는 툴을 이미 사용하시는분이 있어서 사용법은 이분걸 그대로 베겼습니다.
다만 여기에 추가되는 기능을 추가했습니다
해당 프로그램을 받아서 테스트 해 본 결과 TUN에서는 잘 돌아가는데 TAP에는 안돌아가는것을 확인했습니다.
클라이언트가 안보여서 접속 대수만 나오는 상황이었습니다.
소스코드를 분석하여 TAP 도 그럭저럭 잘 나오게 하는 방법을 찾아 공유합니다.
원인은 TAP의 경우 로컬 IP Address 가 나오지 않는데, 이를 강제로 출력시켜 모든 데이터를 나오는 것 처럼 표시하는 것이 원리입니다.
먼저 335째줄 근처에 i=0을 추가하여 포 문 밖에서 변수를 지정합니다. 이는 각 로컬 IP Address에 강제로 어떤 값을 변화하여 채우기 위함입니다. 다르니깐 중복되어 표시가 되질 않더군요
330 geoip_version = self.geoip_version
331 client_section = False
332 routes_section = False
333 sessions = {}
334 client_session = {}
335 i=0
336 for line in data.splitlines():
337 parts = deque(line.split('\t'))
338 if args.debug:
339 debug("=== begin split line on parse status \n{0!s}\n=== end split line on parse status".format(parts))
340
중간에 429째줄에는 원래 빈 칸 '' 이 되어있는데 이 부분이 유니크한 스트링이 들어가야하는것이 핵심입니다.
이 부분에 String + 변수를 넣어 유니크한 값을 만들어줍니다.
재주가 있다면 해당 변수에 I 가 아닌 IP 주소를 넣어도 무방합니다만, 제 상식으로는 서버에 있지도 않은 IP주소를 찾아 넣을 방법이 없더군요.
426 if local_ipv4:
427 session['local_ip'] = ip_address(local_ipv4)
428 else:
429 session['local_ip'] = "TAP_IP"+str(i);
430 if version.major == 2 and version.minor >= 4:
포 문 의 아래쪽에는 i를 더하는 코드를 추가합니다.
447 if routes_section:
448 local_ip = parts[1]
449 last_seen = parts[5]
450 if local_ip in sessions:
451 sessions[local_ip]['last_seen'] = get_date(last_seen, uts=True)
452 i=i+1
453 if args.debug:
454 if sessions:
이렇게 하면

이렇게 잘 나옵니다.
아래는 Openvpn-monitor 의 일반 사용법입니다.
출처 : https://dejavuqa.tistory.com/250
Tongchun 2018. 9. 5. 17:23님 감사합니다. ^^
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
현재 VPN에 접속하고 있는 세션을 확인하고 싶어 찾아보던 중 괜찮은 툴이 있어 설치해 봅니다.
https://github.com/furlongm/openvpn-monitor
웹 서버로 지원되는 툴입니다.
바로 설치해 봅시다.
구성은 apache로 하겠습니다. openvpn-monitor는 openven 서버에 설치합니다.
제일먼저 openvpn-monitor가 사용하는 패키지들을 설치해 줍니다.
1
$ sudo apt-get -y install python-geoip python-ipaddr python-humanize python-bottle python-semantic-version apache2 libapache2-mod-wsgi git wget geoip-database-extra
그리고 /var/www/html로 이동해 openvpn-monitor를 다운받습니다.
1
2
$ cd /var/www/html
$ sudo git clone https://github.com/furlongm/openvpn-monitor.git
apache2와 openvpn-monitor를 연결해 줍니다.
1
$ sudo bash -c 'echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/openvpn-monitor.py" > /etc/apache2/conf-available/openvpn-monitor.conf'
apache2의 환경설정도 잡아줍니다.
1
$ sudo a2enconf openvpn-monitor
openvpn의 데이터를 apache 서버가 받아 웹으로 보여주게 됩니다.
openvpn의 server.conf 파일에 management 설정을 추가합니다.
server.conf 파일을 열고...
1
$ sudo vim /etc/openvpn/server.conf
마지막 라인에 아래와 같이 추가합니다.
management <openvpn 서버의 내부 IP> 5555
1
2
# openvpn-monitor
management 192.168.0.185 5555
server.conf 파일을 저장하고 openvpn을 재시작 해줍니다.
1
$ sudo systemctl restart openvpn@server
참고로 management 설정을 추가하면 telnet으로 openvpn의 상태 점검을 할 수 있습니다.
telnet 192.168.0.185 5555
이번에는 openven-monitor의 설정을 잡을 차례입니다.
sample 설정파일을 복사해 새로 만들어 줍니다.
1
2
$ cd /var/www/html/openvpn-monitor
$ sudo cp openvpn-monitor.conf.example openvpn-monitor.conf
openvpn-monitor.conf 파일을 열고 아래와 같이 수정합니다.
1
$ sudo vim openvpn-monitor.conf
수정해야 할 것은 site 명, 회사의 좌표(위도, 경도), datetime도 우리가 보기좋게 바꿔주고,
host는 openvpn 서버의 ip로 수정합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[openvpn-monitor]
site=nGle
#logo=logo.jpg
latitude=37.411293
longitude=127.094373
maps=True
geoip_data=/usr/share/GeoIP/GeoIPCity.dat
datetime_format=%Y-%m-%d %H:%M:%S
[VPN1]
host=192.168.0.185
port=5555
name=Staff VPN
show_disconnect=False
openvpn-monitor.conf 파일을 저장하고 나옵니다.
이제 apache 서버를 재시작 해줍니다.
1
$ sudo systemctl restart apache2
reboot 후에도 자동으로 실행되도록 설정도 해줍니다.
1
$ sudo systemctl enable apache2
바로 웹서버를 열면 보이지 않을 겁니다. 방화벽 설정이 되어 있거든요.
방화벽에 80 포트와 5555 포트도 추가해 줍니다.
1
2
$ sudo ufw allow 80
$ sudo ufw allow 5555
추가했다면 방화벽을 재실행 합니다.
1
2
$ sudo ufw disable
$ sudo ufw enable
자, 이제 설정이 완료되었습니다.
브라우저를 열고 아래와 같이 접속합니다.
http://<openvpn-monitor ip>/openvpn-monitor
저는 먼저 tongchun 계정으로 VPN에 접속했으며 아래와 같이 보입니다.

'네트워크,보안' 카테고리의 다른 글
| OPENWRT WIFI 인터페이스 Watchdog 예제 (0) | 2020.02.24 |
|---|---|
| OpenWrt TAP 셋팅 (0) | 2019.12.26 |
| OpenVPN-TAP 우분투계열에서 자동으로 랜카드 올리기 (0) | 2019.12.24 |
| OPENVPN 여러 인스턴스 돌릴때 몇 가지 셋팅 고정하기. (0) | 2019.10.24 |
| pivpn Split Tunneling 추가하기, 라우팅 테이블 넣기 (0) | 2019.10.22 |