Я разрабатываю веб-сайт для управления пользователями OpenVPN с помощью фреймворка Django. Но мне нужно знать, есть ли способ извлечь активных пользователей из OpenVPN? На моем сервере работает Ubuntu 12.04.
Должен быть журнал статуса, который вы можете посмотреть, чтобы показать вам, например, мой:
cat /etc/openvpn/openvpn-status.log
РЕДАКТИРОВАТЬ:
В качестве альтернативы добавление флага --management IP port [pw-file]
или добавив ту же директиву к вашему server.conf
, например:
management localhost 7505
Это позволит вам подключиться к этому порту через Telnet и предложить вам список команд для запуска:
telnet localhost 7505
help
Завершить @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
У меня такая же потребность, и самым простым решением, которое я обнаружил, было использование упомянутого telnet для подключения к интерфейсу управления (вам нужно будет добавить:управление localhost 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
В моем случае, поскольку у меня очень большое количество клиентов, использование файла журнала определенно не очень практично.
Я управляю серверами OpenVPN нашей компании и вижу активные подключения следующим образом:
добавить в /etc/openvpn/server.conf
management 127.0.0.1 5555
перезапустить сервер openvpn
systemctl restart openvpn@server.service
добавьте пакет Python OpenVPN Monitor - он будет работать через веб-сервер Gunicorn и показывать активные соединения,
mkdir /opt/openvpn-monitor
создать виртуальный env (не обязательно, но хорошая практика с пакетами 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
чтобы увидеть активные соединения, перейдите на публичный IP-адрес вашего VPN-сервера
http://<ip of openvpn server>
убедитесь, что настроили правильный брандмауэр для порта 80, внесите в белый список только доверенные входящие IP-адреса
Вы также можете отправить сигнал usr2 процессу openvpn, чтобы он записывал статистическую информацию в системный журнал. Это безопасно, вам не нужно перезагружаться, если вы раньше не включали интерфейс управления.
Просто используйте sacli со следующей командой. Это будет список подключенных клиентов VPN.
/usr/local/openvpn_as/scripts/sacli VPNSummary
{
"n_clients": 15
}
Чтобы увидеть все IP-адреса, используйте эту опцию. ./sacli VPNStatus