@mukola33

Как можно определить момент, когда клиент подлкючается и отключается от OpenVPN сервера?

Можно ли как-то определить момент, когда клиент подлкючается и отключается от OpenVPN сервера, возможно через API? Если да, то как? Если нет стандартного способа, то какие есть нестандартные?
  • Вопрос задан
  • 473 просмотра
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
Для сервера есть такие параметры:
--client-connect cmd
--client-disconnect cmd
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@younghacker
В конфиг сервера нужно добавить:
script-security 2 # to run scripts
client-disconnect "scripts/on-client-disconnect.sh"

Заготовка скрипта.

/etc/openvpn/script/on-client-disconnect.sh

#!/bin/bash
## Parse variables

if [ ! -z "${time_ascii}" ]; then
  sessionStart=${time_ascii}
else
  sessionStart="UNSET"
fi

if [ ! -z "${trusted_ip}" ]; then
  clientHostAddress=${trusted_ip}
else
  clientHostAddress="UNSET"
fi

if [ ! -z "${username}" ]; then
  clientUID=${username}
else
  clientUID="UNSET"
fi

if [ ! -z "${time_duration}" ]; then
  sessionDuration=${time_duration}
else
  sessionDuration="UNSET"
fi

if [ ! -z "${bytes_sent}" ]; then
  txVolume=${bytes_sent}
else
  txVolume="UNSET"
fi

if [ ! -z "${bytes_received}" ]; then
  rxVolume=${bytes_received}
else
  rxVolume="UNSET"
fi

if [ ! -z "${common_name}" ]; then
  client_cn=${common_name}
else
  client_cn="UNSET"
fi

## Send to syslog
logger -t openvpn -- "Disconnect: CommonName: ${client_cn} Username: ${clientUID} HostIP: ${clientHostAddress} Duration: ${sessionDuration} seconds opened at ${sessionStart} Session Traffic: TX: ${txVolume} bytes RX: ${rxVolume} bytes"


В логе будут такие вот записи, которые Вы можете затем парсить.

Sep 17 17:02:35 gw1-vpn openvpn: Disconnect: CommonName: vpn-client14 Username: UNSET HostIP: 444.555.666.777 Duration: 755 seconds opened at Sat Sep 17 16:50:00 2016 Session Traffic: TX: 20676207 bytes RX: 3596392 bytes

В скрипте Вы всегда можете запустить export и слить его в файл. Увидите там переменные которые установил OpenVPN.

И не забудьте поставить для скрипта атрибут на запуск и добавить в selinux правило открывающее доступ openvpn демону к этому файлу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы