연결된 사용자를 확인하여 VPN 서버를 여는 방법은 무엇입니까?


59

Django 프레임 워크로 OpenVPN 사용자를 관리하기위한 웹 사이트를 개발 중입니다. 그러나 OpenVPN에서 활성 사용자를 추출 할 수있는 방법이 있는지 알아야합니다. 내 서버에서 Ubuntu 12.04를 실행 중입니다.

답변:


84

보여줄 수있는 상태 로그가 있어야합니다. 예를 들면 다음과 같습니다.

cat /etc/openvpn/openvpn-status.log

편집하다:

--management IP port [pw-file]또는 플래그를 추가하거나 동일한 지시문을에 추가하십시오 ( server.conf예 :

management localhost 7505

이를 통해 해당 포트로 텔넷으로 연결하고 실행할 명령 목록을 제공 할 수 있습니다.

telnet localhost 7505

help


1
감사하지만 파일 변경 사항을 감시하지 않는 다른 방법이 있습니까? 예를 들어 연결된 사용자를 나열하는 라이브러리?
Hamid FzM

1
@HamidFzM 라이브러리에 대해 잘 모르겠다면 편집으로 추가 한 관리 인터페이스를 사용할 수 있습니다. 그것은 확실히 당신의 안전에 해가 될 것 같은 로컬 호스트보다는 IP 기타를 사용하지 마십시오
c4urself

@ c4urself, .log에 대한 내 출력은 다음과 같습니다. bit.ly/1ORnsYp 연결된 사용자를 어디에서 볼 수 있습니까? 이 .log를 통해 할당 된 IP를 볼 수 있습니까?
Maxim V. Pavlov

@ MaximV.Pavlov는 귀하의 경우에 아무도 연결되어 있지 않은 것 같습니다. 예, IP 주소가 표시됩니다.
c4urself

2
/etc/openvpn/openvpn-status.log데비안에서 나를 위해 일하지 않았고 결코 바뀌지 /var/run/openvpn/server.status않았으며 대신 완벽하게 작동했습니다.
Nelson

20

@sekrett 답변 을 완료하려면 :

killall -USR2 openvpn ; tail -f /var/log/syslog

계속 작동하며 "일반적인"킬이 아니라 일부 통계 인쇄 요청입니다.

표시되는 통계는 매우 읽기 쉽습니다. 샘플 출력 :

Oct 14 07:34:14 vpn2 openvpn[20959]: Updated,Fri Oct 14 07:34:14 2016
Oct 14 07:34:14 vpn2 openvpn[20959]: Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
Oct 14 07:26:26 vpn2 openvpn[20959]:
10.8.0.132,hostname1,213.219.XXX.XXX:63765,Fri Oct 14 07:25:01 2016
Oct 14 07:26:26 vpn2 openvpn[20959]:
10.8.0.242,hostname2,213.219.XXX.XXX:62416,Sun Sep 25 03:49:19 2016

개선 주셔서 감사합니다. 내 대답은 옳았지만 예제와 설명이 부족합니다. :)
sekrett

7

나는 나 자신도 똑같은 필요를 얻었고 내가 찾은 가장 쉬운 해결책은 언급 한 텔넷을 사용하여 관리 인터페이스에 연결하는 것입니다 ( 서버 구성 파일에 관리 로컬 호스트 6666 을 추가해야 합니다).

정확한 클라이언트 수를 얻으려면 다음을 수행하십시오.

  • 텔넷 로컬 호스트 6666
  • 지위

그런 다음 많은 로그를 얻을 수 있습니다.

10.9.10.11,test-docker,52.58.48.98:56859,Wed May  4 09:37:34 2016
10.9.7.45,test-docker,52.58.156.80:38774,Wed May  4 09:36:59 2016
10.9.1.103,test-docker,52.58.161.230:52201,Wed May  4 09:35:47 2016
GLOBAL STATS
Max bcast/mcast queue length,0
END
>CLIENT:ESTABLISHED,19845
>CLIENT:ENV,n_clients=19361
>CLIENT:ENV,time_unix=1462357164
  • =>> CLIENT : ENV, n_clients = 19361을 찾으십시오.

필자의 경우 매우 많은 수의 클라이언트가 있으므로 로그 파일을 사용하는 것은 그리 실용적이지 않습니다.


귀하의 지위 명령이 도움이되었습니다, thx
Mohammed Noureldin

4

통계 정보를 syslog에 기록하도록 usr2 신호를 openvpn 프로세스로 보낼 수도 있습니다. 이것은 안전합니다. 전에 관리 인터페이스를 활성화하지 않은 경우 다시 부팅 할 필요가 없습니다.


이것에 대한 명령을 쓸 수 있습니까?
Shayan_Aryan

1
@MichaelC는 다음과 같이 썼습니다 killall -USR2 openvpn. 그런 다음 로그를보십시오. 그것은 수 있습니다 /var/log/syslog또는 /var/log/messages배포판에 따라 달라집니다.
sekrett

하지만 openvpn을 죽이지 않습니까?
Shayan_Aryan

kill명령은 다른 신호를 보낼 수 있습니다, USR2는 죽이지 않고 단지 신호일뿐입니다. linux.org/threads/kill-signals-and-commands-revised.11625 또는 다음을 실행 하여 목록을 볼 수 있습니다 kill -l.
sekrett

방금 시도했습니다. 연결된 클라이언트 수에 대한 정보를 제공하지 않습니다
Shayan_Aryan

3

회사 OpenVPN 서버를 관리하며 활성 연결을 보는 방식은 다음과 같습니다.

/etc/openvpn/server.conf에 추가

management 127.0.0.1 5555

openvpn 서버를 다시 시작하십시오

systemctl restart openvpn@server.service

OpenVPN Monitor Python 패키지 추가-Gunicorn 웹 서버를 통해 실행되며 활성 연결을 보여줍니다.

mkdir /opt/openvpn-monitor

가상 환경을 만듭니다 (필수는 아니지만 py 패키지를 사용하는 것이 좋습니다)

cd /opt/openvpn-monitor
virtualenv venv
source venv/bin/activate

필수 패키지 설치

pip install openvpn-monitor gunicorn

모니터 구성 파일 추가

vi /opt/openvpn-monitor/openvpn-monitor.conf

[openvpn-monitor]
site=your-openvpn-site
#logo=logo.jpg
#latitude=40.72
#longitude=-74
maps=True
geoip_data=/var/lib/GeoIP/GeoLite2-City.mmdb
datetime_format=%d/%m/%Y %H:%M:%S

[VPN1]
host=localhost
port=
name=Your VPN Server Name
show_disconnect=False

활성 연결을 표시 할 웹 서버를 시작하십시오.

gunicorn openvpn-monitor -b 0.0.0.0:80 --name openvpn-monitor --daemon

모니터를 중지하려면

pkill gunicorn 

활성 연결을 보려면 VPN 서버의 공용 IP로 이동하십시오.

http://<ip of openvpn server>

포트 80에 적합한 방화벽을 구성하고 신뢰할 수있는 인바운드 IP 만 허용 목록에 추가하십시오

여기에 이미지 설명을 입력하십시오


1

다음 명령으로 sacli를 사용하십시오. 연결된 VPN 클라이언트가 표시됩니다.

/usr/local/openvpn_as/scripts/sacli VPNSummary
{
"n_clients": 15
}

모든 IP를 보려면이 옵션을 사용하십시오. ./sacli VPNStatus

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.