6

Ситуация: у меня дома есть частный VPN-сервер, который открыт для интернета, так что к нему может подключиться определенная группа людей (разрешена только аутентификация по ключевой паре).

Как узнать, какие клиенты в данный момент подключены к моему VPN-серверу?

Я уже пытался пропинговать хосты, но кажется, что некоторые (на самом деле большинство из них) блокируют запросы ICMP, так что это всегда дает сбой. Конечно, я могу каждый раз просматривать /etc/openvpn/openvpn.log но это не очень удобно и определенно не подходит для отчета о состоянии, отправленного мне по электронной почте.

Примечание: я использую OpenVPN 2.2.1 x86_64-linux-gnu .

2 ответа2

4

Вы можете сделать это с помощью небольшого ожидаемого скрипта:

#!/usr/bin/expect
spawn telnet localhost 7505
set timeout 10
expect "OpenVPN Management Interface"
send "status 3\r"
expect "END"
send "exit\r"

И запустить его с (например)
while true; do ./openVPNUserlist.sh |grep -e ^CLIENT_LIST; sleep 1; done

Также в ваш файл server.conf добавьте строку
management localhost 7505

Пакеты, которые вы должны установить:
telnet expect

Интересно, что статус обновляется только через некоторое время (когда клиент отключается, он продолжает отображаться в статусе довольно долгое время ... Пока не нашел способ обойти это :(
Измените время ожидания в вашем server.conf на значения, которые вам нужны:
keepalive 10 60
= пинговать клиента каждые 10 секунд и считать, что он отключен через 1 минуту.
0

Я нашел обширные журналы vpn в этой папке:

ls /var/log/openvpn/

Для меня там было два файла, названных примерно так:

Arbitary-Name-VPN.log
status-Arbitary-Name-VPN.log

В первом файле отображался журнал всех подключений vpn, произошедших с течением времени, а во втором (статус -...) показано, кто сейчас подключен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .