Как просмотреть подключенных пользователей, чтобы открыть сервер vpn?


59

Я занимаюсь разработкой веб-сайта для управления пользователями OpenVPN с помощью инфраструктуры Django. Но мне нужно знать, есть ли способ извлечь активных пользователей из 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-адрес, отличный от localhost, так как это наверняка нанесет ущерб вашей безопасности
c4urself

@ c4urself, мой вывод для .log: bit.ly/1ORnsYp Где я могу увидеть подключенных пользователей? Можно ли увидеть назначенные им ips через этот .log?
Максим В. Павлов

@ MaximV.Pavlov похоже, никто не связан в вашем случае. Да, IP-адреса отображаются.
c4urself

2
/etc/openvpn/openvpn-status.logу меня не работало на Debian, оно никогда не менялось, а /var/run/openvpn/server.statusработало отлично.
Нельсон

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

Спасибо за улучшение. Мой ответ был правильным, но ему не хватает примера и объяснений. :)
секрет

7

Я сам получил такую ​​же потребность, и самым простым решением, которое я обнаружил, было использование упомянутого telnet для подключения к интерфейсу управления (вам нужно будет добавить: localhost 6666 управления , в файле конфигурации сервера).

Чтобы получить точное количество клиентов вы можете сделать:

  • телнет 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
  • искать =>> КЛИЕНТ: ENV, n_clients = 19361

В моем случае, поскольку у меня очень много клиентов, использование файла журнала определенно не очень практично.


Твоя команда статуса помогла мне, спасибо
Мухаммед Нурельдин

4

Вы также можете отправить сигнал usr2 процессу openvpn, чтобы он записал статистическую информацию в системный журнал. Это безопасно, вам не нужно перезагружаться, если вы ранее не включали интерфейс управления.


Вы можете написать команду для этого?
Shayan_Aryan

1
@MichaelC написал: killall -USR2 openvpn. Тогда смотрите журналы. Это может быть /var/log/syslogили в /var/log/messagesзависимости от дистрибутива.
Секрет

но это не убивает openvpn?
Shayan_Aryan

killКоманда может отправлять разные сигналы, USR2 не убьет, это всего лишь сигнал. Вы можете увидеть список здесь: linux.org/threads/kill-signals-and-commands-revised.11625 или запустив kill -l.
Секретт

Я только что попробовал это. Он не дает информации о количестве подключенных клиентов
Shayan_Aryan

4

Я управляю нашими серверами 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 

чтобы увидеть активные подключения, перейдите на общедоступный IP-адрес вашего VPN-сервера

http://<ip of openvpn server>

убедитесь, что настроен правильный брандмауэр для порта 80, белый список только доверенных входящих IP-адресов

введите описание изображения здесь


1

Просто используйте sacli со следующей командой. Это будет список подключенных клиентов VPN.

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

Чтобы увидеть все IP-адреса, используйте эту опцию. ./sacli VPNStatus

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.