Як переглянути підключених користувачів, щоб відкрити 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
Дякую, але чи є інший спосіб не стежити за змінами файлів? Наприклад, бібліотека, в якій перераховані підключені користувачі?
Хамід ФзМ

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 , у файлі конфігурації сервера).

Щоб отримати точну кількість клієнтів, ви можете зробити:

  • 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
  • шукайте =>> КЛІЄНТ: ENV, n_clients = 19361

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


ваша команда про статус допомогла мені, thx
Мохаммед Нурелдін

4

Ви також можете надіслати сигнал usr2 до процесу openvpn, щоб змусити його записувати статистичну інформацію в syslog. Це безпечно, вам не потрібно перезавантажувати, якщо ви раніше не вмикали інтерфейс управління.


чи можете ви написати команду для цього?
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-revision.11625 або запустивши kill -l.
секретт

Я просто спробував це. Він не дає інформації про кількість підключених клієнтів
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

створити віртуальну програму env (не потрібно, але хороша практика з py-пакетами)

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

встановити необхідні пакети

pip install openvpn-monitor gunicorn

додати конфігураційний файл Monitor

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

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


1

Просто використовуйте саклі з наступною командою. Тут буде вказано список підключених клієнтів 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.